Wie programmiert man? - Seite 266

 
ixbone:
Hallo zusammen,

Ich möchte alle Aufträge (Kauf und Verkauf) eines Paares auf magische Weise sammeln, und wenn sie einen Break-Even erreichen, sollen alle Aufträge geschlossen werden.

Jeder Hinweis ist sehr willkommen, danke

extern bool PairBreakeven=true;// Breakeven pro Paar alle Orders desselben Paares/Magic

extern double Pairbreakevengain=6;// Gewinn in Pips, der erforderlich ist, um den Break-Even zu erreichen

extern double Pairbreakeven=3;// Break Even, Order geschlossen, 3 Pip Gewinn/Verlust

double Pairmovebreakeven;

if(PairBreakeven==true){

if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);

CloseBuyOrders(Magic);

CloseSellOrders(Magic);

}

void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){

RefreshRates();

if(OrdersTotal()>0){

for(int i=OrdersTotal();i>=0;i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){

zurück;

}

}

}

}

int CloseBuyOrders(int Magic){ //op_sell ist ähnlich

int total=BestellungenGesamt();

for(int cnt=Gesamt-1;cnt>=0;cnt--){

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){

if(OrderType()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(),Bid,3*mt);

}

}

}

return(0);

}

Das Hauptproblem bei diesem Code liegt in der BE-Funktion, die sich nie wirklich bewegt und keine Aktion ausführt. Wenn Sie Ihre Absicht nicht in Worte fassen, kann ich anhand des Codes nicht wirklich erkennen, was Sie hier zu tun versuchen.

Möchten Sie, dass der Code alle Aufträge in Ihrem Konto erkennt, die einen Stop-Loss=Auftragseröffnungskurs haben, und sie alle schließt? Die eigentliche Break-Even-Aktion wird also von einem anderen EA durchgeführt? Würde gerne helfen, kann aber nicht herausfinden, was Sie tun möchten.

 
christinaLi:
Das Hauptproblem dieses Codes liegt in der BE-Funktion, die sich nie wirklich bewegt und keine Aktion ausführt. Wenn Sie Ihre Absicht nicht in Worte fassen, kann ich aus dem Code nicht wirklich erkennen, was Sie hier zu tun versuchen. Möchten Sie, dass der Code alle Orders in Ihrem Konto erkennt, die einen Stop Loss=Order-Eröffnungskurs haben, und sie alle schließt? Die eigentliche Break-Even-Aktion wird also von einem anderen EA durchgeführt? Ich würde gerne helfen, kann aber nicht herausfinden, was Sie tun wollen.

christinaLi,

sorry, für meine Missverständnisse.

-Ich möchte alle Orders eines Paares durch Magie sammeln und die Gewinne von allen Orders zusammenfassen, unabhängig von Kauf, Verkauf, tp, sl, Beispiel: wir haben 8 Kauf & Verkauf Orders, Gewinn zusammengefasst ist 6 Pips // extern double Pairbreakevengain=6;// Gewinn in Pips erforderlich, um den Break Even zu ermöglichen

-wenn der Gewinn +6 Pips für alle Orders eines Paares (Kauf&Verkauf) ist, sollten alle Orders (Kauf/Verkauf) sl stoploss auf currentprice -3 gesetzt werden //extern double Pairbreakeven=3;// break even, order closed, 3 pip profit/slippage

-wenn Pairbreakevengewinn vom Gewinn aller Orders eines Paares abfällt Beispiel: 8 gemischte Kauf/Verkauf Orders Gewinn ist Summe 6 zurück auf 3, alle Orders werden geschlossen

ich habe ein korrekt funktionierendes Modul für einen einzelnen Order-Breakeven und ich habe versucht, es selbst zu modifizieren, mir fehlt es an mt4-Code-Kenntnissen, vor vielen, vielen Jahren habe ich Assembler gelernt...

Soll ich die Funktion für eine einzelne Breakeven-Order posten?

Danke für die Hilfe

IX

 

Hallo, IX,

ich weiß, was du jetzt vorhast. Es ist machbar.

Die Sache wird dadurch etwas kompliziert, dass Sie gleichzeitig Käufe und Verkäufe haben könnten. Denn wenn Sie von "aktuellem Preis" sprechen, bedeutet das für Käufe Bid, für Verkäufe Ask, denn nur das sind realistische Preise, um Aufträge zu schließen. Sie sehen also, dass zu jedem beliebigen Zeitpunkt, wenn Sie den Stop-Loss für Ihre Aufträge anpassen, Käufe und Verkäufe einen Differenzpreis erhalten. Wenn Ihr Spread nicht konstant ist, besteht eine große Chance, dass Ihre Aufträge nicht gleichzeitig geschlossen werden, manchmal ist es möglich, dass die Hälfte Ihrer Aufträge nicht geschlossen wird.

Ich denke, die gute Art und Weise, dies zu tun ist nicht tatsächlich zu bewegen den Stop-Loss, stattdessen wird der EA eine Erinnerung aktivieren, sobald insgesamt 6 Pips Gewinn erreicht ist, dann einfach schließen Sie alle Aufträge auf dem Markt, während insgesamt Gewinn fällt auf 3 Pips. In diesem Fall zwingt EA zum Schließen von Aufträgen, sie werden nicht von MT4 gestoppt.

 
christinaLi:
Hallo, IX,

Ich weiß, was Sie jetzt vorhaben. Es ist machbar.

Die Dinge werden durch die Tatsache, dass Sie gleichzeitig Käufe und Verkäufe tätigen können, etwas kompliziert. Denn wenn Sie von "aktuellem Preis" sprechen, bedeutet das für Käufe Bid, für Verkäufe Ask, denn nur das sind realistische Preise, um Aufträge zu schließen. Sie sehen also, dass zu jedem beliebigen Zeitpunkt, wenn Sie den Stop-Loss für Ihre Aufträge anpassen, Käufe und Verkäufe einen Differenzpreis erhalten. Wenn Ihr Spread nicht konstant ist, gibt es viele Chancen, dass Ihre Aufträge nicht zur gleichen Zeit geschlossen werden, manchmal ist es möglich, dass die Hälfte Ihrer Aufträge nicht geschlossen wird.

Ich denke, der gute Weg, dies zu tun, ist nicht tatsächlich den Stop-Loss zu verschieben, stattdessen wird der EA einen Speicher aktivieren, sobald insgesamt 6 Pips Gewinn erreicht ist, dann einfach schließen Sie alle Aufträge am Markt, während insgesamt Gewinn fällt auf 3 Pips. In diesem Fall zwingt EA zum Schließen von Aufträgen, sie werden nicht von MT4 gestoppt.

Hallo christinaLi,

ich stimme dir zu 100% zu, es ist zu kompliziert, ich verstehe, was du meinst, vielleicht ist eine Paar(basket)-Berechnung ohne Verschiebung eines Stoploss die Lösung, wie:

- alle Orders pro Paar und Magie auswählen

- fasse den Gewinn aller Aufträge zusammen

- wenn die Gewinnsumme = 6pips ist

- schließe alle Orders, wenn kein Slippage auftritt, ist Breakeven 6pips "Gewinn", wenn Slippage 3pips ist das Ergebnis für Breakeven 3pips "Gewinn"

1) der Vorteil ist: überhaupt keine Probleme

2) Nachteil: kein (3pips) Spielraum für alle Orders, wenn ich 7 gehedgte Kauf- und 6 Verkaufs-Orders habe, wenn die eine Kauf-Order um 6 Pips steigt, werden alle Orders geschlossen, gibt es eine Option, alle Orders im Speicher als geschlossen zu markieren, wenn 6 Pips erreicht werden (breakeven=true) durch einen Rückgang von 3pips (6-3= 3pips Gewinn) (breakevencloseorders=true)?

Die abgesicherten Orders 7buy und 6sell können mit #1 nicht über 6 Pips steigen, sie werden immer geschlossen.

Bei #2 sind 6 Pips nur eine Aktivierungsmarke, wenn sie auf 3 Pips fallen, werden alle Orders geschlossen, wenn sie über 6 Pips steigen, z.B. auf 15 Pips, gibt es einen Spielraum von +3 Pips bis 15 Pips, was zu 12 Pips Gewinn führt

Spread wird zu diesem Zeitpunkt nicht berechnet! denn 7buys & 6sells summieren sich mit 2pips Spread auf 26pips, um den Break-Even "0" für die eine Kauforder zu haben und 32 pips mit #1 und 29 pips mit #2 für die eine Kauforder haben zu müssen - liege ich richtig?

Danke für Ihre Vorschläge

IX

 
ixbone:
Hallo christinaLi,

Ich stimme zu 100% zu, es ist zu kompliziert, ich verstehe was Sie meinen, vielleicht ist eine Paar(Korb)-Berechnung ohne Stoploss die Lösung, wie:

- alle Aufträge pro Paar und Magie auswählen

- fasse den Gewinn aller Aufträge zusammen

- wenn die Gewinnsumme = 6pips ist

- schließe alle Orders, wenn kein Slippage auftritt, ist Breakeven 6pips "Gewinn", wenn Slippage 3pips ist das Ergebnis für Breakeven 3pips "Gewinn"

1) der Vorteil ist: überhaupt keine Probleme

2) Nachteil: kein (3pips) Spielraum für alle Orders, wenn ich 7 gehedgte Kauf- und 6 Verkaufs-Orders habe, wenn die eine Kauf-Order um 6 Pips steigt, werden alle Orders geschlossen, gibt es eine Option, alle Orders im Speicher als geschlossen zu markieren, wenn 6 Pips erreicht werden (breakeven=true) durch einen Rückgang von 3pips (6-3= 3pips Gewinn) (breakevencloseorders=true)?

Die abgesicherten Orders 7buy und 6sell können mit #1 nicht über 6 Pips steigen, sie werden immer geschlossen.

Bei #2 sind 6 Pips nur eine Aktivierungsmarke, wenn sie auf 3 Pips fallen, werden alle Orders geschlossen, wenn sie über 6 Pips steigen, z.B. auf 15 Pips, gibt es einen Spielraum von +3 Pips bis 15 Pips, was zu 12 Pips Gewinn führt

Spread wird zu diesem Zeitpunkt nicht berechnet! denn 7buys & 6sells summieren sich mit 2pips Spread auf 26pips, um den Break-Even "0" für die eine Kauforder zu haben und 32 pips mit #1 und 29 pips mit #2 für die eine Kauforder haben zu müssen - liege ich richtig?

Danke für Ihre Vorschläge

IX

Ich denke, Sie haben mich missverstanden, was Sie wollen, kann genau erreicht werden, nur keine tatsächliche Änderung des Stop Loss. Ich werde heute etwas Zeit finden, um den Code zu erstellen und für Sie zu demonstrieren. Christina

 
ixbone:
Hallo christinaLi,

Ich stimme zu 100% zu, es ist zu kompliziert, ich verstehe was Sie meinen, vielleicht ist eine Paar(Korb)-Berechnung ohne Stoploss die Lösung, wie:

- alle Aufträge pro Paar und Magie auswählen

- fasse den Gewinn aller Aufträge zusammen

- wenn die Gewinnsumme = 6pips ist

- schließe alle Orders, wenn kein Slippage auftritt, ist Breakeven 6pips "Gewinn", wenn Slippage 3pips ist das Ergebnis für Breakeven 3pips "Gewinn"

1) der Vorteil ist: überhaupt keine Probleme

2) Nachteil: kein (3pips) Spielraum für alle Orders, wenn ich 7 gehedgte Kauf- und 6 Verkaufs-Orders habe, wenn die eine Kauf-Order um 6 Pips steigt, werden alle Orders geschlossen, gibt es eine Option, alle Orders im Speicher als geschlossen zu markieren, wenn 6 Pips erreicht werden (breakeven=true) durch einen Rückgang von 3pips (6-3= 3pips Gewinn) (breakevencloseorders=true)?

Die abgesicherten Orders 7buy und 6sell können mit #1 nicht über 6 Pips steigen, sie werden immer geschlossen.

Bei #2 sind 6 Pips nur eine Aktivierungsmarke, wenn sie auf 3 Pips fallen, werden alle Orders geschlossen, wenn sie über 6 Pips steigen, z.B. auf 15 Pips, gibt es einen Spielraum von +3 Pips bis 15 Pips, was zu 12 Pips Gewinn führt

Spread wird zu diesem Zeitpunkt nicht berechnet! denn 7buys & 6sells summieren sich mit 2pips Spread auf 26pips, um den Break-Even zu erreichen muss "0" für den einen Kaufauftrag haben und 32 pips mit #1 und 29 pips mit #2 für den einen Kaufauftrag haben - liege ich richtig?

Danke für Ihre Vorschläge

IX

Eigentlich, jetzt habe ich es ein bisschen mehr gedacht, was Sie gefragt haben, kann nicht getan werden.

Das ist ziemlich interessant, ich habe eine Menge ähnlicher Funktionen kodiert, man kann BE intern von Dollar-Betrag oder Pips berechnen, aber sie sind alle der gleiche Auftragstyp. Es kann nicht mit beiden Käufen und Verkäufen getan werden. Wenn Sie z.B. x Käufe haben (sie können unterschiedliche Lot-Größen haben), ist irgendwann der addierte Dollar-Gewinn 0, so dass Sie jetzt BE haben. Wenn es sich dann um Käufe handelt und Sie 3 Pips Gewinn erzielen möchten, addieren Sie einfach 3 Pips zum aktuellen Bid, und schon haben Sie ein Kursziel. Bei allen Verkäufen ziehen Sie 3 Pips vom aktuellen Ask ab, und schon haben Sie ein Kursziel. Aber wenn Sie sowohl Käufe als auch Verkäufe haben, was machen Sie dann? addieren oder subtrahieren?

Wie definieren Sie, dass Sie in der folgenden Situation 3 Pips Gewinn haben? 1 Lot kaufen bei 1,4100, 2 Lot verkaufen bei 1,4150?

Die einzige Sache, wenn getan werden kann, ist Dollar Gewinn, nicht Pip Gewinn ich denke.

 
christinaLi:
Ich glaube, Sie haben mich missverstanden, was Sie wollen, kann genau erreicht werden, nur keine tatsächliche Änderung des Stop Loss. Ich werde heute etwas Zeit finden, um den Code zu erstellen und ihn Ihnen zu demonstrieren. Christina

Danke, Christina,

ich schätze dein Wissen sehr!

Michael

 
christinaLi:
Jetzt, wo ich etwas mehr darüber nachgedacht habe, kann man das, was Sie gefragt haben, nicht machen.

Das ist ziemlich interessant, ich habe eine Menge ähnlicher Funktionen kodiert, Sie können BE intern von Dollar-Betrag oder Pips zu berechnen, aber sie sind alle den gleichen Auftragstyp. Es kann nicht mit beiden Käufe und Verkäufe getan werden. Wenn Sie z.B. x Käufe haben (sie können unterschiedliche Lot-Größen haben), ist irgendwann der addierte Dollar-Gewinn 0, so dass Sie jetzt BE haben. Wenn es sich dann um Käufe handelt und Sie 3 Pips Gewinn erzielen möchten, addieren Sie einfach 3 Pips zum aktuellen Bid, und schon haben Sie ein Kursziel. Bei allen Verkäufen ziehen Sie 3 Pips vom aktuellen Ask ab, und schon haben Sie ein Kursziel. Aber wenn Sie sowohl Käufe als auch Verkäufe haben, was machen Sie dann? addieren oder subtrahieren?

Wie definieren Sie, dass Sie in der folgenden Situation 3 Pips Gewinn haben? 1 Lot Kauf bei 1,4100, 2 Lot Verkauf bei 1,4150?

Das Einzige, was möglich ist, ist die Verwendung des Dollar-Gewinns, nicht des Pip-Gewinns, denke ich.

Christina,

Addieren oder subtrahieren spielt keine Rolle, da die Summe der Lots von 7 Kauf- und 6 Verkaufsaufträgen ausreicht, um normale Gewinne zu erzielen. BE für alle Aufträge eines Paares sollte als Sicherheitsfunktion funktionieren:

Mit dieser Absicherungsfunktion sparen Sie eine Menge Marge, mit Schritten zwischen wie 50 Pips, Ihr Konto kann nicht abgewischt werden, wenn normale Gewinne nicht erreicht werden, sollte BE alle Aufträge schließen und mit einem neuen Signal und ersten Auftrag beginnen.

Für Kauf-/Verkaufssignale verwende ich Preisaktionen.

Dateien:
unbenannt.png  7 kb
 
ixbone:
Christina,

Addieren oder subtrahieren spielt keine Rolle, da die Summe von 7 Kauf- und 6 Verkaufsaufträgen ausreicht, um normale Gewinne zu erzielen. BE sollte für alle Aufträge eines Paares als Sicherheitsmerkmal dienen:

Mit dieser Absicherungsfunktion sparen Sie eine Menge Margin, mit Schritten zwischen etwa 50 Pips, Ihr Konto kann nicht abgewischt werden, wenn normale Gewinne nicht erreicht werden, sollte BE alle Aufträge schließen und mit einem neuen Signal und ersten Auftrag beginnen.

Für Kauf-/Verkaufssignale verwende ich Preisaktionen.

Zusätzliche Informationen:

- Ich handele 8-10 Majors gleichzeitig zur Diversifizierung (teilweise Korrelation), daher ist es besser, 10 Paare mit 0,01 zu handeln als ein Paar mit 0,1

- Ich verdopple meine Schritte zwischen den Aufträgen um 25, 50, 100, 200, 400,

Beispiel:

1. Auftrag 1.5000

2. Auftrag 1,5025

3..........1.050

4..........1.100

und so weiter

 

Ich möchte mit dieser Funktion, die Sie sprechen zu helfen, aber es scheint, ich kann nicht einfach herausfinden, Ihre Logik. Das hat wirklich nichts mit der anderen Logik der Strategie zu tun.

Ich möchte einfach wissen, diese.

Wenn Sie 1 Los kaufen bei 1,4110 und 2 Los verkaufen bei 1,4200. Zu welchem Preis Sie denken, Sie haben 6 Pips Gewinn?