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

 
Sergey Savinkin:

Funciona. ))

E que motor de fórum inteligente... O próprio utilizador forneceu a ligação onde existem instruções completas sobre como colar o código.

 
Alexey Viktorov:

E realmente... porquê esforçar-se para ser melhor...

Conte quanto código extra é escrito nestas funções e quanto código escreve, chamando a estas funções autoescritas.

Esforço-me por ser melhor no comércio, e preciso de codificação para avançar em direcção a esse objectivo.

Se a diferença for de 0,1 segundo no final do ano, há algum interesse em incomodar?

Pode mostrar-me como fazer este código sem funções e acelerá-lo?

 
Aleksey Vyazmikin:

Estou a esforçar-me por ser melhor no comércio, e preciso de codificação para avançar em direcção a esse objectivo.

Se a diferença for de 0,1 segundo no final do ano, há algum interesse em incomodar?

Pode mostrar-me como fazer este código sem funções e acelerá-lo?

É assim que se tem tudo escrito. Só que está tudo embrulhado em mql4. Não pode passar sem um invólucro destes?

E isto é

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin, 2018.05.24 12:30

Tudo recolhido por pedaços, mas o corpo principal de funções semelhantes que assumi originalmente daqui, realmente não sei o que resta dele.

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

É simplesmente horrível.... De que se trata tudo isto?

Não é realmente um curso. Desculpem, acabaram-se as críticas.

 
Alexey Viktorov:

É assim que se tem tudo escrito. Só que está tudo embrulhado em mql4. Não pode passar sem um invólucro destes?

E isto...


é simplesmente horrível... De que se trata tudo isto?

E, em geral, não são os cursos aqui. Desculpem, acabaram-se as críticas.

Uma vez que não há vontade de mostrar como fazê-lo melhor para os principiantes.

Não vejo o horror, em MT4 o período de tempo é muitas vezes designado por dígitos divisíveis por minutos, o que não é lógico fazer em MT5, mas permite uma portabilidade mais fácil do código.

 
Aleksey Vyazmikin:

Como não há vontade de mostrar o melhor caminho para os principiantes...

Não vejo o horror, em MT4 o período de tempo é muitas vezes denotado por números divisíveis por minutos, o que não é lógico fazer já em MT5, mas facilita a portabilidade do código.

Porque é que o traduziria em número de minutos e depois o colocaria de volta?

Será 16408 mais compreensível do que PERIOD_D1 ou 49153 mais compreensível do que PERIOD_MN1?

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

Olá, na EA quero saber o valor actual de ATR do período elevado do gráfico. Um valor inteiro.

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

Onde está o erro?

 
lil_lil:

Olá, na EA quero saber o valor actual de ATR do período elevado do gráfico. Um valor inteiro.

Onde está o erro?

O que é que diz? O que é que está a dizer?

 
Sergey Savinkin:

O que é que diz? Sobre o que é que ele está a jurar?

Não está, está a mentir. O indicador no alto mostra "8", mas o conselheiro diz "6" no comentário

 
lil_lil:

Não jura, mente. O indicador no alto mostra "8", mas no comentário a EA diz "6".

Executei a sua EA num período de 5 minutos, período ATR 14, período ATR - 1 hora. Tudo se mostra de forma uniforme, tanto nos comentários como no gráfico.

 
lil_lil:

Também está deitado no meu actual, com ATRtimeframe=PERIOD_CURRENT


Acho que não se trata de modo algum do código. Aqui está o meu PERÍODO_CURSO


Razão: