Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 508

 
Anexei um martingale. A meio do dia, anexei o consultor especializado nesta forma (já tinha feito alguns negócios da mesma EA, mas num estado inacabado antes), - a EA funcionou bem, o martingale funcionou, tirou perdas durante meio dia no plus. No dia seguinte, liguei a plataforma de manhã, fui trabalhar, à noite - um negócio. O martingale aumenta o lote para um negócio perdido, caso contrário - o lote padrão.
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);
  }
//+------------------------------------------------------------------+
 
Olá. O manual mql4 diz que o tratamento de eventos de Temporizador e ChartEvent não é apoiado no testador de estratégias. Consequentemente, os botões (OBJ_BUTTON) não funcionam (mais precisamente, nada acontece quando se clica). Contudo, a versão experimental desta EA, por alguma razão, não apoia esta regra. Por favor, diga-me porque é que isto está a acontecer e como fazer funcionar os botões no testador?
 
Maks_Knyazev:
Olá. O manual mql4 diz que o processamento de eventos do Temporizador e do ChartEvent não é apoiado no testador de estratégias. Consequentemente, os botões (OBJ_BUTTON) não funcionam (mais precisamente, nada acontece quando se clica). Contudo, a versão experimental desta EA, por alguma razão, não apoia esta regra. Por favor, diga-me porque é que isto está a acontecer e como fazer funcionar os botões no testador?

Sim, eles não funcionam. Tem de verificar os botões manualmente no testador, como este

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:

Sim, eles não funcionam. No verificador, é necessário verificar os botões manualmente, como este

Muito obrigado! Existe alguma literatura que descreva este tipo de coisas?
 

flint17480, 2016.02.01 08:58

Olá. Não fechou o lucro na vela de 09-47 minutos no EURUSD o lucro foi de 1,08428 a vela foi para 1,08420. O que fazer? Obrigado de antemão.
 
<br / translate="no">

flint17480, 2016.02.01 08:58

Olá. O meu lucro no EURUSD foi de 1,08428 e subiu para 1,08420. Pode dizer-me o que devo fazer? Obrigado de antemão.

Precisa de mais informações:

  1. Tipo de posição aberta: VENDER ou COMPRAR?
  2. Sabia que o preço no terminal é desenhado pelo BID?

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Olá. Não fechou o lucro na vela de 09-47 minutos no EURUSD o lucro foi de 1,08428 a vela foi para 1,08420. O que fazer? Obrigado de antemão.

Deve prestar atenção à propagação, porque as posições curtas são fechadas em Asc, enquanto o candelabro é desenhado em Bid. Espalhamento acima de 8 pips para cinco dígitos é normal para a maioria dos pares de moedas.

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Olá. Não fechou o lucro na vela de 09-47 minutos no EURUSD o lucro foi de 1,08428 a vela foi para 1,08420. O que fazer? Obrigado de antemão.
Assinale as citações para escrever. Devo enviar-lhe a minha citação? Embora haja muitos deles em kodobaz. Tinha razão sobre a propagação.
 
Boa tarde a todos) Partilhar o código para um stop loss móvel - para conduzir o preço )))) Obrigado de antemão
 
Tema97:
Boa tarde a todos) Partilhar o código para um stop loss móvel - para conduzir o preço )))) Obrigado de antemão.
O que é que não lhe agrada na paragem de reboque? Já está integrado no terminal