Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 498

 
Artyom Trishkin:

No es un error: un bucle con i global (azul), y otro bucle con i local (rojo)

El compilador se quejará
 
pako:
El compilador jurará.
Sí, lo hará. Pero se ajusta a la pregunta mejor que nunca ;)
 
Artyom Trishkin:

No es un error: un bucle con i global (azul), y otro bucle con i local (rojo)

Incluso yo lo entiendo... La i (azul) es el piso y la i (roja) es el baño. :))))

 
Buenos días.Puede aconsejar cómo ejecutar ZigZag en EA.EA en general de trabajo, pero las señales de la izquierda mucho, pegado a ella ZZ, dejó de funcionar. No se puede abrir el archivo ZigZag en la prueba, sin depuración en absoluto, en la demo no comprar una sola orden, ¿qué hay que hacer?
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:

Hasta yo me lo imaginé... La i (azul) es el piso y la i (roja) es el baño. :))))

Deberías escribir un libro de divulgación científica, es evidente que tienes talento para explicar las cosas de forma sencilla ))

Con un declarado

#property strict

sólo dará un aviso de que la i local anula la global.

la declaración de 'i' oculta la declaración global en la línea 20 test.mq4 25 13

 
Alexey Volchanskiy:

Deberías escribir un libro de divulgación científica, es evidente que tienes talento para explicar las cosas de forma sencilla ))

Con un declarado

sólo dará un aviso de que la i local anula la global.

la declaración de 'i' oculta la declaración global en la línea 20 test.mq4 25 13

Mis lectores tienen un claro talento para estas explicaciones tan sencillas. No tengo esos talentos. Un hombre no es un escritor, es un lector...
 
Alexey Viktorov:
Eso es lo que Artyom estaba explicando. No tengo esos talentos... No eres un escritor, eres un lector...
Bueno... somos algodoneros siberianos ;)
 
Nickolay72:
Hola, me puedes decir cómo ejecutar ZigZag en el EA, en general, trabajando, pero las señales de la izquierda mucho, pegado a ella ZZ, dejó de funcionar. No se puede abrir el archivo ZigZag en la prueba, la depuración en absoluto no va, en la demo no comprar una sola orden. lo que hay que hacer?

En los indicadores personalizados hay un archivoZigZag, si es así, ¿se llama exactamente allí como cuando se accede a él desde el EA?

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

En caso afirmativo, ¿el archivoZigZag se encuentra en indicadores personalizados, se llama tal cual al acceder a él desde el Asesor Experto?

Debe tomar el nombre del archivo entre comillas sin la extensión. Es extraño, se compila bien. ¿Cuál era la variable original deZigZag?

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

Cómo nivelar o compensar los descensos de un punto negativo en un cinco

hay una función pero no funciona

//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
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);
  }