Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1115

 
Maxim Kuznetsov:

ver oanda api - si no me equivoco en la imagen es PositionBook

Gracias.

 
Artyom Trishkin:

Así que tienes que desactivar el gráfico de desplazamiento automático. Y recuerda que este es un comando asíncrono.

Desactivado....

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

Desactivado....

Entonces tienes que buscar en tu propio código.

 

Estoy tratando de tomar los datos del indicador MA del período anterior en 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");

Pero me sale el error 4806 (Datos solicitados no encontrados). Cuando lo tomo del marco temporal actual, todo está bien. Se necesitan datos. Pero tengo problemas con el más alto. Por favor, aconséjeme cómo solucionarlo

 
Artyom Trishkin:

Entonces tienes que buscar en tu propio código.

¿Puede decirme en qué me equivoco?

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

He ejecutado el script en H2 al principio de la hora.

Como escribí antes, funciona bien, y luego, a partir de algún momento, el gráfico se posiciona al final y apareceel MessageBox. ¿Por qué responder a una solicitud, si no puedo ver la cifra encontrada?

 

2361
A partir del período H1, una variable o función emite valores extraños.

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

etc.

 
Roman:

2361
A partir del período H1, una variable o función emite valores extraños.

etc.

¿Cuál es su "extrañeza"?

 
Artyom Trishkin:

¿Cuál es su "extrañeza"?

La variable _Period y Period() hasta M30 inclusive, emite el valor en minutos.
Si el periodo es M1 entonces 1
Si el período M2 entonces 2
...
Si el período M30 entonces 30

Es lógico que el periodo horario sea de 60
período de dos horas 120
tres horas 180
etc.

Pero a partir de H1 se muestran los valores erróneos.

 
Roman:

La variable _Period y la función Period(), hasta M30 inclusive, emiten el valor en minutos.
Si el período M1 entonces 1
Si el período M2 entonces 2
...
Si el periodo de M30 es de 30

Es lógico que el periodo horario sea de 60
período de dos horas 120
tres horas 180
etc.

Pero a partir de H1 se muestran los valores erróneos.

EnumToString(Period())

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

EnumToString(Period())

La ayuda dice que debe devolverse el valor del marco temporal, no el identificador convertido conEnumToString()
La variable _Period devuelve int.
ENUM_TIMEFRAMES Period() también implica que se devuelve int.