Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1178

 
Aleksey Vyazmikin:

Portanto, não há menção de um ventilador para esta função nas instruções

Como um objecto na mesma coordenada de preço pode ter vários valores, deve ser especificado um número de linha. Esta função só é aplicável aos seguintes objectos:

  • Linha de tendência (OBJ_TREND)
  • Linha de tendênciapor ângulo (OBJ_TRENDBYANGLE)
  • Linha Gann (OBJ_GANNLINE)
  • Canal equidistante (OBJ_CHANNEL) - 2 linhas
  • Canal de regressão linear (OBJ_REGRESSION) - 3 linhas
  • Canal de desvio padrão (OBJ_STDDEVCHANNEL) - 3 linhas
  • Linha com seta (OBJ_ARROWED_LINE)

O ventilador tem dois pontos de cada vez. Acrescentar-lhe uma linha de tendência paralela e calculá-la. A produção pode sempre ser encontrada.

 
Uladzimir Izerski:

Calculado com opreço ObjectGetValueByTime, descubra qualquer percentagem do ventilador.

Funciona no testador. Ainda não o testei.

Pode mostrá-lo sob a forma de código?

 
Aleksey Vyazmikin:

Pode mostrá-lo sob a forma de código?

Acabou de ser verificado no código. Funciona nos canais. Detecta também no 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);

Pode-se ligar uma linha de tendência a um ventilador e também se pode detectá-la. Mas funciona como está.

 
Uladzimir Izerski:

Acabou de ser verificado no código. Funciona nos canais. Detecta também no ventilador.

Pode-se ligar a linha de tendência ao ventilador e também se pode detectá-la. Mas funciona como está.

Como é que funciona para si?

Não funciona para mim, pelo menos não no testador 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);
}

Verifique

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
 

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais

2 perguntas MT5

Sergey Tabolin, 2020.01.20 11:52

O que causou um erro ao chamar o indicador a partir de um EA? O indicador é normalmente colocado manualmente no 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.S. Está no testador.

E isto apesar do facto de a EA ser executada no gráfico em tempo real. Não torna o indicador. (((

Em particular, o que é isto?

 

Caros amigos, será que ninguém pode sugerir nada?

Separadamente, o indicador funciona tanto no testador como no gráfico. Quando o analiso a partir do EA no testador, recebo um erro pouco claro. O Consultor Especialista com este indicador começa normalmente e trabalha no gráfico.

Onde escavar?

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

Caros amigos, será que ninguém pode sugerir nada?

Separadamente, o indicador funciona tanto no testador como no gráfico. Quando o analiso a partir do EA no testador, recebo um erro pouco claro. O Consultor Especialista com este indicador começa normalmente e trabalha no gráfico.

Onde escavar?

Talvez para o caminho do indicador no testador?
 
Artyom Trishkin:
Talvez em direcção ao caminho indicador no testador?

Como assim?

Tenho todos os indicadores de que preciso desta forma

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

Isto nunca tinha acontecido antes. Além disso, esta é a primeira vez que o testador me fala de um caminho separado para um indicador.

Será que funciona para outros indicadores, mas não para este?

 

Acrescentou especialmente outro indicador de antemão.

   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

A EA ainda é colocada na tabela normalmente. Todos os indicadores estão carregados e a funcionar....

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

Caros Senhores, ninguém pode sugerir nada?

Onde cavar?

posso assumir que a pega é repetidamente e gradualmente transborda a memória. a do gráfico ao vivo fá-lo lentamente, e não tem tempo para preencher toda a memória. o testador fá-lo muitas vezes por segundo, e rapidamente transborda a memória.