Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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())
{wenn (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // einen TP und SL setzen
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // TP setzen
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // true prüfen
{
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, was ich in einem anderen Beitrag geschrieben habe, um den unterschiedlichen Ansatz zu erklären.
>>Hier ist eine einfache Lösung, indem man überprüft, ob der neue Stoploss-Kurs mindestens 1 Punkt oder mehr als der alte Stoploss ist. Für eine Verkaufsorder machen Sie es einfach umgekehrt.
Hier ist die vollständige Funktion, die ich verwende. Jetzt, wo ich darüber nachdenke, hätte ich einen besseren Var-Namen als nextStopLoss verwenden können, und ich sollte auch eine Fehlerprüfung in OrderModify() einbauen.
Auch meine Trailing Stop-Funktion ist in einem EA, der mehrere Aufträge gleichzeitig geöffnet haben kann, deshalb hat sie diese Parameter, damit ich den Trailing Stop für mehrere Aufträge gleichzeitig aktualisieren kann.
Dann habe ich in meiner start()-Funktion:
Ich habe die anderen Funktionsaufrufe dort belassen, damit Sie sehen können, dass ich meinen Code gerne so weit wie möglich in spezifische Funktionen aufteile. Das macht die Dinge viel einfacher.
Viel Glück mit deinem EA.
Hier ist, was ich in einem anderen Beitrag geschrieben habe, um den unterschiedlichen Ansatz zu erklären.
>>Hier ist eine einfache Lösung, indem man einfach überprüft, ob der neue Stoploss-Kurs mindestens 1 Punkt oder mehr als der alte Stoploss-Kurs beträgt. Für einen Verkaufsauftrag machen Sie es einfach umgekehrt.
Hier ist die vollständige Funktion, die ich verwende. Jetzt, wo ich darüber nachdenke, hätte ich einen besseren Var-Namen als nextStopLoss verwenden können, und ich sollte auch eine Fehlerprüfung in OrderModify() einbauen.
Auch meine Trailing Stop-Funktion ist in einem EA, der mehrere Aufträge gleichzeitig geöffnet haben kann, deshalb hat sie diese Parameter, damit ich den Trailing Stop für mehrere Aufträge gleichzeitig aktualisieren kann.
Dann habe ich in meiner start()-Funktion:
Ich habe die anderen Funktionsaufrufe dort belassen, damit Sie sehen können, dass ich meinen Code gerne so weit wie möglich in spezifische Funktionen aufteile. Das macht die Dinge viel einfacher.
Viel Glück mit Ihrem EA.
Danke - das sieht gut aus
also platzieren Sie Ihre start() Funktion am Ende des EAs
Ich habe auch ein Problem mit dem schrecklichen Fehler. Die Sache ist die, dass ich weder Stop Loss noch Take Profit habe, es gelingt einfach nicht, die Pending Order zu platzieren, viele Pips vom Markt entfernt, wo es kein Problem geben sollte...
Problem mit good'ole 130 ist, dass es anzeigt, (einer) eine Klasse oder Gruppe von Fehlern und nicht dazu führen, dass man eine sofortige Lösung.
Sie können sogar ein Problem beheben und es ist immer noch da
Das Einzige, was hier auftritt, ist ein Tippfehler?
Vielleicht geben Sie ein Buy Limit über Ask ein, obwohl Sie eine Buy Stop Order beabsichtigten?
FWIW
-BB-
Das Problem mit der guten alten 130 ist, dass sie eine Klasse oder Gruppe von Fehlern anzeigt und nicht zu einer sofortigen Lösung führt.
Man kann sogar ein Problem beheben und es ist immer noch da
Das Einzige, was hier auftritt, ist ein Tippfehler?
Vielleicht geben Sie ein Buy Limit über Ask ein, obwohl Sie eine Buy Stop Order beabsichtigten?
FWIW
-BB-
Ich habe eine Funktion, die den Operationstyp auswählt:
etwa so:
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: Eröffnungsverkauf auf Level 2 für Pylon 0 @ 0.8024 bei Bid = 0.8016
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: OrderSend Fehler 130
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: ReliableOrderSend error : 130 : Ungültige Stops.
Hallo TheEconomist
nur ein paar kurze Bemerkungen...
1. Sehen Sie keine normalisiert auf ToCompare, es sei denn, WhatOperation() ist garantiert, norm'd tatsächlich gegeben haben.
2. Double comps haben Probleme - z.B. 'Conditional Statement failure... [Am Ende der Weisheit] if ( 1.4225 > 1.4225) is NOT TRUE!!!!!!'
3. Befolgen Sie die Anleitung in https://book.mql4.com/appendix/limits
Mit freundlichen Grüßen
Ich habe diesen Beitrag in der Hoffnung studiert, meinen Fehler in 'Quick Question' mit 130 zu lösen. Die Funktion zum Senden von Aufträgen ist vorhanden, ebenso wie die Journaleinträge mit der Druckfunktion, weiß jemand von euch, was los ist?
Vielen Dank!
Bauer Junge
.
wie gesehen auf .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP müssen mindestens StopLevel-Punkte vom Bid entfernt sein
Siehe unten (**)
2. ACCTxx = NormalizeDouble(Ask ..(..), Digits);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Print ("Stop Loss Value",DoubleToString( ACCTSL,Digits),", stopLoss=",stopLoss);
Print ("Take Profit Value", DoubleToString(ACCTTP,Dig its),", takeProfit=",takeProfit);
Warum DoubleToString()? Print() zeigt nur VIER ZIFFERN an
Btw, ich würde auch irgendwo mindestens einmal Print("MyDig=",MyDig); Warum? kein Weg kann Sie dann haben, um es zu kümmern. Klingt vielleicht kleinlich, aber du wärst erstaunt, wie viel Spaß man mit so einfachen Dingen haben kann!
5. ALLE Ihre Probleme können leicht gelöst werden, wenn Sie alle verfügbaren Informationen zur Hand haben und diese anzeigen.
Dann können Sie mit dem guten alten Papier + Bleistift sehen, wo Missverständnisse sind.
(**)
Bezug: https://book.mql4.com/appendix/limits
StopLevel Minimum Distance Limitation.
Eine Handelsoperation wird nicht ausgeführt, wenn eine der folgenden Bedingungen gestört ist.
.
wie gesehen auf .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP müssen mindestens StopLevel Punkte vom Bid entfernt sein
Siehe unten (**)
2. ACCTxx = NormalizeDouble(Ask ..(..), Digits);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Print ("Stop Loss Value",DoubleToString( ACCTSL,Digits),", stopLoss=",stopLoss);
Print ("Take Profit Value", DoubleToString(ACCTTP,Dig its),", takeProfit=",takeProfit);
Warum DoubleToString()? Print() zeigt nur VIER ZIFFERN an
Btw, ich würde auch irgendwo mindestens einmal Print("MyDig=",MyDig); Warum? kein Weg kann Sie dann haben, um es zu kümmern. Klingt vielleicht kleinlich, aber du wärst erstaunt, wie viel Spaß man mit so einfachen Dingen haben kann!
5. ALLE Ihre Probleme können leicht gelöst werden, wenn Sie alle verfügbaren Informationen zur Hand haben und diese anzeigen lassen.
Dann können Sie mit dem guten alten Papier und Bleistift sehen, wo die Missverständnisse liegen.
(**)
Bezug: https://book.mql4.com/appendix/limits
StopLevel Minimum Distance Limitation.
Eine Handelsoperation wird nicht ausgeführt, wenn eine der folgenden Bedingungen gestört ist.
Ich kann wirklich nicht sagen, was los ist und warum das passiert
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: OrderSend (Trender Beta Test ) schlug mit Fehler #130 fehl
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: MyDig=10
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Take Profit Wert1.43155, takeProfit=110
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Stop Loss Wert1.42255, stopLoss=200
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Bid=1.44255, Ask=1.44229
Ich kann wirklich nicht sagen, was los ist und warum das passiert
Es ist wirklich an der Zeit, den gesamten Code zu zeigen. Wenn Sie zögern, können Sie PM verwenden.
Ich sehe, Sie haben TP niedriger als Bid