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

 
Sergey Savinkin:

Funciona. ))

Y qué motor de foro más inteligente... Tú mismo has proporcionado el enlace donde hay instrucciones completas sobre cómo pegar el código.

 
Alexey Viktorov:

Y realmente... Por qué esforzarse por ser mejor...

Cuente cuánto código extra se escribe en estas funciones y cuánto código escribe usted al llamar a estas funciones autoescritas.

Me esfuerzo por ser mejor en el comercio, y necesito la codificación para avanzar hacia ese objetivo.

Si la diferencia será de 0,1 segundos al final del año, ¿tiene sentido molestarse?

¿Puedes mostrarme cómo hacer este código sin funciones y acelerarlo?

 
Aleksey Vyazmikin:

Me estoy esforzando por ser mejor en el comercio, y necesito la codificación para avanzar hacia ese objetivo.

Si la diferencia será de 0,1 segundos al final del año, ¿tiene sentido molestarse?

¿Puedes mostrarme cómo hacer este código sin funciones y acelerarlo?

Así es como lo tienes todo escrito. Sólo que todo está envuelto bajo mql4. ¿No puedes prescindir de ese envoltorio?

Y esto es

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

FAQ de principiantes MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin, 2018.05.24 12:30

Todo recogido por trozos, pero el cuerpo principal de las funciones similares que tomé originalmente de aquí, realmente no sé lo que queda de ella.

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);
     }
  }

Es simplemente horrible .... ¿De qué se trata todo esto?

No es realmente un curso. Lo siento, no hay más críticas.

 
Alexey Viktorov:

Así es como lo tienes todo escrito. Sólo que todo está envuelto en mql4. ¿No puedes prescindir de ese envoltorio?

Y esto...


es simplemente horrible... ¿De qué se trata todo esto?

Y en general no son los cursos aquí. Lo siento, no hay más críticas.

Bueno, como no hay ganas de mostrar cómo hacerlo mejor para los principiantes...

No veo el horror, en MT4 el periodo de tiempo se suele designar por dígitos divisibles por minutos, lo que no es lógico hacer en MT5, pero permite portar el código más fácilmente.

 
Aleksey Vyazmikin:

Bueno, ya que no hay deseo de mostrar la mejor manera para los principiantes...

No veo el horror, en MT4 el periodo de tiempo se suele denotar con números divisibles por minutos, lo cual no es lógico que se haga ya en MT5, pero facilita la portación del código.

¿Por qué lo traduce en número de minutos y luego lo vuelve a poner?

¿Es el 16408 más comprensible que el PERIOD_D1 o el 49153 más comprensible que el PERIOD_MN1?

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

Hola, en el EA quiero saber el valor actual del ATR del periodo alto del gráfico. Un valor entero.

#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]);
  }
///

¿Dónde está el error?

 
lil_lil:

Hola, en el EA quiero saber el valor actual del ATR del periodo alto del gráfico. Un valor entero.

¿Dónde está el error?

¿Qué dice? ¿Qué dice?

 
Sergey Savinkin:

¿Qué dice? ¿Por qué jura?

No lo es, es mentira. El indicador de la alta muestra "8", pero el asesor dice "6" en el comentario

 
lil_lil:

No jura, miente. El indicador en el alto muestra "8", pero en el comentario el EA dice "6".

He ejecutado su EA en un período de 5 minutos, período ATR 14, marco de tiempo ATR - 1 hora. Todo se muestra uniforme, tanto en los comentarios como en el gráfico.

 
lil_lil:

También está en mi actual, con ATRtimeframe=PERIOD_CURRENT


No creo que se trate del código en absoluto. Aquí está mi PERIOD_CURRENTE