Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1115

 
Maxim Kuznetsov:

siehe oanda api - wenn ich mich auf dem Bild nicht irre, ist es PositionBook

Ich danke Ihnen!

 
Artyom Trishkin:

Sie müssen also das automatische Scrollen der Grafik deaktivieren. Und denken Sie daran, dass dies ein asynchroner Befehl ist.

Deaktiviert....

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

Deaktiviert....

Dann müssen Sie in Ihrem eigenen Code nachsehen.

 

Ich versuche, die Daten des MA-Indikators aus einem älteren Zeitraum in MT5 zu übernehmen.

//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");

Ich erhalte jedoch die Fehlermeldung 4806 (Angeforderte Daten nicht gefunden). Wenn ich sie aus dem aktuellen Zeitrahmen nehme, ist alles in Ordnung. Es braucht Daten. Aber ich habe Probleme mit dem höheren Wert. Bitte um Rat, wie man das Problem beheben kann

 
Artyom Trishkin:

Dann müssen Sie in Ihrem eigenen Code nachsehen.

Können Sie mir sagen, wo ich falsch liege?

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

Ich habe das Skript bei H2 zu Beginn der Stunde ausgeführt.

Wie ich schon schrieb, funktioniert es gut, und dann, ab einem bestimmten Punkt, wird das Diagramm am Ende positioniert undMessageBox erscheint. Warum sollte ich auf eine Anfrage antworten, wenn ich die gefundene Zahl nicht sehen kann?

 

2361
Ab der Periode H1 gibt eine Variable oder Funktion seltsame Werte aus.

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

usw.

 
Roman:

2361
Ab der Periode H1 gibt eine Variable oder Funktion seltsame Werte aus.

usw.

Worin besteht ihre "Fremdheit"?

 
Artyom Trishkin:

Worin besteht ihre "Fremdheit"?

Die Variablen _Period und Period() bis einschließlich M30 geben den Wert in Minuten aus.
Wenn der Zeitraum M1 ist, dann 1
Wenn Zeitraum M2 dann 2
...
Wenn Zeitraum M30 dann 30

Es ist logisch, dass der stündliche Zeitraum 60
Zwei-Stunden-Zeitraum 120
drei Stunden 180
usw.

Aber ab H1 werden die falschen Werte angezeigt.

 
Roman:

Die Variable _Period und die Funktion Period() geben bis einschließlich M30 den Wert in Minuten aus.
Wenn Zeitraum M1 dann 1
Wenn Zeitraum M2 dann 2
...
Wenn der Zeitraum von M30 dann 30

Es ist logisch, dass der stündliche Zeitraum 60
Zwei-Stunden-Zeitraum 120
drei Stunden 180
usw.

Aber ab H1 werden die falschen Werte angezeigt.

EnumToString(Zeitraum())

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

EnumToString(Zeitraum())

In der Hilfe steht, dass der Wert des Zeitrahmens zurückgegeben werden sollte, nicht der mitEnumToString() konvertierte Bezeichner.
Die Variable _Period gibt int zurück.
ENUM_TIMEFRAMES Period() impliziert auch, dass int zurückgegeben wird.