Fragen Sie! - Seite 32

 

Dave,

Geben Sie nicht so schnell auf. Wenn ich dir sage, was du tun sollst, ist es vielleicht falsch und du wirst nie das Richtige lernen.

Hier ist ein weiterer Versuch.

Viel Glück!

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

{

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

}

 

Woher weiß ich, ob mein Auftrag einen Stop-Loss erreicht hat?

Hallo Leute

ich programmiere einen EA, der einen Trailing-Stop verwendet. Die Sache ist, dass, wenn es ein Stop-Loss trifft, dann öffnet es einen neuen Auftrag. Die Frage ist also, wie man dem EA sagen kann, dass er, wenn eine Order einen Stop-Loss erreicht, auf den nächsten Balken warten soll, um zu entscheiden, ob eine neue Order geöffnet werden soll... Bitte helfen Sie mir.

 
 
iscuba11:
Wo findet die Änderung in dieser Schleife statt? Der ursprüngliche Stop-Loss war 40 und der Take-Profit war 100. Im Rahmen des Sleep-Modus soll der Stop-Loss für alle bestehenden offenen Aufträge auf 15 und der Take-Profit für alle bestehenden offenen Aufträge auf 25 geändert werden.

Offene Auftragstickets: Vor dem Schlafmodus.

Vor dem Ruhemodus Stop Loss - 40 Vor dem Ruhemodus Take Profit-100 Nach dem Ruhemodus Stop Loss Modifikation -15 Nach dem Ruhemodus Take Profit Modifikation - 25

Ich initialisiere keine Auftragseinstellungen, sondern ändere bestehende Aufträge, die bereits platziert und noch aktiv sind.

Trotzdem vielen Dank für Ihre Hilfe! Warum scheint etwas so Einfaches so schwierig zu sein?

Dave <<

Wie definieren Sie Ihren Schlafmodus?

Füge ihn einfach vor der ordermodify() Schleife ein

z. B..

if(sleepcome)

{

for(.....)

{

//delete my code gave you before or make it as comment

orderselect(.....);

.

.

.

}

}

vielleicht hilft das

 
AnasFX:
Hallo Leute, ich programmiere einen EA, der einen Trailing-Stop verwendet. Die Sache ist, dass, wenn es ein Stop-Loss trifft, dann öffnet es eine neue Bestellung. Also, die Frage ist, dass, wie die EA zu sagen, dass, wenn eine Bestellung trifft ein Stop-Loss dann für die nächste Bar warten, um zu entscheiden, ob Sie eine neue Bestellung öffnen möchten?

Überprüfen Sie den Handel Geschichte, wenn die ordercloseprice() = orderstoploss() dann schließen, indem Sie die sl

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

 

Zeitpunkt des Stop-Loss

phoenix:
die Handelshistorie überprüfen, wenn ordercloseprice() = orderstoploss() ist, dann wird der Auftrag geschlossen, indem der Stop-Loss erreicht wird.

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

Danke für die Idee, Mann. Ich möchte auch den Zeitpunkt des Stop-Losses wissen und ob dieser Zeitpunkt im aktuellen Balken liegt. Ich kann viele Stop-Losses haben, aber ich möchte wissen, ob der Stop-Loss im aktuellen Zeitbalken liegt. Soll ich den Zeitpunkt des Orderschlusses prüfen und mit dem Zeitpunkt des aktuellen Balkens vergleichen?

 

Anzeigen von Käufen und Verkäufen in einem EA

Ich würde gerne Pfeile oder Textobjekte oder ähnliches auf dem Chart platzieren, während mein EA läuft, um seine Aktionen anzuzeigen, aber die Objekte scheinen nicht zu erscheinen. Hat jemand ein funktionierendes EA-Beispiel, das auf dem Chart zeichnet?

Außerdem gibt es im Strategy Tester eine Schaltfläche zur Anzeige eines Charts nach der Ausführung eines Tests, aber ich sehe die Pfeile nicht. Ist dies ein Problem mit Build 195, denn ich weiß, dass ich sie dort in der Vergangenheit gesehen habe. Wie können wir diese Pfeilobjekte ändern? Ich würde sie gerne größer machen, aber ich weiß auch nicht, wie ich das Diagramm im Tester erreichen kann.

Ich schätze, beide Probleme sind die gleichen: Benutzerfeedback von EAs zu erhalten.

 

Ich habe einen Experten, den ich gerade überarbeite, und wollte ein Einstiegssignal vermeiden, wenn der zuvor geschlossene Balken extrem lang war. (>30 Pips) Ich fügte den Satz unten als Bedingung, aber es schien nicht erkannt werden. Ich bin kein guter Programmierer, aber ich habe Glück mit der Anpassung von Experten und lerne nach und nach. Kann mir jemand sagen, welche Logik oder welchen Satz ich hier verwenden sollte?

Unter dem Abschnitt;

-----------------------------------

void CheckForSignals() {

-----------------------------------

Ich habe die Bedingung eingefügt;

-----------------------------------

wenn ((Close[1])-(Open[1])<30 ) {

buysig=true;

-----------------------------------

Danke für jede Anregung,

MJ

 
marketjouster:
Ich habe einen Experten, den ich gerade überarbeite und wollte ein Einstiegssignal vermeiden, wenn der zuvor geschlossene Bar extrem lang war. (>30 Pips) Ich habe den Satz unten als Bedingung hinzugefügt, aber er scheint nicht erkannt zu werden. Ich bin kein guter Programmierer, aber ich habe Glück mit der Anpassung von Experten und lerne nach und nach. Kann mir jemand sagen, welche Logik oder welchen Satz ich hier verwenden sollte?

wenn ((Close[1])-(Open[1])<30 ) ...

MJ

MJ,

Angenommen, Close[1] liegt z.B. bei 1,2835 und Open[1] bei 1,2805 (bullischer Bar), dann beträgt die Differenz 0,0030, so dass die Überprüfung gegen 30 nicht funktioniert. Und was ist, wenn Close[1] bei 1,2805 und Open[1] bei 1,2835 liegt (Baisse-Bar)? Dann erhalten Sie -0,0030.

Sie müssen also zunächst Close[1]-Open[1] < (30*Point) verwenden, um das erste Problem zu lösen, und dann die Funktion MathAbs() verwenden, um den absoluten Wert der Subtraktion zu erhalten.

Kurz gesagt: if MathAbs(Schließen[1]-Öffnen[1])<(30*Punkt)....

HTH

Yannis

 

Code zur Vermeidung von Long-Bar-Handelseingängen

Yannis:
MJ,

Angenommen, Close[1] liegt z.B. bei 1,2835 und Open[1] bei 1,2805 (bullischer Bar), dann beträgt die Differenz 0,0030, so dass die Prüfung gegen 30 nicht funktioniert. Und was ist, wenn Close[1] bei 1,2805 und Open[1] bei 1,2835 liegt (Baisse-Bar)? Dann erhalten Sie -0,0030.

Sie müssen also zunächst Close[1]-Open[1] < (30*Point) verwenden, um das erste Problem zu lösen, und dann die Funktion MathAbs() verwenden, um den absoluten Wert der Subtraktion zu erhalten.

Kurz gesagt: if MathAbs(Schließen[1]-Öffnen[1])<(30*Punkt)....

HTH

Yannis

Vielen Dank, Yannis. Ihre Erklärung ist sehr klar, und ich schätze die Einbeziehung des tatsächlichen Codes. Darf ich eine Folgefrage stellen? Wenn ich in der Lage sein wollte, die Anzahl der Pips für den langen Balken im Eigenschaftsfenster des Expert Advisors einzustellen, könnte ich Folgendes verwenden;

extern int LBE=30; // LBE steht für "Long Bar Entry". Standardwert könnte 30 sein

in der Kopfzeile des Experten einfügen und dann LBE anstelle von 30 in Ihrer Code-Zeile verwenden?

if MathAbs(Close[1]-Open[1])<(LBE*Point)

Dies würde mir erlauben, verschiedene Pip-Einstellungen manuell zu testen und sie im Backtesting zu optimieren.

MJ