Questions des débutants MQL5 MT5 MetaTrader 5 - page 508

 
J'ai attaché une martingale. Au milieu de la journée, j'ai connecté l'Expert Advisor sous cette forme (il avait déjà fait quelques transactions du même EA, mais dans un état inachevé avant), - l'EA a fonctionné correctement, la martingale a fonctionné, a pris des pertes pour une demi-journée dans le plus. Le lendemain, j'ai allumé la plate-forme dans la matinée, est allé au travail dans la soirée, pas de deal. Martingale augmente le lot pour une transaction perdante, sinon, le lot standard.
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);
  }
//+------------------------------------------------------------------+
 
Bonjour. Le manuel mql4 indique que la gestion des événements Timer et ChartEvent n'est pas prise en charge par le testeur de stratégie. En conséquence, les boutons (OBJ_BUTTON) ne fonctionnent pas (plus précisément, rien ne se passe lorsque vous cliquez). La version d'essai de cet EA, cependant, pour une raison quelconque, ne supporte pas cette règle. Veuillez me dire pourquoi cela se produit et comment faire fonctionner les boutons du testeur.
 
Maks_Knyazev:
Bonjour. Le manuel mql4 indique que le traitement des événements Timer et ChartEvent n'est pas pris en charge par le testeur de stratégie. En conséquence, les boutons (OBJ_BUTTON) ne fonctionnent pas (plus précisément, rien ne se passe lorsque vous cliquez). La version d'essai de cet EA, cependant, pour une raison quelconque, ne supporte pas cette règle. Veuillez me dire pourquoi cela se produit et comment faire fonctionner les boutons du testeur.

Oui, ils ne fonctionnent pas. Vous devez vérifier les boutons manuellement dans le testeur, comme ceci

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:

Oui, ils ne fonctionnent pas. Dans le testeur, vous devez vérifier les boutons manuellement, comme ceci

Merci beaucoup ! Existe-t-il une littérature qui décrit ce genre de choses ?
 

flint17480, 2016.02.01 08:58

Bonjour. N'a pas fermé le profit sur la bougie 09-47 minutes sur EURUSD le profit était à 1.08428 la bougie est allée à 1.08420. Que faire ? Merci d'avance.
 
<br / translate="no">

flint17480, 2016.02.01 08:58

Bonjour. J'ai perdu mon profit sur EURUSD à 09-47, il était à 1.08428 et est monté à 1.08420. Pouvez-vous me dire ce qu'il faut faire ? Merci d'avance.

Vous avez besoin de plus d'informations :

  1. Type de position ouverte : VENTE ou ACHAT ?
  2. Saviez-vous que le prix dans le terminal est tiré au sort par BID ?

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Bonjour. N'a pas fermé le profit sur la bougie 09-47 minutes sur EURUSD le profit était à 1.08428 la bougie est allée à 1.08420. Que faire ? Merci d'avance.

Vous devez prêter attention à l'écart, car les positions courtes sont fermées sur Asc, tandis que le chandelier est dessiné sur Bid. Des écarts de plus de 8 pips pour un chiffre à cinq chiffres sont normaux pour la plupart des paires de devises.

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Bonjour. N'a pas fermé le profit sur la bougie 09-47 minutes sur EURUSD le profit était à 1.08428 la bougie est allée à 1.08420. Que faire ? Merci d'avance.
Cochez les citations à écrire. Dois-je vous envoyer mon devis ? Bien qu'il y en ait beaucoup dans les kodobaz. Tu avais raison à propos de la répartition.
 
Bonjour à tous) Partagez le code pour un stop loss mobile - pour conduire le prix )))) Merci d'avance
 
Tema97:
Bonjour à tous) Partagez le code pour un stop loss mobile - pour conduire le prix )))) Merci d'avance.
Qu'est-ce que vous n'aimez pas dans le trailing stop ? Il est déjà intégré dans le terminal