[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 567

 

Helfen Sie mir, eine Bedingung zu schreiben, um eine Position zu öffnen.

Ich kann keine zusätzliche Bedingung schreiben, um eine Position nach meiner Vorstellung zu eröffnen.

Wenn ich eine Position mit TP oder SL schließe, sollte sie mit der entgegengesetzten Position wieder eröffnet werden.

Beispiel: Wenn eine Verkaufsposition, z.B. SL, geschlossen wird, wird eine Verkaufsposition zusammen mit ihr wieder eröffnet und gekauft

Hier sind 2 Bedingungen vom Expert Advisor:

Bedingung zum Kauf

if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER ("Buy");
}

sell condition

if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
if(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders)OPENORDER ("Sell");
}

Wer sich damit auskennt, möge mir bitte helfen, zusätzliche Bedingungen zu schreiben.

Dateien:
sellbuy_1.mq4  3 kb
 
Frostr:

Helfen Sie mir, eine Bedingung zu schreiben, um eine Position zu öffnen.

Ich kann keine zusätzliche Bedingung schreiben, um eine Position nach meiner Vorstellung zu eröffnen.

Wenn ich eine Position mit TP oder SL schließe, sollte sie mit der entgegengesetzten Position wieder eröffnet werden.

Beispiel: Wenn eine Verkaufsposition, z.B. SL, geschlossen wird, wird eine Verkaufsposition zusammen mit ihr wieder eröffnet und gekauft

Hier sind 2 Bedingungen vom Expert Advisor:

Bedingung zum Kauf

if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER ("Buy");
}

sell condition

if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); sonst TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); sonst SL=0;
if(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders)OPENORDER ("Sell");
}

Wer sich damit auskennt, möge mir bitte helfen, zusätzliche Bedingungen zu schreiben.


Ich verstehe nicht, was Sie wollen. Wenn Sie nach der Schließung einer Position zwei entgegengesetzte Positionen eröffnen wollen, dann ist das vielleicht möglich, aber Sie können auch einfach den AC auf den Spread geben, anstatt eine Position zu eröffnen. Es wird das Gleiche sein.
if (BUY)
   { 
   if(NumberOfPositions(Symbol(),OP_BUY,Magic)<MaxOrders)OPENORDER ("Buy");
      {
      if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
      OPENORDER ("Buy"); 
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
      OPENORDER ("Sell"); 
   }
}
if (SELL)
   {
   if(NumberOfPositions(Symbol(),OP_SELL,Magic)<MaxOrders) 
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0; 
      OPENORDER ("Sell");
      if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
      OPENORDER ("Buy"); 
   } 
}  
 
sss2019:

Guten Tag. Können Sie mir sagen, wie ich ein Problem lösen kann? Es gibt zwei Punkte, einen links und einen rechts von der Nulllinie. Ich muss die Anzahl der Balken zwischen diesen Punkten berechnen. Wenn wir einfach Zeitintervalle nehmen, die dem Zeitrahmen entsprechen, wird die Anzahl der Balken nicht korrekt berücksichtigt, wenn wir zum Freitag kommen.

Gibt es noch andere Lösungen?

Bitte helfen Sie mir, dieses Problem zu lösen.
 
sss2019:
Bitte helfen Sie, das Problem zu lösen

Übertragen Sie die Berechnungen auf das Terminal: Erstellen Sie eine Trendlinie für zwei Punkte, und finden Sie dann(ObjectGetShiftByValue()) den Versatz in jedem Punkt relativ zum 0ten Takt. Und dann berechne ich die Differenz zwischen ihnen (oder addiere modulo).
 
sss2019:
Bitte helfen Sie, das Problem zu lösen


Verschieben Sie beide Punkte um die gleiche Anzahl von Balken nach links, so dass sie beide links vom Nullbalken enden. Ich entschuldige mich, falscher Fehler, damit der richtige auf der Nullleiste steht.
 
rigonich:

Verschieben Sie beide Punkte um die gleiche Anzahl von Balken nach links, so dass sie sich beide links vom Nullbalken befinden. Tut mir leid, mein Fehler, der richtige sollte auf der Nullleiste stehen.

P.S. Ich habe ein wenig nachgedacht und festgestellt, dass ich die falsche Frage beantworte. Die Anzahl der Balken rechts vom Null-Balken kann nicht genau bestimmt werden, da sie noch nicht vorhanden sind und es außer am Wochenende auch übersprungene Balken geben kann (wenn sich der Kurs während eines Balkens nicht ändert, wird er nicht "gezogen"), fehlende Notierungen unmittelbar nach der Markteröffnung usw.
 
rigonich:

P.S. Ich habe ein wenig nachgedacht und festgestellt, dass ich die falsche Frage beantwortet habe. Die Anzahl der Balken rechts vom Null-Balken kann nicht grundsätzlich bestimmt werden, da sie noch nicht da sind, und außer am Wochenende kann es "überspringende" Balken geben (wenn sich der Kurs während eines Balkens nicht ändert, wird er nicht "gezogen"), keine Notierungen unmittelbar nach der Markteröffnung usw.
Sind Sie sicher, dass Sie wissen, was Sie da schreiben? Das beigefügte Skript berechnet den rechten Punkt der Trendlinie (Verschiebung der Balken gegenüber dem 0.). Zeichnen Sie eine Trendlinie in das Diagramm und geben Sie ihr einen Namen, den Sie in das Skript einfügen.
Dateien:
 
TarasBY:
Sind Sie sicher, dass Sie wissen, was Sie da schreiben? Das beigefügte Skript berechnet den rechten Punkt der Trendlinie (Verschiebung der Balken gegenüber dem 0.). Zeichnen Sie eine Trendlinie in das Diagramm und geben Sie ihr einen Namen, den Sie in das Skript einfügen.


Die Frage bezog sich nicht auf die Trendlinie. Die Frage lautete: Bestimmen Sie die Anzahl der Balken zwischen den beiden Punkten.
 
rigonich:

In der Frage ging es nicht um eine Trendlinie, sondern um die Anzahl der Balken zwischen zwei Punkten.
In diesem Fall ist die "Trendlinie" eine der Möglichkeiten, dieses Problem zu lösen. Und ich meinte Ihre Aussage:"Die Anzahl der Balken rechts vom Nullpunkt kann im Prinzip nicht genau bestimmt werden...". - Sagen Sie das den Entwicklern! :))
 
TarasBY:
In diesem Fall ist die "Trendlinie" eine Möglichkeit, das genannte Problem zu lösen. Und ich meine Ihre Aussage:"Die Anzahl der Balken rechts vom Nullpunkt lässt sich im Prinzip nicht genau bestimmen...". - Sagen Sie das den Entwicklern! :))


Wir können sie vorhersagen, aber wir können nicht mit Sicherheit sagen, ob sie da sein werden oder nicht, denn der Null-Balken ist der letzte offene Balken im Moment und ob die Vorhersage richtig ist oder nicht, hängt von vielen Faktoren ab. Übrigens, wenn Sie die Trendlinie nur dann verwenden, wenn der Null-Balken der letzte Balken am Freitag ist, erhalten Sie einfach die falsche Anzahl von Balken zwischen den Punkten.

P.S. Und versuchen Sie, den Entwicklern mitzuteilen, dass Sie genau wissen, wie viele Balken gebildet werden, z.B. einminütige Balken ab dem aktuellen Zeitpunkt pro Tag oder sogar pro Stunde.