Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 498

 
Artyom Trishkin:

Non un errore: un ciclo con i globale (blu), e un altro ciclo con i locale (rosso)

Il compilatore si lamenterà
 
pako:
Il compilatore giurerà.
Sì, lo farà. Ma si adatta alla domanda più che mai ;)
 
Artyom Trishkin:

Non un errore: un ciclo con i globale (blu), e un altro ciclo con i locale (rosso)

Persino io lo capisco... La i (blu) è l'appartamento e la i (rossa) è la toilette. :))))

 
Buon giorno.potete consigliare come eseguire ZigZag in EA.EA in generale funziona, ma ha lasciato i segnali molto, incollato ad esso ZZ, smesso di funzionare. Impossibile aprire il file ZigZag sul test, nessun debug a tutti, sulla demo non ha comprato un solo ordine, cosa c'è da fare?
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:

Persino io lo capisco... La i (blu) è l'appartamento e la i (rossa) è la toilette. :))))

Dovresti scrivere un libro di scienza popolare, ovviamente hai un talento per spiegare le cose in modo semplice ))

Con un dichiarato

#property strict

darà solo un avvertimento che l'i locale sovrascrive quello globale.

la dichiarazione di 'i' nasconde la dichiarazione globale alla linea 20 test.mq4 25 13

 
Alexey Volchanskiy:

Dovresti scrivere un libro di scienza popolare, ovviamente hai un talento per spiegare le cose in modo semplice ))

Con un dichiarato

darà solo un avvertimento che l'i locale sovrascrive quello globale.

la dichiarazione di 'i' nasconde la dichiarazione globale alla linea 20 test.mq4 25 13

I miei lettori hanno un chiaro talento per le spiegazioni così semplici. Non ho questi talenti. Un uomo non è uno scrittore, è un lettore...
 
Alexey Viktorov:
Questo è quello che Artem stava spiegando. Non ho questi talenti... Non sei uno scrittore, sei un lettore...
Bene... siamo cottonmouth siberiani ;)
 
Nickolay72:
Ciao, mi puoi dire come eseguire ZigZag in EA, in generale, lavorando, ma i segnali di sinistra molto, incollato ad esso ZZ, smesso di funzionare. Impossibile aprire il file ZigZag sul test, il debug a tutti non va, sulla demo non ha comprato un solo ordine. cosa c'è da fare?

Negli indicatori personalizzati c'è un fileZigZag, se è così, si chiama esattamente lì come quando si accede dall'EA?

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

Se sì, il fileZigZag si trova negli indicatori personalizzati, è chiamato come quando si accede da Expert Advisor?

Dovresti prendere il nome del file tra virgolette senza l'estensione. È strano, si compila bene. Qual era la variabile originale diZigZag?

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

Come livellare o compensare i cali di un singolo meno in un cinque

c'è una funzione ma non funziona

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