Verdammter Fehler 130 zur Hölle - Seite 2

 
cloudbreaker wrote >>

Nun, ich kann kategorisch sagen, dass Seawolf und Ruptor aus ihrem kollektiven Hintern sprechen.

Bei einem OP_BUY-Auftrag ist es absolut richtig, den Ask-Kurs zu verwenden, um den Einstiegskurs und die Stopps zu bestimmen.

Eigentlich haben Seawolf und Ruptor recht.

Sie geben einen Long-Auftrag zum ASK-Kurs ein und verlassen ihn zum BID-Kurs, bei einem Verkaufsauftrag ist es umgekehrt. Da es sich bei einem Stop-Loss oder Take-Profit um einen Ausstieg handelt, müssen Sie den BID-Kurs verwenden, um sie bei einem Long-Auftrag zu berechnen.

Dies ist ein ziemlich häufiger Punkt der Verwirrung, die oft übersehen wird, vor allem, wenn es um kleine Spreads, da es nicht viel Unterschied zwischen dem ASK und BID Preis. Manchmal funktioniert der Code ganz gut, wenn Ihre Stops und Slippage nicht zu eng sind, aber wenn Sie Scalping betreiben oder etwas anderes tun, das Präzision erfordert, dann müssen Sie diese Richtlinien für den richtigen Preis beim Einstieg verwenden und Ausstieg.

-

Für einen Long-Auftrag, d.h. OP_BUY, OP_BUYSTOP oder OP_BUYLIMIT:

Einstiegskurs = ASK

Ausstiegskurs (Stop-Loss, Take-Profit oder OrderClose(...) ) = BID

-

Für eine Short-Order, d.h. OP_SELL, OP_SELLSTOP oder OP_SELLLIMIT:

Einstiegskurs = BID

Ausstiegskurs (Stop-Loss, Take-Profit oder OrderClose(...) ) = ASK

-

Tovan

 
tovan:

Eigentlich haben Seawolf und Ruptor recht.

Sie geben eine Long-Order zum ASK-Kurs ein und steigen zum BID-Kurs aus, bei einer Verkaufsorder ist es umgekehrt. Da ein Stop-Loss oder Take-Profit ein Ausstieg ist, müssen Sie den BID-Kurs verwenden, um sie bei einem Long-Auftrag zu berechnen.

Dies ist ein häufiger Punkt, der oft übersehen wird, insbesondere bei kleinen Spreads, da der Unterschied zwischen dem ASK- und dem BID-Kurs nicht groß ist. Manchmal funktioniert der Code ganz gut, wenn Ihre Stopps und Slippage nicht zu eng sind, aber wenn Sie Scalping betreiben oder etwas anderes tun, das Präzision erfordert, dann müssen Sie diese Richtlinien für den richtigen Preis beim Einstieg verwenden und Ausstieg.

-

Für eine Long-Order, d.h. OP_BUY, OP_BUYSTOP oder OP_BUYLIMIT:

Einstiegskurs = ASK

Ausstiegskurs (Stop-Loss, Take-Profit oder OrderClose(...) ) = BID

-

Für eine Short-Order, d.h. OP_SELL, OP_SELLSTOP oder OP_SELLLIMIT:

Einstiegskurs = BID

Ausstiegskurs (Stop-Loss, Take-Profit oder OrderClose(...) ) = ASK

-

Tovan

Verstanden, ich sehe genau, was Sie sagen - und entschuldige mich in aller Bescheidenheit bei Seawolf und Ruptor.

Wenn ich Orders normal schließe oder meinen eigenen Stealth-Stoploss verwende (der nur meine normale Funktion zum Schließen von Orders aufruft), bin ich mir völlig bewusst, dass ich Bid für OP_BUYs und Ask für OP_SELLs verwende.

Bei der Eröffnung meiner Orders habe ich jedoch immer nur die Einstiegskurse als Basis für die Berechnung des Stoploss verwendet und hatte nie Probleme. Ich kann mir vorstellen, dass die Kombination aus einem lockeren Spread und einem engen Stop einen Fehler bei ungültigen Stops verursachen könnte.

Ich möchte noch hinzufügen, dass es eine ganze Reihe von Beispielen gibt, die es genauso machen wie ich.

Wenn wir keine engen Stopps haben, wird der einzige Unterschied zwischen den beiden Techniken, den die meisten von uns erleben werden, wohl im tatsächlich verdienten oder verlorenen Geld liegen, obwohl sich beide Auftragsarten, da sie "um den Spreadbetrag früher" gestoppt werden, gegenseitig aufheben, wenn der Spread ziemlich stabil ist.

Ist diese Logik richtig?

 
cloudbreaker wrote >>

Verstanden, ich verstehe genau, was Sie sagen - und entschuldige mich in aller Bescheidenheit bei Seawolf und Ruptor.

Wenn ich Aufträge normal schließe oder meinen eigenen Stealth-Stoploss verwende (der nur meine normale Funktion zum Schließen von Aufträgen aufruft), bin ich mir bewusst, dass ich Bid für OP_BUYs und Ask für OP_SELLs verwenden muss.

Bei der Eröffnung meiner Orders habe ich jedoch immer nur die Einstiegskurse als Basis für die Berechnung des Stoploss verwendet und hatte nie Probleme. Ich kann mir vorstellen, dass die Kombination aus einem lockeren Spread und einem engen Stop einen Fehler bei ungültigen Stops verursachen könnte.

Ich möchte noch hinzufügen, dass es eine ganze Reihe von Beispielen gibt, die es genauso machen wie ich.

Wenn wir keine engen Stopps haben, liegt der einzige Unterschied zwischen den beiden Techniken, den die meisten von uns erleben werden, wohl im tatsächlich verdienten oder verlorenen Geld, obwohl sich beide Auftragsarten, da sie "um den Spreadbetrag früher" gestoppt werden, gegenseitig aufheben, wenn der Spread ziemlich stabil ist.

Ist diese Logik stichhaltig?

Gute Argumente. Ich stimme zu, dass es viele andere EAs gibt, die es so machen, wie Sie es vorgeschlagen haben.

Dies veranschaulicht einige unterschiedliche Ansichten, die wir in Bezug auf Stop-Loss haben, je nachdem, wie unsere EAs funktionieren. Ich, zum Beispiel, neige dazu, meinen Stop-Loss ziemlich eng zu setzen. Ich mache mir also im Allgemeinen mehr Gedanken darüber, wo der Auftrag scheitern wird, als darüber, wie viel ich verlieren würde, wenn er scheitert. Wenn Sie jedoch mehr daran interessiert wären, was Sie verlieren (oder gewinnen) würden, wenn der Auftrag geschlossen wird, wäre es sinnvoll, alle Berechnungen auf der Grundlage des Eröffnungskurses und nicht des Schlusskurses durchzuführen. Das wird nur dann zum Problem, wenn Ihr Stop-Loss oder Take-Profit eng gesetzt ist (innerhalb weniger Pips, je nach Paar). In diesem Fall müsste der EA einige zusätzliche Überprüfungen mit MODE_STOPLEVEL durchführen (wie Sie oben vorgeschlagen haben), um sicherzustellen, dass Sie die Transaktion tatsächlich abschließen können.

Ich sprach vor allem aus einer puristischen Position, aber ich kann einige gültige Argumente für den Betrieb es beide Möglichkeiten zu sehen.

- Tovan

 
tovan

Gute Punkte. Ich stimme zu, dass es viele andere EAs da draußen gibt, die es so machen, wie Sie es vorgeschlagen haben.

Dies veranschaulicht einige unterschiedliche Ansichten, die wir auf Stop-Loss auf, wie unsere EA's arbeiten. Ich, zum Beispiel, neige dazu, meinen Stop-Loss ziemlich eng zu setzen. Ich mache mir also im Allgemeinen mehr Gedanken darüber, wo der Auftrag scheitern wird, als darüber, wie viel ich verlieren würde, wenn er scheitert. Wenn Sie jedoch mehr daran interessiert wären, was Sie verlieren (oder gewinnen) würden, wenn der Auftrag geschlossen wird, wäre es sinnvoll, alle Berechnungen auf der Grundlage des Eröffnungskurses und nicht des Schlusskurses durchzuführen. Das wird nur dann zum Problem, wenn Ihr Stop-Loss oder Take-Profit eng gesetzt ist (innerhalb weniger Pips, je nach Paar). In diesem Fall müsste der EA einige zusätzliche Überprüfungen mit MODE_STOPLEVEL durchführen (wie Sie oben vorgeschlagen haben), um sicherzustellen, dass Sie die Transaktion tatsächlich abschließen können.

Ich sprach vor allem aus einer puristischen Position, aber ich kann einige gültige Argumente für den Betrieb es beide Möglichkeiten zu sehen.

- Tovan

Tovan, ist das korrekt, denn ich erhalte auch einen Fehler 130

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Meine Ticketnummer ist ", OrderTicket(), " und meine Stop Loss-Einstellung ist ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // neuer Code
}
}
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}

if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop-Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Meine Ticketnummer ist ", OrderTicket(), " und meine Stop-Loss-Einstellung ist ", DoubleToStr(Bid-Point*TrailingStop,Digits)); // neuer Code
}

}


Hat der 130-Fehler etwas mit dem Ein- und Ausstieg zu tun - oder könnte es an einem Schlupf liegen?

 

Eigentlich scheint es, dass Sie alle ein wenig verwirrt sind. Einige von Ihnen verwechseln zwei völlig unterschiedliche Dinge.

Die zu stellenden Fragen sind:

1) Zu welchem Preis werden Buy- und Sell-TP- und SL-Aufträge ausgeführt. Bid oder Ask?

2) Welchen Preis verwenden wir zur Berechnung von TP und SL für Buy und Sell. Bid oder Ask?

tovan wrote >>

Eigentlich haben Seawolf und Ruptor recht.

Sie geben eine Long-Order zum ASK-Kurs ein und verlassen sie zum BID-Kurs, bei einer Verkaufsorder ist es umgekehrt.

//---VANGROSH --- Richtig, aber verwirrend. Es ist besser zu sagen, dass Ihre Long-Order TP oder SL ausgeführt wird, wenn Ihr TP-Preis oder SL-Preis == der BID-Preis ist. Das ist es, was Sie SEHEN, wenn Sie beobachten, wie Ihr Auftrag TP oder SL erreicht, aber das hat nichts damit zu tun, wie Sie diese Preise berechnen.

Da es sich bei einem Stop-Loss oder Take-Profit um einen Ausstieg handelt, müssen Sie den BID-Kurs verwenden, um sie für eine Long-Order zu berechnen.

//---VANGROSH--- Das ist leider falsch. Sie verwechseln das, was Sie SEHEN - welcher Preis den Ausstieg auslöst - mit dem Preis, den Sie zur Berechnung der TP- und SL-Preise verwenden.

Denken Sie einfach ein wenig darüber nach. Nehmen wir einen Kaufauftrag. Sie sind sich alle einig, dass wir zum ASK-Kurs kaufen - kein Problem. Sagen wir, der TP ist 15 Punkte bei einer Buy-Order und der Spread beträgt 5 Punkte. Wenn Sie den TP auf 15 Punkte über dem BID-Kurs setzen, beträgt Ihr TP nur 10 Punkte, weil der Spread UNTER dem ASK- und ÜBER dem BID-Kurs liegt. Es macht keinen Sinn, 15 Punkte TP aus einem Preis zu berechnen, der 5 Punkte UNTER Ihrem Einstiegspreis (ASK) liegt. Sie müssen den TP oder SL immer von dem Preis berechnen, zu dem Sie die Order eingegeben haben. ASK für BUY, BID für SELL.

Es ist ganz einfach, wenn Sie nur daran denken, zu welchem Preis Ihr TP oder SL erreicht wird. Bei einer BUY-Order, die mit dem ASK-Preis eingegeben wird, zu welchem Preis wird Ihr TP getroffen? Bei dem BID-Kurs. Wenn Ihr TP bei 1,2450 lag und Sie Ihren TP anhand des ASK-Kurses festgelegt haben, dann beginnen Sie gerade erst, den Spread zu bezahlen, wenn die ASK-Linie bei 1,2450 liegt. Erst wenn die BID-Linie bei 1,2450 liegt, wird Ihr TP erreicht und Ihr Auftrag wird mit 15 Punkten Gewinn geschlossen.

Dasselbe gilt für den SL. Wenn Ihr SL 30 Punkte beträgt, bedeutet das 30 Punkte vom Einstiegskurs entfernt. Beim Kauf ist der Einstiegskurs ASK. Wenn Sie den BID-Kurs - 30 Punkte - verwenden, schließen Sie den Spread in Ihrer SL aus, so dass Ihre tatsächliche SL 35 Punkte von Ihrem Einstiegskurs (ASK) entfernt ist, weil der BID-Kurs 5 Punkte niedriger ist (der Spread) als der ASK-Kurs. Sie erhalten 35 SL-Punkte, weil Ihr SL-PREIS jetzt 35 Punkte unter Ihrem EINGANGSPREIS liegt, der für einen Kaufauftrag gedacht war.

Ich mache das erst seit ein paar Monaten, und was mir geholfen hat, war einfach zu beobachten, zu welchem Preis TP und SL beim manuellen Handel getroffen werden, und dann habe ich bei meinem ersten EA einfach meine TP- und SL-Linien bei einem geöffneten EA-Auftrag mit dem Fadenkreuz-Tool doppelt überprüft und auch die TP- und SL-Preise bei einigen geschlossenen EA-Aufträgen überprüft, um sicherzugehen, dass die TP- und SL-Punkte exakt waren.

Das einzige Mal, dass Sie anders vorgehen müssen, ist bei einem Trailing-Stop. Für einen Kaufauftrag verwenden Sie den BID-Kurs.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Denn Sie wollen, dass Ihr TS X Punkte unter dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der BID-Preis ist.

Für den Verkauf verwenden Sie ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Weil Sie wollen, dass Ihr TS X Punkte über dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der ASK-Preis ist.

Denken Sie daran, dass es der BID-Kurs ist, der Ihre BUY TP- und SL-Aufträge schließen wird,

Und es ist der ASK-Kurs, der Ihre SELL TP- und SL-Aufträge schließen wird.

 
vangrosh:

Eigentlich scheint es, dass Sie alle ein wenig verwirrt sind. Einige von Ihnen verwechseln zwei völlig unterschiedliche Dinge.

Die zu stellenden Fragen sind:

1) Zu welchem Preis werden Buy- und Sell-TP- und SL-Aufträge ausgeführt. Bid oder Ask?

2) Welchen Preis verwenden wir zur Berechnung von TP und SL für Buy und Sell. Bid oder Ask?

Denken Sie einfach ein wenig darüber nach. Nehmen wir einen Buy-Auftrag. Sie sind sich alle einig, dass wir zum ASK-Kurs kaufen - kein Problem. Nehmen wir an, der TP liegt bei einer Buy-Order bei 15 Punkten, und der Spread beträgt 5 Punkte. Wenn Sie den TP auf 15 Punkte über dem BID-Kurs setzen, beträgt Ihr TP nur 10 Punkte, weil der Spread UNTER dem ASK- und ÜBER dem BID-Kurs liegt. Es macht keinen Sinn, 15 Punkte TP aus einem Preis zu berechnen, der 5 Punkte UNTER Ihrem Einstiegspreis (ASK) liegt. Sie müssen den TP oder SL immer von dem Preis berechnen, zu dem Sie die Order eingegeben haben. ASK für BUY, BID für SELL.

Es ist einfach, wenn Sie sich überlegen, zu welchem Preis Ihr TP oder SL erreicht wird. Bei einer BUY-Order, die Sie mit dem ASK-Kurs eingeben, bei welchem Kurs wird Ihr TP getroffen? Bei dem BID-Kurs. Wenn Ihr TP bei 1,2450 lag und Sie Ihren TP anhand des ASK-Kurses festgelegt haben, dann beginnen Sie gerade erst, den Spread zu bezahlen, wenn die ASK-Linie bei 1,2450 liegt. Erst wenn die BID-Linie bei 1,2450 liegt, wird Ihr TP erreicht und Ihr Auftrag wird mit 15 Punkten Gewinn geschlossen.

Dasselbe gilt für den SL. Wenn Ihr SL bei 30 Punkten liegt, bedeutet das 30 Punkte vom Einstiegskurs. Bei Buy ist der Einstiegskurs ASK. Wenn Sie den BID-Kurs - 30 Punkte - verwenden, schließen Sie den Spread in Ihrer SL aus, so dass Ihre tatsächliche SL 35 Punkte von Ihrem Einstiegskurs (ASK) entfernt ist, weil der BID-Kurs 5 Punkte niedriger ist (der Spread) als der ASK-Kurs. Sie erhalten 35 SL-Punkte, weil Ihr SL-PREIS jetzt 35 Punkte unter Ihrem EINGANGSPREIS liegt, der für einen Kaufauftrag gedacht war.

Ich mache das erst seit ein paar Monaten, und was mir geholfen hat, war einfach zu beobachten, zu welchem Preis TP und SL beim manuellen Handel getroffen werden, und dann habe ich bei meinem ersten EA einfach meine TP- und SL-Linien bei einem geöffneten EA-Auftrag mit dem Fadenkreuz-Tool doppelt überprüft und auch die TP- und SL-Preise bei einigen geschlossenen EA-Aufträgen überprüft, um sicher zu sein, dass die TP- und SL-Punkte genau stimmen.

Das einzige Mal, dass Sie anders vorgehen müssen, ist bei einem Trailing-Stop. Für einen Kaufauftrag verwenden Sie den BID-Kurs.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Denn Sie möchten, dass Ihr TS X Punkte unter dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der BID-Preis ist.

Für den Verkauf verwenden Sie ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Denn Sie wollen, dass Ihr TS X Punkte über dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der ASK-Preis ist.

Denken Sie daran, dass es der BID-Kurs ist, der Ihre BUY TP- und SL-Aufträge schließt,

Und es ist der ASK-Kurs, der Ihre SELL TP- und SL-Aufträge schließt.

Vangrosh

danke für den Beitrag

Können Sie mir helfen, zu verstehen

Ist das richtig?

Ich mache einen EA mit Auto-Trail


if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // TP und SL setzen
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // TP platzieren
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // check true
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // if true modify order
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\n Meine Ticketnummer ist ", OrderTicket(), " und meine Stop Loss-Einstellung ist ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // neuer Code
}
}
}
 
vangrosh:

Eigentlich scheint es, dass Sie alle ein wenig verwirrt sind. Einige von Ihnen verwechseln zwei völlig unterschiedliche Dinge.

Die zu stellenden Fragen sind:

1) Zu welchem Preis werden Buy- und Sell-TP- und SL-Aufträge ausgeführt. Bid oder Ask?

2) Welchen Preis verwenden wir zur Berechnung von TP und SL für Buy und Sell. Bid oder Ask?

Denken Sie einfach ein wenig darüber nach. Nehmen Sie einen Kaufauftrag. Sie sind sich alle einig, dass wir zum ASK-Kurs kaufen - kein Problem. Sagen wir, der TP ist 15 Punkte bei einer Buy-Order, und der Spread beträgt 5 Punkte. Wenn Sie den TP auf 15 Punkte über dem BID-Kurs setzen, beträgt Ihr TP nur 10 Punkte, weil der Spread UNTER dem ASK- und ÜBER dem BID-Kurs liegt. Es macht keinen Sinn, 15 Punkte TP aus einem Preis zu berechnen, der 5 Punkte UNTER Ihrem Einstiegspreis (ASK) liegt. Sie müssen den TP oder SL immer von dem Preis berechnen, zu dem Sie die Order eingegeben haben. ASK für BUY, BID für SELL.

Es ist einfach, wenn Sie sich überlegen, zu welchem Preis Ihr TP oder SL erreicht wird. Bei einer BUY-Order, die mit dem ASK-Kurs eingegeben wird, zu welchem Kurs wird Ihr TP getroffen? Bei dem BID-Kurs. Wenn Ihr TP bei 1,2450 lag und Sie Ihren TP anhand des ASK-Kurses festgelegt haben, dann beginnen Sie gerade erst, den Spread zu bezahlen, wenn die ASK-Linie bei 1,2450 liegt. Erst wenn die BID-Linie bei 1,2450 liegt, wird Ihr TP erreicht und Ihr Auftrag wird mit 15 Punkten Gewinn geschlossen.

Dasselbe gilt für den SL. Wenn Ihr SL 30 Punkte beträgt, bedeutet das 30 Punkte vom Einstiegskurs entfernt. Beim Kauf ist der Einstiegskurs ASK. Wenn Sie den BID-Kurs - 30 Punkte - verwenden, schließen Sie den Spread in Ihrer SL aus, so dass Ihre tatsächliche SL 35 Punkte von Ihrem Einstiegskurs (ASK) entfernt ist, weil der BID-Kurs 5 Punkte niedriger ist (der Spread) als der ASK-Kurs. Sie erhalten 35 SL-Punkte, weil Ihr SL-PREIS jetzt 35 Punkte unter Ihrem EINGANGSPREIS liegt, der für einen Kaufauftrag gedacht war.

Ich mache das erst seit ein paar Monaten, und was mir geholfen hat, war einfach zu beobachten, zu welchem Preis TP und SL beim manuellen Handel getroffen werden, und dann habe ich bei meinem ersten EA einfach meine TP- und SL-Linien bei einem geöffneten EA-Auftrag mit dem Fadenkreuz-Tool doppelt überprüft und auch die TP- und SL-Preise bei einigen geschlossenen EA-Aufträgen überprüft, um sicherzugehen, dass die TP- und SL-Punkte exakt waren.

Das einzige Mal, dass Sie anders vorgehen müssen, ist bei einem Trailing-Stop. Für einen Kaufauftrag verwenden Sie den BID-Kurs.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Denn Sie wollen, dass Ihr TS X Punkte unter dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der BID-Preis ist.

Für den Verkauf verwenden Sie ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Weil Sie wollen, dass Ihr TS X Punkte über dem Preis liegt, zu dem die Order geschlossen wird, wenn sie getroffen wird, was der ASK-Preis ist.

Denken Sie daran, dass es der BID-Kurs ist, der Ihre BUY TP- und SL-Aufträge schließen wird,

Und es ist der ASK-Kurs, der Ihre SELL TP- und SL-Aufträge schließen wird.

Vangrosh, wie ich in meiner Antwort an Tovan angedeutet habe, solange Sie genau wissen, was Sie tun, können Sie es so oder so machen. Wir sind alles andere als verwirrt.

Das heißt, wenn Sie den Einstiegskurs, das Stop-Limit des Brokers und den Spread kennen, können Sie den von Ihnen gewünschten "absoluten" Stoploss erreichen (der auch keine 130 Fehler produziert!), indem Sie ihn "relativ" entweder zum Brief- oder zum Geldkurs setzen und ihn bei Bedarf anpassen.

Ich ziehe es übrigens vor, es so zu machen, wie Sie es beschreiben.

 
cloudbreaker wrote >>

Vangrosh, wie ich schon in meiner Antwort an Tovan angedeutet habe: Solange man genau weiß, was man tut, kann man es so oder so machen. Wir sind alles andere als verwirrt.

Das heißt, wenn Sie den Einstiegskurs, das Stop-Limit des Brokers und den Spread kennen, können Sie den von Ihnen gewünschten "absoluten" Stoploss erreichen (der auch keine 130 Fehler produziert!), indem Sie ihn "relativ" entweder zum Brief- oder zum Geldkurs setzen und ihn bei Bedarf anpassen.

Ich ziehe es übrigens vor, es so zu machen, wie Sie es beschreiben.

Nun, Seawolf sagte: "Faustregel... wenn Sie auf Ask einsteigen, steigen Sie mit Bid aus, wenn Sie auf Bid einsteigen, steigen Sie mit Ask aus".

Ist das nicht verwirrend? Ich meine nicht, dass er verwirrt ist, ich meine, dass mir der Kontext, auf den er sich bezieht, nicht klar ist. Seine Faustformel ist nicht korrekt, WENN er über die Berechnung von Ausstiegen spricht. Mit "verwirrt" will ich nicht sagen, dass ihr nicht wisst, was ihr tut, oder dass ihr es nicht anders machen könnt - was ich wirklich sagen wollte, ist, dass die Art und Weise, wie die Anweisungen gegeben wurden, verwirrend war. Zum Beispiel ist das obige Zitat von Seawolf korrekt, WENN er darüber spricht, zu welchem Preispunkt Aufträge in MT aussteigen. Ich denke, für jemanden, der das gerade erst lernt, muss man sich sehr klar darüber sein, auf welchen Kontext man sich bezieht, denn es gibt zwei grundlegende Kontexte, wenn man über TP und SL lehrt.

1) Der Kontext oder die Sichtweise, die sich darauf konzentriert, zu welchem Preis (Bid oder Ask) der TP und SL einer offenen Order erreicht wird - was eines der ersten Dinge ist, die ich für den manuellen Handel lernen musste...

2) Der Kontext oder die Sichtweise, die sich NICHT auf #1 oben konzentriert, sondern darauf, welchen Preis (Bid oder Ask) wir zur Berechnung unserer TP und SL verwenden, WENN wir wollen, dass unsere TP- und SL-Preise exakt sind und den Spread einschließen.

Sehen Sie, ich bin auch ein Neuling in diesem Bereich und es ist leicht für mich und andere Neulinge, verwirrt zu werden, wenn uns Dinge in einer Weise präsentiert werden, in der der Kontext nicht sehr klar ist.

Und ich für meinen Teil wusste anfangs nicht, dass es mehr als einen Kontext gibt, in dem man TP und SL betrachten kann und viele andere Dinge, die wir verstehen müssen.

cloudbreaker schrieb>>Vangrosh, wie ich in meiner Antwort an Tovan angedeutet habe, kann man es so oder so machen, solange man genau weiß, was man tut.

Deshalb habe ich versucht, in meinem Beitrag so klar und kontextbezogen wie möglich zu sein. Menschen, die wie ich gerade erst lernen, wissen nicht genau, was sie tun, und deshalb müssen wir über die Dinge in ihrem richtigen Kontext unterrichtet werden.

Meiner Erfahrung nach wird uns oft ein Wissen unterstellt, das wir noch nicht haben. Wir müssen zuerst die Grundregeln kennen und dann einige Erfahrungen sammeln. Erst danach werden wir wissen, welche "Regeln" wir beugen oder von ihnen abweichen können.

Übrigens habe ich mich in meinem Beitrag nicht auf Sie bezogen. Ich fand, dass Ihre Antworten bei weitem am klarsten und genauesten waren. Und auch auf die Gefahr hin, dass es wie "Arschkriecherei" klingt: Wenn es darum geht, die klarsten und genauesten Antworten in diesem Forum zu bekommen, gehören Ihre Beiträge zu denjenigen, nach denen ich zuerst suche. Es gibt nur etwa 4 oder 5 Leute in diesem Forum, die ich bisher gefunden habe, die sich als beständiger und genauer erwiesen haben und von denen man sagen kann, dass sie tatsächlich mehr als nur ein bisschen Erfahrung haben.

 
vangrosh:

Nun, Seawolf sagte: "Faustregel... wenn Sie auf Ask einsteigen, steigen Sie mit Bid aus, wenn Sie auf Bid einsteigen, steigen Sie mit Ask aus".

Ist das nicht verwirrend? Ich meine nicht, dass er verwirrt ist, ich meine, dass mir der Kontext, auf den er sich bezieht, nicht klar ist. Seine Faustformel ist nicht korrekt, WENN er über die Berechnung von Ausstiegen spricht. Mit "verwirrt" will ich nicht sagen, dass ihr nicht wisst, was ihr tut, oder dass ihr es nicht anders machen könnt - was ich wirklich sagen wollte, ist, dass die Art und Weise, wie die Anweisungen gegeben wurden, verwirrend war. Zum Beispiel ist das obige Zitat von Seawolf korrekt, WENN er darüber spricht, zu welchem Preispunkt Aufträge in MT aussteigen. Ich denke, für jemanden, der das gerade erst lernt, muss man sich sehr klar darüber sein, auf welchen Kontext man sich bezieht, denn es gibt zwei grundlegende Kontexte, wenn man über TP und SL lehrt.

1) Der Kontext oder die Sichtweise, die sich darauf konzentriert, zu welchem Preis (Bid oder Ask) der TP und SL einer offenen Order erreicht wird - was eines der ersten Dinge ist, die ich für den manuellen Handel lernen musste...

2) Der Kontext oder die Sichtweise, die sich NICHT auf #1 oben konzentriert, sondern darauf, welchen Preis (Bid oder Ask) wir zur Berechnung unserer TP und SL verwenden, WENN wir wollen, dass unsere TP- und SL-Preise exakt sind und den Spread einschließen.

Sehen Sie, ich bin auch ein Neuling in diesem Bereich und es ist leicht für mich und andere Neulinge, verwirrt zu werden, wenn uns Dinge in einer Weise präsentiert werden, in der der Kontext nicht sehr klar ist.

Und ich für meinen Teil wusste anfangs nicht, dass es mehr als einen Kontext gibt, in dem man TP und SL betrachten kann und viele andere Dinge, die wir verstehen müssen.

cloudbreaker schrieb>>Vangrosh, wie ich in meiner Antwort an Tovan angedeutet habe, kann man es so oder so machen, solange man genau weiß, was man tut.

Deshalb habe ich versucht, in meinem Beitrag so klar und kontextbezogen wie möglich zu sein. Menschen, die wie ich gerade erst lernen, wissen nicht genau, was sie tun, und deshalb müssen wir über die Dinge in ihrem richtigen Kontext unterrichtet werden.

Meiner Erfahrung nach wird uns oft ein Wissen unterstellt, das wir noch nicht haben. Wir müssen zuerst die Grundregeln kennen und dann einige Erfahrungen sammeln. Erst danach werden wir wissen, welche "Regeln" wir beugen oder von ihnen abweichen können.

Übrigens habe ich mich in meinem Beitrag nicht auf Sie bezogen. Ich fand, dass Ihre Antworten bei weitem am klarsten und genauesten waren. Und auch auf die Gefahr hin, dass es wie "Arschkriecherei" klingt: Wenn es darum geht, die klarsten und genauesten Antworten in diesem Forum zu bekommen, gehören Ihre Beiträge zu denjenigen, nach denen ich zuerst suche. Es gibt nur etwa 4 oder 5 Leute in diesem Forum, die ich bisher gefunden habe, die sich als beständiger und genauer erwiesen haben und denen man ansieht, dass sie tatsächlich mehr als nur ein wenig Erfahrung haben.

Vielen Dank für das Kompliment; ich weiß das sehr zu schätzen.

Als ich sagte, wir seien nicht verwirrt, habe ich eigentlich nur für mich und Tovan gesprochen, da wir auf einer ähnlichen Wellenlänge zu operieren scheinen.

Ich bitte um Entschuldigung, falls mein Beitrag in irgendeiner Weise schroff geklungen haben sollte; das war sicher nicht beabsichtigt, und ich habe mich zu dem Zeitpunkt auch nicht so gefühlt (obwohl ich auch meine Momente habe...).

Mein allgemeiner Ansatz in diesem Forum (wenn ich nicht selbst Hilfe suche) ist es, mein Bestes zu tun, um denen zu helfen, die versuchen, eine Programmierfertigkeit zu erlernen. Ich habe wirklich keine Zeit für Leute, die wollen, dass alles für sie erledigt wird, und die mit ihrem ersten Beitrag mit dem Titel "Ich brauche einen erfolgreichen EA" im Forum ankommen. Leute wie Sie sind der Grund für mein Interesse an diesem Forum, und Sie wissen wahrscheinlich mehr über den Devisenhandel als ich.

Ein wenig Hintergrundinformationen - ich bin seit den frühen 1980er Jahren Programmierer, habe aber vor einigen Jahren aufgegeben, um als kommerzieller Hubschrauberpilot zu arbeiten. Da mein Unternehmen in diesem Jahr jedoch keine Flüge durchführt, habe ich EAs für einen Freund geschrieben, der ein junges Forschungsunternehmen besitzt. Wir verfolgen beim Handel einen Ansatz der Chaostheorie (und nicht der Marktkenntnis) und handeln mit den EAs bereits sehr profitabel im Auftrag eines bekannten Hedgefonds. Es macht mir wirklich Spaß!

Viel Glück!

 
delcor wrote >>

Vangrosh

danke für den Beitrag

können Sie mir helfen, zu verstehen

ist dies richtig

Ich mache einen EA mit Auto-Trail

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // einen TP und SL setzen}

Sie sollten Ihren Basis-TP und SL setzen, wenn Sie Ihre Order senden, oder die obige Zeile nur einmal ausführen. Wenn Sie die obige Zeile

bei jedem Tick ausführen, dann erhalten Sie auch OrderModify error 1, der auftritt, wenn der bestehende SL-Wert derselbe ist.

als den neuen - d.h. der Preis hat sich noch nicht geändert - SL ist derselbe wie vorher.
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // TP setzen

{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // check true

Das sieht gut aus. Und ich denke, was Sie tun, indem Sie einen Punkt (+Point)hinzufügen , ist eine gute Idee. Ich mache das Gleiche

aber an einer anderen Stelle und auf eine andere Art und Weise, aber das ist, um ein anderes Problem zu beheben, ein Problem, das man bekommen kann, wenn der Vergleich von Doubles nicht richtig funktioniert, also fügt man

Sie fügen also einen Punkt hinzu, um sicherzustellen, dass der Preis größer oder kleiner ist - andernfalls wird Ihr Trailing-Stop manchmal nicht ausgeführt.

Der Rest scheint korrekt zu sein.
{

if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // wenn wahr, Order modifizieren
Print("Fehler_Ändern - ",GetLastError());
else str=StringConcatenate("\n Meine Ticketnummer ist ", OrderTicket(), " und meine Stop Loss Einstellung ist ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // neuer Code
}
}
}

Hier ist das Beispiel für den Trailing-Stop aus dem MQ EA MACD Sample.mq4

              // check for trailing stop
              if( TrailingStop>0)  
              {                 
                 if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                    if((OrderStopLoss()>(Ask+Point* TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }

Ich habe jedoch festgestellt, dass ich bei diesem Code aufgrund des bekannten Problems, dass beim Vergleich von Doppelwerten wie oben die Klausel "größer als >" manchmal als WAHR ausgewertet wird, Fehler erhalte

auch wenn die Preise genau gleich sind - Sie drucken() die Preise und sie sind gleich. Sie können eine Suche nach "compairing doubles" durchführen, um die Details zu erfahren. Es gibt Umgehungsmöglichkeiten wie die Funktion CompareDoubles() in stdlib.mq4 (im Ordner libraries) oder die Verwendung von NormalizeDouble() an Stellen, an denen sie nicht benötigt wird, aber ich habe festgestellt, dass in diesem Fall das einfache Hinzufügen eines Punktes, wie Sie es getan haben, eine gute Lösung ist. Aber ich habe nicht getestet, wie Sie es tun, so dass ich nicht sicher bin, ob es richtig ist, aber es scheint ok. Ich werde Ihnen den Code geben, den ich in meinem EA im nächsten Beitrag verwende.

Grund der Beschwerde: