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

 
Artyom Trishkin:

Pas d'erreur : une boucle avec i global (bleu), et une autre boucle avec i local (rouge)

Le compilateur se plaindra
 
pako:
Le compilateur va jurer.
Oui, il le fera. Mais il répond mieux que jamais à la question ;)
 
Artyom Trishkin:

Pas d'erreur : une boucle avec i global (bleu), et une autre boucle avec i local (rouge)

Même moi, je comprends... Le i (bleu) est l'appartement et le i (rouge) est la toilette. :))))

 
Bonjour, Pouvez-vous me conseiller sur la façon d'exécuter ZigZag dans EA.EA en général fonctionne, mais a laissé des signaux beaucoup, collé à elle ZZ, a cessé de fonctionner. Impossible d'ouvrir le fichier ZigZag sur le test, pas de débogage du tout, sur la démo n'a pas acheté un seul ordre, qu'y a-t-il à faire ?
xtern string   ZigZag                       = "Данные ZigZag";
extern int      InpDepth                      = 20;
extern int      InpDeviation                  = 5;
extern int      InpBackstep                   = 3;

double MacdCurrent,SignalCurrent,SignalMAPrevious,SignalMAThis,
       PriceCurrentOpen,PriceCurrentClose,SignalParabolic,ZZThis,ZZPrevious;
int    ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
 if (Digits==3||Digits==5)
 {
  slippage*=10;
 }   
 return(INIT_SUCCEEDED);
} 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
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);
  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
   if (CountTrades()==0) CheckForOpen();
 }
}  
void CheckForOpen()
 
Alexey Viktorov:

Même moi, je comprends... Le i (bleu) est l'appartement et le i (rouge) est la toilette. :))))

Vous devriez écrire un livre de vulgarisation scientifique, vous avez manifestement un talent pour expliquer les choses simplement ;))

Avec une déclaration

#property strict

donnera juste un avertissement que le i local prévaut sur le i global.

la déclaration de 'i' cache la déclaration globale à la ligne 20 test.mq4 25 13

 
Alexey Volchanskiy:

Vous devriez écrire un livre de vulgarisation scientifique, vous avez manifestement un talent pour expliquer les choses simplement ;))

Avec une déclaration

donnera juste un avertissement que le i local prévaut sur le i global.

la déclaration de 'i' cache la déclaration globale à la ligne 20 test.mq4 25 13

Mes lecteurs ont un talent certain pour les explications aussi simples. Je n'ai pas de tels talents. Un homme n'est pas un écrivain, c'est un lecteur...
 
Alexey Viktorov:
C'est ce qu'Artyom expliquait. Je n'ai pas de tels talents... Vous n'êtes pas un écrivain, vous êtes un lecteur...
Eh bien... nous sommes des cottonmouths sibériens ;)
 
Nickolay72:
Salut, pouvez-vous me dire comment exécuter ZigZag dans l'EA, en général, le travail, mais les signaux de gauche beaucoup, collé à elle ZZ, a cessé de travailler. Impossible d'ouvrir le fichier ZigZag sur le test, le débogage à tous ne va pas, sur la démo n'a pas acheté un seul ordre. qu'y a-t-il à faire ?

Dans les indicateurs personnalisés, il y a un fichierZigZag, si c'est le cas, est-il appelé exactement de la même manière que lorsque vous y accédez depuis l'EA ?

  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
 
Vladimir Zubov:

Si oui, le fichierZigZag se trouve-t-il dans les indicateurs personnalisés, est-il appelé comme il l'est lorsqu'on y accède depuis le conseiller expert ?

Vous devez prendre le nom du fichier entre guillemets sans l'extension. C'est étrange, ça compile bien. Quelle était la variable originale deZigZag?

ZZThis=iCustom(NULL,0,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);
 

Comment égaliser ou compenser les baisses de tension d'un simple moins dans un immeuble de cinq étages ?

il y a une fonction mais elle ne fonctionne pas

//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
double Volume(void)
  {
   double lot=Lots;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      lot=Lots;
     }
//--- Профит сделки
   double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- Лот сделки
   double lastlot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
//--- Профит отрицательный
   if(profit<0.0)
     {
      //--- Увеличиваем следующий лот
      lot=lastlot*KLot;
      Print(" Cделка закрыта по стопу! ");
     }
//--- Приводим лот к минимальному
   double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<minvol)
      lot=minvol;
//--- Если лот больше максимального то начальный лот
   if(lot>MaxLot)
      lot=Lots;
//--- Возвращаем торговый объем
   return(lot);
  }
//+------------------------------------------------------------------+
//| Смотрим тип последней закрытой сделки                            |
//+------------------------------------------------------------------+
int LastDealType(void)
  {
   int type=0;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
//--- Нет сделок в истории
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      type=0;
     }
   if(ticket>0)
     {
      //--- Последняя сделка BUY 
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY)
        {
         type=2;
        }
      //--- Последняя сделка SELL
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL)
        {
         type=1;
        }
     }
//---
   return(type);
  }