Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1115

 
Maxim Kuznetsov:

ver oanda api - se não estou enganado na foto, é PositionBook

obrigado!

 
Artyom Trishkin:

Portanto, é preciso desativar o gráfico de rolagem automática. E lembre-se que se trata de um comando assíncrono.

Deficiente....

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

Deficiente....

Então você precisa procurar em seu próprio código.

 

Estou tentando obter dados do indicador MA do período mais antigo do MT5.

//OnInit
 if((slowMovingHandleHigherTF=iMA(_Symbol, HighMovingsTF, SlowMovingPeriod_HigherTF, 0, MA_Method, MA_Apply_To))==INVALID_HANDLE) {
      PrintFormat("Slow moving (HigherTF) handle troubles");
      return (INIT_FAILED);
   }
//OnCalculate
 if(!FillArrayFromBuffer(slowMovingHandleHigherTF,SlowValuesHigherTF,0,40)) Print("Beda");

Mas eu recebo erro 4806 (Dados solicitados não encontrados). Quando eu tomo o tempo atual, tudo está bem. É preciso dados. Mas eu tenho problemas com o mais alto. Favor aconselhar como consertá-lo

 
Artyom Trishkin:

Então você precisa procurar em seu próprio código.

Você pode me dizer onde eu estou errado?

void OnStart()
{
   ArraySetAsSeries(rates,true);
   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,false);
   

   for(int i = 0; i < in_range; i++)
   {

   // Тут рассчитываю X
      if(X)       {          ChartNavigate(ChartID(),CHART_END,-i);          if(MessageBox(ask,"ASK",MB_OKCANCEL) == IDOK)          {             ObjectCreate(ChartID(),"SigDN_"+IntegerToString(i),OBJ_VLINE,0,rates[i].time,rates[i].open);             //return;             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_COLOR,clrRed);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTABLE,true);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTED,false);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);             Print("SigDN_",i);          }       }    } }

Eu corri o roteiro do H2 no início da hora.

Como escrevi antes, funciona bem, e então, a partir de algum ponto, o gráfico é posicionado no final e aMessageBox aparece. Por que responder a um pedido, se eu não consigo ver a figura encontrada?

 

2361
A partir do período H1, uma variável ou função emite valores estranhos.

Print(_Period);
Print(Period());
H1
16385
16385
H4
16388
16388

etc.

 
Roman:

2361
A partir do período H1, uma variável ou função emite valores estranhos.

etc.

Qual é a "estranheza" deles?

 
Artyom Trishkin:

Qual é a "estranheza" deles?

Variável _Periodo e Período() até M30 inclusive, produz o valor em minutos.
Se o período for M1, então 1
Se o período M2 então 2
...
Se o período M30 então 30

É lógico que o período horário será de 60
período de duas horas 120
três horas 180
etc.

Mas a partir de H1, os valores errados são exibidos.

 
Roman:

A variável _Periodo e a função Período(), até M30 inclusive, produz o valor em minutos.
Se o período M1 então 1
Se o período M2 então 2
...
Se o período de M30 então 30

É lógico que o período horário será de 60
período de duas horas 120
três horas 180
etc.

Mas a partir de H1, os valores errados são exibidos.

EnumToString(Período())

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

EnumToString(Período())

A ajuda diz que o valor do período deve ser retornado, não o identificador convertido comEnumToString()
A variável _Periodo retorna int.
ENUM_TIMEFRAMES Period() também implica que a int é devolvida.

Razão: