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

 
Господа программисты.В чем косяк???Привязал наконец то мартингейла.Посреди дня советника в таком виде подключил(уже прошло несколько сделок этого же советника,но в недоделанном до этого состояния виде),-советник работал нормально,мартингейл работал,вывел убытки за полдня в плюс.На следующий день с утра включил терминал,ушел на работу,вечером-ни одной сделки.Мартингейл увеличивает лот при убыточной сделке,в остальных случаях-стандартный лот.Или я что-то не понимаю???
void OnTick()
  {
   datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
   datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
   datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
   if(CurrTime<EaStartTime || CurrTime>=EaEndTime)
      return;                                       // если еще не время торговать - выход
     {
      MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_MAIN,0);
      SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_SIGNAL,0);
      SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,1);
      SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,0);
      SignalParabolic=iSAR(NULL,0,InpSARStep,InpSARMaximum,0);
      SignalStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalCCIPrevious=iCCI(NULL,0,InpCCIPeriod,0,1);
      SignalCCIThis=iCCI(NULL,0,InpCCIPeriod,0,0);
      if(CountTrades()==0) CheckForOpen();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
 {if(ModLots())
  {
      //-----Ставим ордер на покупку.
    if(SignalCurrent<MacdCurrent && SignalMAPrevious<SignalMAThis && 
      Ask>SignalParabolic && SignalStochastic_5<MainStochastic_5&&SignalStochastic<MainStochastic&&
      SignalCCIPrevious<SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_BUY,lot,Ask,slippage,0,0,exptime,magic,0,Blue);
       if(ticket>0)
          return;
      }
//-----Ставим ордер на продажу.
    if(SignalCurrent>MacdCurrent && SignalMAPrevious>SignalMAThis && 
      Bid<SignalParabolic && SignalStochastic_5>MainStochastic_5&&SignalStochastic>MainStochastic&&
      SignalCCIPrevious>SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_SELL,lot,Bid,slippage,0,0,exptime,magic,0,Red);
       if(ticket>0)
          return;
      }
  }
 }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
bool ModLots()
  {
    for(int i=OrdersHistoryTotal()-1;i>=0;i--)
      {
       if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
       if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
         {
          if(OrderProfit()<0)
            {lot=OrderLots()*LotMarti;  break;}
          else { lot=Lots; break;}
         }
      }
   return(true);
  }
//+------------------------------------------------------------------+
 
Здравствуйте. В справочнике mql4 сказано что обработка событий Timer и ChartEvent в тестере стратегий не поддерживается. Соответственно, кнопки (OBJ_BUTTON) не работают (точнее, ничего не происходит при нажатии). Но на триал версию этого эксперта это правило, почему-то, не распространяется. Подскажите пожалуйста, почему так происходит и как заставить работать кнопки в тестере?
 
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:
Добрый день всем) поделитесь кодом на передвижной стоп лосс - чтоб за ценой ехал ))) Заранее спасибо 
А чем вам трейлинг стоп не угодил? Он уже встроен в терминал 
Причина обращения: