Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 869

 
Sergey Savinkin:

Funziona. ))

E che motore di forum intelligente... Tu stesso hai fornito il link dove ci sono le istruzioni complete su come incollare il codice.

 
Alexey Viktorov:

E davvero... Perché sforzarsi di essere migliori...

Contate quanto codice extra viene scritto in queste funzioni e quanto codice scrivete voi chiamando queste funzioni auto-scritte.

Mi sforzo di essere migliore nel trading, e ho bisogno della codifica per muovermi verso questo obiettivo.

Se la differenza sarà di 0,1 secondi alla fine dell'anno, ha senso preoccuparsi?

Puoi mostrarmi come fare questo codice senza funzioni e velocizzarlo?

 
Aleksey Vyazmikin:

Mi sto sforzando di essere migliore nel trading, e ho bisogno della codifica per muovermi verso questo obiettivo.

Se la differenza sarà di 0,1 secondi alla fine dell'anno, ha senso preoccuparsi?

Puoi mostrarmi come fare questo codice senza funzioni e velocizzarlo?

È così che avete scritto tutto. Solo che è tutto avvolto sotto mql4. Non si può fare a meno di un tale involucro?

E questo è

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin, 2018.05.24 12:30

Tutto raccolto da pezzi e bocconi, ma il corpo principale di funzioni simili che ho preso originariamente da qui, davvero non so cosa ne è rimasto.

ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);

      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);
      default: return(PERIOD_CURRENT);
     }
  }

E' semplicemente terribile.... Di cosa si tratta?

Non è proprio un corso. Mi dispiace, niente più critiche.

 
Alexey Viktorov:

È così che avete scritto tutto. Solo che è tutto avvolto in mql4. Non si può fare a meno di un tale involucro?

E questo...


è semplicemente orribile... Di cosa si tratta?

E in generale non sono i corsi qui. Mi dispiace, niente più critiche.

Beh, visto che non c'è il desiderio di mostrare come fare meglio per i principianti...

Non vedo l'orrore, in MT4 il periodo di tempo è spesso designato da cifre divisibili per minuti, cosa che non è logico fare in MT5, ma permette un più facile porting del codice.

 
Aleksey Vyazmikin:

Beh, visto che non c'è il desiderio di mostrare il modo migliore per i principianti...

Non vedo l'orrore, in MT4 il periodo di tempo è spesso denotato da numeri divisibili per minuti, che non è logico fare già in MT5, ma rende più facile il porting del codice.

Perché tradurlo in numero di minuti e poi rimetterlo?

16408 è più comprensibile di PERIOD_D1 o 49153 è più comprensibile di PERIOD_MN1?

Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql4-программа. Перечисление ENUM_TIMEFRAMES содержит значения стандартных таймфреймов, онлайновые графики финансовых...
 

Ciao, nell'EA voglio conoscere il valore attuale di ATR dal periodo alto del grafico. Un valore intero.

#include <Trade\SymbolInfo.mqh> 
CSymbolInfo    m_symbol;
//===
input int             ATRper=7;         //ATR Period
input ENUM_TIMEFRAMES ATRtimeframe=PERIOD_CURRENT;//«Time_Frame_ ATR»
int            handle_iCustom;
double atr_tp;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   handle_iCustom=iATR(m_symbol.Name(),ATRtimeframe,ATRper);
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int Bar_=0;
   atr_tp= iCustomGet(handle_iCustom  ,0,Bar_);
   atr_tp=NormalizeDouble(atr_tp,Digits())/_Point;
   atr_tp=(int)atr_tp;
   Comment("atr_",atr_tp);
  }
//+------------------------------------------------------------------+
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }
///

Dov'è l'errore?

 
lil_lil:

Ciao, nell'EA voglio conoscere il valore attuale dell'ATR dal periodo alto del grafico. Un valore intero.

Dov'è l'errore?

Cosa c'è scritto? Che cosa dice?

 
Sergey Savinkin:

Cosa c'è scritto? Che cosa sta imprecando?

Non lo è, è una bugia. L'indicatore sull'alto mostra "8", ma il consigliere dice "6" nel commento

 
lil_lil:

Non giura, mente. L'indicatore sull'alto mostra "8", ma nel commento l'EA dice "6".

Ho eseguito il vostro EA su un periodo di 5 minuti, periodo ATR 14, time frame ATR - 1 ora. Tutto si mostra uniformemente, sia nei commenti che nel grafico.

 
lil_lil:

Si trova anche sul mio attuale, con ATRtimeframe=PERIOD_CURRENT


Non credo affatto che si tratti del codice. Ecco il mio PERIODO_CORRENTE