Форум трейдеров » Торговые роботы, советники, индикаторы » Язык MQL4 для "чайников"
+ Подписаться
Страница 3 из 16 ПерваяПервая 1234513 ... ПоследняяПоследняя
  1. 5,972
    Комментарии
    10
    Темы
    5318
    Репутация Pro
    Аватар для leonid553  
    Старожил

    6 Медалей
    Добрый день. Хотелось бы решить проблему с автоматической торговлей. В терминале мт4 VHC. На живом примере. По вопросу последовательного выставления стопов после открытия ордера.
    Ниже - простейший эксперт по индикатору АО (Вход только для покупки - пересечение индикатором нулевой линии). Согласно Вашим рекомендациям предусмотрел модификацию после открытия ордера.
    При этом, если в OrderModify присутствуют одновременно стоплосс и тейкпрофит , то не выставляется ни тот, ни другой. Предусмотрел сначала стоплосс :


    Код:
    #property copyright "leonid553 "
    
    //---- input parameters---------
    //ДЛЯ ДЛИННЫХ ПОЗИЦИЙ----------------
    extern int       TakeProfit = 82;
    extern int       StopLoss   = 62;
    extern double Lots = 0.1;
    extern int    Magic = 888;
    //------------------------------
    int  total;
    int ticket;
    int ExpertBars;
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {ExpertBars = Bars;
       return(0);  }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {  return(0);  }
    int start()  {
    
    bool isNewBar=false;
    if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
    if (isNewBar) { //если появился новый бар  
    total=OrdersTotal();   if(total<1) { 
    //----------------- СИГНАЛ на покупку(-------------------------
    if    (  iAO(NULL,0,1)<0 && iAO(NULL, 0, 0)>0 )        
           {
     ticket=OrderSend(Symbol(),0,Lots,Ask,3,0,0,NULL, Magic,0,CLR_NONE);                
    if(ticket<0){Print("Ошибка открытия BUY #",GetLastError());return(0);} 
    Sleep(1000);
    OrderModify(ticket,OrderOpenPrice(),Bid-StopLoss*Point,0,0,CLR_NONE);
    return(0);
    }        
    //-----------------------------------------------------------------------   
     } //total
     }//isNewBar
       return(0);
      }
    В таком виде всё работает! И ордер по сигналу индикатора выставляется и спустя неск. секунд появляется стоплосс.
    Но когда я добавляю модификацию для установки тейкпрофита (А он размером даже больше чем стлосс), то получаю :
    '133014': modification of order #2905303 buy 0.10 FDAX at 8143.5 sl: 0.0 tp: 0.0 -> sl: 8137.3 tp: 0.0 failed [Invalid S/L or T/P]
    Добавляю же вот так:
    Код:
    //----------------- СИГНАЛ на покупку(-------------------------
    if    (  iAO(NULL,0,1)<0 && iAO(NULL, 0, 0)>0 )        
           {
     ticket=OrderSend(Symbol(),0,Lots,Ask,3,0,0,NULL, Magic,0,CLR_NONE);                
    if(ticket<0){Print("Ошибка открытия BUY #",GetLastError());return(0);} 
    Sleep(1000);
    OrderModify(ticket,OrderOpenPrice(),Bid-StopLoss*Point,0,0,CLR_NONE);
    return(0);
    Sleep(1000);
    OrderModify(ticket,OrderOpenPrice(),0,Ask+TakeProfit*Point,0,CLR_NONE);
    return(0);
    }
    В чем причина ошибки? Уважаемые специалисты, пож. подскажите...
  2. 144
    Комментарии
    7
    Темы
    149
    Репутация Pro
     
    В начале пути

    3 Медалей
    Разделите процедуру открытия ордера и его модификации. Легче потом ошибки отслеживать будет.
    Это раз. Во вторых отслеживайте соответсвие типов данных (double, int).
    Обычно я применяю NormalizeDouble.
    В третьих, в модификации можно использовать одновременно модификацию и тейка и стоп-лосса.

    Если не поможет, пишите разберемся.
  3. 5,972
    Комментарии
    10
    Темы
    5318
    Репутация Pro
    Аватар для leonid553  
    Старожил

    6 Медалей
    Я вас правильно понял? Разделить процедуру открытия и модификации примерно такой конструкцией? -
    PHP код:
    for(int i 0totali++)   {
       
    OrderSelect(iSELECT_BY_POSMODE_TRADES); 
           if(
    OrderSymbol() == Symbol()   {
              if( 
    OrderMagicNumber() == MagicNumber)   {       
                  if(
    OrderType() == OP_BUY)      { 
  4. 139
    Комментарии
    0
    Темы
    139
    Репутация Pro
    Аватар для Татьяна1  
    В начале пути

    2 Медалей
    В метаэдиторе не могу читать файлы из раздела "Библиотека" - буквы просто огромные, на экране умещается 1/4 строки из документа. Есть ли средство от такой напасти? Можно ли уменьшить размер документа?
  5. 2,008
    Комментарии
    4
    Темы
    2040
    Репутация Pro
     
    Мастер форумных наук

    3 Медалей
    Цитата Сообщение от leonid553 Посмотреть сообщение
    Но когда я добавляю модификацию для установки тейкпрофита (А он размером даже больше чем стлосс), то получаю :
    '133014': modification of order #2905303 buy 0.10 FDAX at 8143.5 sl: 0.0 tp: 0.0 -> sl: 8137.3 tp: 0.0 failed [Invalid S/L or T/P]
    В чем причина ошибки? Уважаемые специалисты, пож. подскажите...
    8137.3 не бывает. Может быть, к примеру 8137.5
  6. 1,294
    Комментарии
    16
    Темы
    1297
    Репутация Pro
     
    Мастер форумных наук

    5 Медалей
    Цитата Сообщение от Дмитрий2 Посмотреть сообщение
    8137.3 не бывает. Может быть, к примеру 8137.5
    при тесте стратегии надо в журнале посмотреть..Возможно из-за этого..
    Я не знаю как в советнике, но вручную не даёт устанавливать стоп, если не кратен размеру тика..Эт точно..Я с просонья раз в ТП звонил..Чё за фигня!!! Стоп не могу переместить!!! Оказалось что-то типа вместо **,25 поставил **,35 :)
  7. 641
    Комментарии
    6
    Темы
    644
    Репутация Pro
     
    В начале пути

    3 Медалей
    Цитата Сообщение от Татьяна1 Посмотреть сообщение
    В метаэдиторе не могу читать файлы из раздела "Библиотека" - буквы просто огромные, на экране умещается 1/4 строки из документа. Есть ли средство от такой напасти? Можно ли уменьшить размер документа?
    кликните мышкой в это окно(просто в область окна), а потом нажмите и удерживайте Ctrl и при этом покрутите колесо мышки, размер шрифта будет меняться.
  8. 139
    Комментарии
    0
    Темы
    139
    Репутация Pro
    Аватар для Татьяна1  
    В начале пути

    2 Медалей
    Цитата Сообщение от Yur Посмотреть сообщение
    кликните мышкой в это окно(просто в область окна), а потом нажмите и удерживайте Ctrl и при этом покрутите колесо мышки, размер шрифта будет меняться.
    Спасибо. Работает! :greedy:
  9. 2,151
    Комментарии
    6
    Темы
    2187
    Репутация Pro
    Аватар для SPace  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от Дмитрий2 Посмотреть сообщение
    8137.3 не бывает. Может быть, к примеру 8137.5
    На самом деле - БЫВАЕТ! И у leonid553 проблема может быть как раз из-зи этого глюка. Ведь значения котировок должны оканчиваться либо ****,0, либо ****,5. Но у меня у самого пару-тройку раз была такая байда, что в ордере выпрыгивали значения типа того же самого 8137.3, где дробная часть почему-то "кривая". И при установке стопа или тейка от такой цены терминал выдаст ошибку. Видимо, надо вводить проверку на 0 и 5 в десятичной части котировок, и править их до ближайшего "штатного" значения. :smartass:
  10. 5,972
    Комментарии
    10
    Темы
    5318
    Репутация Pro
    Аватар для leonid553  
    Старожил

    6 Медалей
    Да, пожалуй. Значения должны быть кратны пяти!

Вверх
РегистрацияX

чтобы писать, читать, комментировать