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

 

Vielleicht habe ich meine Frage nicht verstanden.

Auf dem M1-Perioden-Chart möchte ich den Puffer auffüllen, wenn auf der M5-Periode die Linie des Stochastik-Indikators jetzt über der 55er-Marke liegt.

input ENUM_TIMEFRAMES   TimeFrame2  =  PERIOD_M5; //ЭТО ВО ВНЕШНИХ Н
////////////////////////////////////////////////
       for(int i=limit; i>=0; i--) {
      int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
      int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
    
      double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
      double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
    
      if(sto2_0>55.0)
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      
      if(sto2_0<44.0)
       {
      BufferDN[i]=high[i]+distance*MyPoint;
       }

      Comment(sto2_0);
       }

Im Kommentar ist der aktuelle Wert bei M5 richtig, aber auf dem Verlauf setzen die Pfeile nicht auf Zustand, Chaos.

Was kann das sein?

Im " Keller" die Stochastik von M5

Die Pfeile sind nicht dem Signal entsprechend eingekreist



xaoc
 

Ich schreibe einen Expert Advisor, der gleichzeitig zwei StopOrders setzt, eine zum Verkauf und eine zum Kauf.

Wie schreibe ich die Bedingung, dass, wenn eine StopOrder ausgelöst wird, die zweite (entgegengesetzte) gelöscht wird?

Ich danke Ihnen.

 
RichLux:

Ich schreibe einen Expert Advisor, der gleichzeitig zwei StopOrders setzt, eine zum Verkauf und eine zum Kauf.

Wie schreibe ich die Bedingung, dass, wenn eine StopOrder ausgelöst wird, die zweite (entgegengesetzte) gelöscht wird?

Ich danke Ihnen.

Die Bedingung ist einfach. Wenn eine StopOrder ausgelöst wird und eine Position auf dem Markt erscheint, bedeutet das, dass wir die Position verfolgen sollten, und wenn sie existiert, sollten wir die entgegengesetzte Order löschen.

Dies ist ein Stück Code zum Nachdenken)

void DeleteOppositeOrders(string sy="", int op=-1, int mn=-1, color cl=clrOliveDrab) {
  bool b, s;
  switch(op) {
    case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
    case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
  }

  if(b) {
    DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
    DeleteOrders(sy, OP_SELLSTOP , mn, cl);
  }
  if(s) {
    DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
    DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
 
Vitaly Muzichenko, soweit ich das verstanden habe, müssen Sie jetzt die FunktionenExistPositions undDeleteOrders hinzufügen
 
RichLux:
Vitaly Muzichenko, soweit ich das verstehe, müssen wir jetzt die FunktionenExistPositions undDeleteOrders hinzufügen
Doch, das müssen Sie.
 
RichLux:
Vitaly Muzichenko, soweit ich das verstehe, müssen wir jetzt die FunktionenExistPositions undDeleteOrders schreiben
Sie müssen sie nicht schreiben, sie sind beidevorgefertigt
 
Vitaly Muzichenko:
Man muss sie nicht schreiben, sie sind beidevorgefertigt.

Nun ..., für pädagogische Zwecke ist es recht nützlich ...

In der Praxis ist es sehr teuer, die Zyklen in jeder Funktion auszuführen.

 
Artyom Trishkin:

Nun ..., für Schulungszwecke ist es sehr nützlich ...

In der Praxis ist es sehr kostspielig, die Zyklen in jeder Funktion auszuführen.

Deshalb habe ich nicht gleich angehängt und nur die Logik der "Schließung des Gegenübers" beschrieben und angehängt)
 

Was ist zu tun, wenn der Stopp/Stop 200 beträgt?

sondern

tp=NormalizeDouble((Preis+(TakeProfit*_Point)),Digits);

auf einen Dollar-Yen ergibt 317.000 zum Kurs von 117.000

das erwartete Ergebnis ist 117.200

 
trader781:

Was ist zu tun, wenn der Stopp/Stop 200 beträgt?

sondern

tp=NormalizeDouble((Preis+(TakeProfit*_Point)),Digits);

auf einen Dollar-Yen ergibt 317.000 zum Kurs von 117.000

das erwartete Ergebnis ist 117.200

Warum so viele Klammern? Das ist natürlich Geschmackssache, aber trotzdem zu viel.

tp=NormalizeDouble(Preis+TakeProfit*_Point,_Digits);

Werte werden falsch ersetzt, wenn das Ergebnis in der Ausgabe falsch ist, da diese Codezeile alles richtig berechnet, auch mit zusätzlichen Klammern.
Grund der Beschwerde: