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

 
Aleksey Vyazmikin:

Así que no se menciona un ventilador para esta función en las instrucciones

Como un objeto en la misma coordenada de precio puede tener varios valores, debe especificarse un número de línea. Esta función sólo es aplicable a los siguientes objetos:

  • Línea de tendencia (OBJ_TREND)
  • Línea de tendenciapor ángulo (OBJ_TRENDBYANGLE)
  • Línea de Gann (OBJ_GANNLINE)
  • Canal equidistante (OBJ_CHANNEL) - 2 líneas
  • Canal de regresión lineal (OBJ_REGRESSION) - 3 líneas
  • Canal de desviación estándar (OBJ_STDDEVCHANNEL) - 3 líneas
  • Línea con flecha (OBJ_ARROWED_LINE)

El ventilador tiene dos puntos en todo momento. Añade una línea de tendencia paralela y calcúlala. La salida siempre se puede encontrar.

 
Uladzimir Izerski:

Calculado con elprecio ObjectGetValueByTime, averigua cualquier porcentaje del ventilador.

Funciona en el probador. No lo he probado.

¿Puede mostrarlo en forma de código?

 
Aleksey Vyazmikin:

¿Puede mostrarlo en forma de código?

Acabo de comprobar el código. Funciona en los canales. También se detecta en el ventilador.

 F_Draw_Object("FAN",OBJ_FIBOFAN,Time[20],High[20],Time[5],Low[5],0,0,0,2,C'00,00,200',OBJPROP_FILL,false);
 PriseCLv=ObjectGetValueByTime(0,"FAN",Time[10],0);

Puedes vincular una línea de tendencia a un abanico y también puedes detectarlo. Pero funciona tal cual.

 
Uladzimir Izerski:

Acabo de comprobar el código. Funciona en los canales. También se detecta en el ventilador.

Puedes vincular la línea de tendencia al ventilador y también puedes detectarlo. Pero funciona tal cual.

¿Cómo funciona para usted?

No me funciona, al menos no en el probador visual...

bool fiboFanCreate(string ffname, datetime tm1, double pr1, datetime tm2, double pr2)
{
   Print(__FUNCSIG__);
   
   //if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2))
   if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2,0,0,0,2,C'00,00,200',OBJPROP_FILL,false))
   {
      Print(__FUNCSIG__,
            ": не удалось создать \"Веер Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
   }
   
   ChartRedraw();
   Sleep(1000);
   
   return(true);
}
//+------------------------------------------------------------------+
bool fiboFanLevelsSet(double  &values[],  // значения линий уровня
                      string  name)       // имя веера
{
   Print(__FUNCSIG__);
   
   levels = ArraySize(values);
   ArrayPrint(values);
   //--- установим количество уровней
   ObjectSetInteger(0,name,OBJPROP_LEVELS,levels);
   
   //--- установим свойства уровней в цикле
   for(int i=0;i<levels;i++)
   {
      //--- значение уровня
      ObjectSetDouble(0,name,OBJPROP_LEVELVALUE,i,values[i]);
      //--- описание уровня
      ObjectSetString(0,name,OBJPROP_LEVELTEXT,i,IntegerToString(i+1));
   }
   ChartRedraw();
   Sleep(1000);
   //--- успешное выполнение
   return(true);
}

Consulte

void OnTick()
{
   new_bars    = current_chart.isNewBar();   // проверить появление нового бара
   
   if(new_bars > 0)
   {
      if(ObjectFind(0,ff_name) >= 0) Print(ff_name,"4 = ",NormalizeDouble(ObjectGetValueByTime(0,ff_name,TimeCurrent(),4),Digits()));

....

2020.01.19 19:38:50.208 2019.09.19 11:15:00   bool fiboFanCreate(string,datetime,double,datetime,double)
2020.01.19 19:38:50.208 2019.09.19 11:15:01   bool fiboFanLevelsSet(double&[],string)
2020.01.19 19:38:51.365 2019.09.19 11:30:00   FFan4 = 0.0
 

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

2 preguntas MT5

Sergey Tabolin, 2020.01.20 11:52

¿Qué ha causado un error al llamar al indicador desde un EA? El indicador suele colocarse manualmente en el gráfico.

   ResetLastError();
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 13:42:09.390 Core 1  file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 13:42:09.390 Core 1  loading of ICTMP_  EURGBP,M15 failed [557]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 13:42:09.390 Core 1  tester stopped because OnInit returns non-zero code
P.D. Está en el probador.

Y esto a pesar de que el EA se ejecuta en el gráfico en tiempo real. No se hace el indicador. (((

En concreto, ¿qué es esto?

 

Queridos amigos, ¿alguien puede sugerir algo?

Por separado, el indicador funciona tanto en el probador como en el gráfico. Cuando lo ejecuto desde el EA en el probador, me da un error poco claro. El Asesor Experto con este indicador normalmente se inicia y trabaja en el gráfico.

¿Dónde cavo?

 
Сергей Таболин:

Queridos amigos, ¿alguien puede sugerir algo?

Por separado, el indicador funciona tanto en el probador como en el gráfico. Cuando lo ejecuto desde el EA en el probador, me da un error poco claro. El Asesor Experto con este indicador normalmente se inicia y trabaja en el gráfico.

¿Dónde cavo?

¿Tal vez hacia la trayectoria del indicador en el probador?
 
Artyom Trishkin:
¿Tal vez hacia el camino del indicador en el probador?

¿Cómo es eso?

Tengo todos los indicadores que necesito de esta manera

handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01"
handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",

Esto no ha ocurrido nunca antes. Además, es la primera vez que oigo hablar de una ruta separada para un indicador en el probador...

¿Funciona para otros indicadores, pero no para éste?

 

Especialmente se ha añadido otro indicador de antemano.

   ResetLastError();
      handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",45,9);
      if(handle_HMA7C == INVALID_HANDLE)                                                  // проверяем наличие хендла индикатора
      {
         Print("Не удалось получить хендл индикатора handle_HMA7C...",GetLastError());    // если хендл не получен, то выводим сообщение в лог об ошибке
         return(INIT_FAILED);                                                             // завершаем работу с ошибкой
      }
      else
      {
         Print("Получен хендл индикатора handle_HMA7C");
         if(!MQLInfoInteger(MQL_OPTIMIZATION))
         {
            if(!ChartIndicatorAdd(ChartID(),0,handle_HMA7C)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
         }
      }
   
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 20:15:34.713 program file added: Indicators\my_used\my_HMA7C_201.ex5. 41715 bytes loaded
2020.01.20 20:15:34.920 2019.09.19 00:00:00   Получен хендл индикатора handle_HMA7C
2020.01.20 20:15:34.921 file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 20:15:34.921 loading of ICTMP_ EURGBP,M15 failed [557]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 20:15:34.921 tester stopped because OnInit returns non-zero code

El EA se sigue poniendo en el gráfico normalmente. Todos los indicadores están cargados y funcionando....

 
Сергей Таболин:

Estimados señores, ¿alguien puede sugerir algo?

¿Dónde cavar?

Puedo suponer que le llega la manivela repetidamente y desborda gradualmente la memoria. el de la gráfica en vivo lo hace lentamente, y no le da tiempo a llenar toda la memoria. el probador lo hace muchas veces por segundo, y desborda rápidamente la memoria.