Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1115

 
Maxim Kuznetsov:

vedere oanda api - se non mi sbaglio nella foto è PositionBook

grazie!

 
Artyom Trishkin:

Quindi devi disabilitare il grafico a scorrimento automatico. E ricordate che è un comando asincrono.

Disabili....

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

Disabili....

Allora dovete guardare nel vostro codice.

 

Sto cercando di prendere i dati dell'indicatore MA dal periodo più vecchio in 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");

Ma ottengo l'errore 4806 (Dati richiesti non trovati). Quando lo prendo dal timeframe corrente, tutto è OK. Ci vogliono dati. Ma ho problemi con quello più alto. Si prega di consigliare come risolvere il problema

 
Artyom Trishkin:

Allora dovete guardare nel vostro codice.

Puoi dirmi dove mi sbaglio?

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

Ho eseguito lo script su H2 all'inizio dell'ora.

Come ho scritto prima, funziona bene, e poi, da un certo punto, il grafico si posiziona alla fine e appareMessageBox. Perché rispondere a una richiesta, se non posso vedere la figura trovata?

 

2361
A partire dal periodo H1, una variabile o una funzione emette valori strani.

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

ecc.

 
Roman:

2361
A partire dal periodo H1, una variabile o una funzione emette valori strani.

ecc.

Qual è la loro "stranezza"?

 
Artyom Trishkin:

Qual è la loro "stranezza"?

La variabile _Period e Period() fino a M30 incluso, fornisce il valore in minuti.
Se il periodo è M1 allora 1
Se il periodo M2 allora 2
...
Se periodo M30 allora 30

È logico che il periodo orario sarà di 60
periodo di due ore 120
tre ore 180
ecc.

Ma da H1 in poi vengono visualizzati i valori sbagliati.

 
Roman:

La variabile _Period e la funzione Period(), fino a M30 compreso, forniscono il valore in minuti.
Se periodo M1 allora 1
Se il periodo M2 allora 2
...
Se il periodo di M30 allora 30

È logico che il periodo orario sarà di 60
periodo di due ore 120
tre ore 180
ecc.

Ma da H1 in poi vengono visualizzati i valori sbagliati.

EnumToString(Periodo())

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

EnumToString(Periodo())

L'aiuto dice che dovrebbe essere restituito il valore di timeframe, non l'identificatore convertito conEnumToString()
La variabile _Period restituisce int.
ENUM_TIMEFRAMES Period() implica anche che venga restituito int.