Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 508

 
Maks_Knyazev:
Здравствуйте. В справочнике mql4 сказано что обработка событий Timer и ChartEvent в тестере стратегий не поддерживается. Соответственно, кнопки (OBJ_BUTTON) не работают (точнее, ничего не происходит при нажатии). Но на триал версию этого эксперта это правило, почему-то, не распространяется. Подскажите пожалуйста, почему так происходит и как заставить работать кнопки в тестере?

Да, не работают. В тестере надо кнопки вручную проверять, вот так

CButton *cbSell, *cbBuy;

//проверяем из OnTick в тестере 
void CheckButtons()
{
    if(cbSell.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_SELL, 0.1, Bid, 50, 0, 0, "", 1, 0, clrDeepSkyBlue);
        cbSell.Pressed(false);
    }    
    if(cbBuy.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_BUY, 0.1, Bid, 50, 0, 0, "", 1, 0, clrRed);
        cbBuy.Pressed(false);
    }
    ChartRedraw();
}

 
Alexey Volchanskiy:

Да, не работают. В тестере надо кнопки вручную проверять, вот так

Спасибо большое! А есть какая-нибудь литература, где описываются подобные моменты?
 

flint17480, 2016.02.01 08:58

Здравствуйте. Не закрылся профит по свечке минутной 09-47 по паре EURUSD  профит стоял на 1.08428  свеча уходила до 1.08420.  Подскажите что делать? Заранее спасибо.
 

flint17480, 2016.02.01 08:58

Здравствуйте. Не закрылся профит по свечке минутной 09-47 по паре EURUSD  профит стоял на 1.08428  свеча уходила до 1.08420.  Подскажите что делать? Заранее спасибо.

Нужно больше информации:

  1. Тип открытой позиции: SELL или BUY?
  2. Вы знаете, что цена в терминале рисуется по BID? 

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Здравствуйте. Не закрылся профит по свечке минутной 09-47 по паре EURUSD  профит стоял на 1.08428  свеча уходила до 1.08420.  Подскажите что делать? Заранее спасибо.

Обращать внимание на спред, потому что короткие позы закрываются по Аsk, а свечи рисуются по Bid. Спред более 8 пунктов для пятизнака - нормальное явление для большинства валютных пар.

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Здравствуйте. Не закрылся профит по свечке минутной 09-47 по паре EURUSD  профит стоял на 1.08428  свеча уходила до 1.08420.  Подскажите что делать? Заранее спасибо.
Тиковые котировки писать. Кинуть мою писалку? Хотя их в кодобазе навалом. Про спред верно сказали.
 
Добрый день всем) поделитесь кодом на передвижной стоп лосс - чтоб за ценой ехал ))) Заранее спасибо 
[Удален]  
Tema97:
Добрый день всем) поделитесь кодом на передвижной стоп лосс - чтоб за ценой ехал ))) Заранее спасибо 
А чем вам трейлинг стоп не угодил? Он уже встроен в терминал 
 
Aleksey Stukalov:
А чем вам трейлинг стоп не угодил? Он уже встроен в терминал 
Попользуйтесь и поймете
 

Люди добрые помогите с компиляцией советника очень прошу, в программировании не силен.

Вот такие ошибки выдает при компиляции  'delete' - name expected

красным выделена ошибка в коде

void delete(int type){

   if(OrdersTotal()>0){

      for(i=OrdersTotal()-1;i>=0;i--){

         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         if(type!=6 && type!=7 && type!=8)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type)OrderDelete(OrderTicket());

         if(type==6)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)OrderDelete(OrderTicket());

         if(type==7)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)OrderDelete(OrderTicket());

         if(type==8)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)OrderDelete(OrderTicket());

      }

   }


Вот еще ошибка '(' - object pointer expected

   if(oppositedelete){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}

И вот здесь  '}' - not all control paths return a value

int countglobal(){

   int cnt=0;

   if(OrdersTotal()>0){

      for(i=OrdersTotal()-1;i>=0;i--){

         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         cnt++;

      }

      return(cnt);

   }

}