automatische Funktion zur Berechnung der Losgröße? - Seite 2

 
Das ist Gold wert. Hat mir Stunden an Arbeit erspart. Du bist der Mann!
 

Viel Spaß... aber berauben Sie sich nicht des Vertrauens, das Sie haben, wenn Sie Ihren eigenen Code erstellen und somit genau wissen, wie er funktioniert. Die Verwendung von bereits existierendem Code ist ein guter Weg, um Ihr Wissen auf eine Art und Weise zu verbessern, bei der Sie sich selbst an den Stiefeln hochziehen". Ich wäre nicht hier, wenn ich in meinen frühen Tagen keinen Code gehabt hätte, den ich als Beispiel verwenden konnte. Das ist für alles andere, was Sie tun, von großem Nutzen.

 

@Phillip

Was hältst du davon?

tradeVolume = AccountFreeMargin() * risk/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );

if(tradeVolume<MarketInfo(Symbol(),MODE_MINLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MINLOT);

if(tradeVolume>MarketInfo(Symbol(),MODE_MAXLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MAXLOT);

res=OrderSend(Symbol(),OP_BUY,tradeVolume,Ask,3,Ask - 0.2,Ask + 0.4,"",MAGICID,0,Red);

 
Ricotter:

tradeVolume = AccountFreeMargin() * risk/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );


Ohne es persönlich getestet zu haben, um die Mathematik zu bestätigen, aber unter der Annahme, dass die Mathematik korrekt ist, sieht das richtig aus, vorausgesetzt, Sie wenden es nur auf Währungspaare an, bei denen die Gegenwährung auch die Kontostückelung ist.

Wenn Ihr Konto z. B. auf USD basiert, sollten Sie diese Methode zur Berechnung des Handelsvolumens nur auf Währungspaare mit USD als Gegenwährung anwenden - EURUSD, GBPUSD, usw.

In meinen Codes wird dieser Währungspaartyp als "Typ 2" bezeichnet.

Die Berechnung wird fehlerhaft sein, wenn Sie sie auf ein Symbol anwenden, das den Nennwert des Kontos als Basis hat (z.B. USDJPY, wenn das Konto auf USD basiert). Ebenso ist die Berechnung fehlerhaft, wenn sie auf ein Cross angewendet wird.

Schauen Sie sich die Funktion SymboType() in der Include-Datei "Analyze Currency Symbol" an, die in meinem anderen Beitrag enthalten war. Der kommentierte Header-Abschnitt erklärt die Grundlage für die verschiedenen Symboltypen und warum Sie Equity at Risk und Volumensize (Losgröße) je nach Symboltyp unterschiedlich berechnen müssen.

Aber wenn Ihr Plan ist es, nur diese EURUSD und GBPUSD Typ Paare handeln dann Ihr Code sieht gut zu gehen!
 

Hallo Phillip... du erinnerst dich vielleicht daran, dass ich in einem meiner früheren Beiträge sagte: "Klingt so, als hätte der Code einige Probleme mit JPY-Paaren gehabt. Wurde das behoben?". Nun, ich glaube, dieses Problem ist bei mir wieder aufgetaucht. Ich habe Ihre Routine korrekt (ich bin mir ziemlich sicher) in meinen EA eingebaut und ich habe mein MaxPercentEquityAtRisk= 1.0 (1 Prozent) gesetzt. Das Eigenkapital meines Demokontos liegt bei etwa 2300 US-Dollar, so dass ich bereit bin, bei jedem Handel etwa 23 US-Dollar zu riskieren. Mein EA verwendet gleich große Stop-Losses und Gewinnziele - wenn ich also $23 für einen Handel riskiere, strebe ich einen Gewinn von $23 an. Wie auch immer, mein EA hat gestern Abend 2 Trades generiert:

(1) KAUFEN EUR/JPY, 9,8 Pips Stoploss und 9,8 Pips Gewinnziel. Ihre Routine berechnete eine Losgröße von 0,80 Lots (viel zu groß) und der Handel führte zu einem 10-Pips-Gewinn von 96,91 $.

(2) BUY NZDJPY, 16,3 Pips Stoploss und 16,3 Pips Gewinnziel. Ihre Routine berechnete eine Lotgröße von 0,28 Lots und der Handel resultierte in einem Verlust von -$56,56.


Mir scheint, dass diese beiden Trades mir ungefähr einen Gewinn von $23 oder einen Verlust von $23 beschert hätten, da ich nur 1% meines $2300 Eigenkapitals riskiert habe, oder?


Vielen Dank!

Shawn

 

Das könnte Phillp helfen - hier ist das Protokoll der Druckanweisungen Ihres Codes, kurz nachdem er die Losgrößen für die beiden oben genannten Aufträge berechnet hat:


05:14:56 EURJPY,H1: BUY - EURJPY Max EquityAtRisk = $21.99 und Max Lotsize = 0.8085
05:14:56 EURJPY,H1: BUY - EURJPY Current EquityAtRisk = $21.76 und Current Lotsize = 0.8
05:14:56 EURJPY,H1: BUY - EURJPY MarketInfo(MODE_STOPLEVEL) = 30.00000
05:14:56 LibOrderReliable EURJPY,H1: erfolgreich geladen
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1:
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: Versuchter BUY STOP 0.80000000 lots @114.78700000 sl:114.68900000 tp:114.88500000



09:02:36 NZDJPY,H1: BUY - NZDJPY Max EquityAtRisk = $23.29 und Max Lotsize = 0.2814
09:02:36 NZDJPY,H1: BUY - NZDJPY Current EquityAtRisk = $23.18 und Current Lotsize = 0.28
09:02:36 NZDJPY,H1: BUY - NZDJPY MarketInfo(MODE_STOPLEVEL) = 70.00000
09:02:36 LibOrderReliable NZDJPY,H1: erfolgreich geladen
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: Attempted BUY STOP 0.28000000 lots @64.29700000 sl:64.13400000 tp:64.46000000
09:02:37 LibOrderReliable NZDJPY,H1: open #155492665 buy stop 0.28 NZDJPY at 64.297 sl: 64.134 tp: 64.460 ok
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: Ticket #155492665: Erfolgreiche BUY STOP Order platziert, Details folgen.
09:02:37 LibOrderReliable NZDJPY,H1: #155492665 2010.11.04 13:02 buy stop 0.28 NZDJPY 64.297 64.134 64.460 64.197 0.00 0.00 0.00 NZDJPY73650016 73650016
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:


... sieht so aus, als ob es die Max EquityAtRisk-Zahl gut berechnet... aber diese Losgrößen führen zu Gewinnen/Verlusten, die viel größer sind als mein gewünschtes Risiko von 1% des Eigenkapitals.


Danke

Shawn

 

Was ist Ihr Broker?

Bei FXDD erhalte ich bei der Eingabe dieser Stop-Orders eine Lotsize von 0,15 für den EURJPY (@25,66 EaR)

2010.11.04 16:05:39 Assisted_Order_Script_2010.11.01 EURJPY,Daily: open #95896902 buy stop 0.15 EURJPY at 114.827 sl: 114.689 tp: 114.885 ok<br / translate="no"> 2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Daily: versuchter OP_BUYSTOP 0.15000000 Lots @114.82700000 sl:114.68900000 tp:114.88500000
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Daily: Current EquityAtRisk = $25.66 und Current Lotsize = 0.15 und Profit Target = $10.78 für ein 0.4:1 Profit:Loss Verhältnis
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Täglich: Maximal erlaubtes EquityAtRisk = $25.84 und maximal berechnete Lotsize = 0.1511
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Daily Eingaben: Order_Type="BUY STOP"; OpenBidPrice=114.787; StopLossBidPrice=114.689; TakeProfitBidPrice=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=false;

Bei IBFX erhalte ich eine Lotsize von 0,16 mit einem EaR von $26,77 (größeres Startkapital auf dem Konto)

2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: open #94468219 buy stop 0.16 EURJPY bei 114.824 sl: 114.689 tp: 114.885 ok
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: versuchter OP_BUYSTOP 0.16000000 Lots @114.82400000 sl:114.68900000 tp:114.88500000
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: Aktuelles EquityAtRisk = $26.77 und Aktuelle Lotsize = 0.16 und Profit Target = $12.10 für ein 0.5:1 Profit:Loss Verhältnis
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4: Max erlaubtes EquityAtRisk = $27.19 und Max berechnete Lotsize = 0.1625
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4 Eingaben: Order_Type="BUY STOP"; OpenBidPrice=114.787; StopLossBidPrice=114.689; TakeProfitBidPrice=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=false;

Beim NZDJPY erhalte ich bei IBFX eine Lotgröße von 0,09 Lots und einen EaR von 24,53:

2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: open #94468343 buy stop 0.09 NZDJPY bei 64.354 sl: 64.134 tp: 64.460 ok
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: versucht OP_BUYSTOP 0.09000000 Lots @64.35400000 sl:64.13400000 tp:64.46000000
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: Aktuelles EquityAtRisk = $24.53 und aktuelle Lotsize = 0.09 und Profit Target = $11.82 für ein 0.5:1 Profit:Loss Verhältnis
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: Max erlaubte EquityAtRisk = $27.19 und Max berechnete Lotsize = 0.0998
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4 Eingaben: Order_Type="BUY STOP"; OpenBidPrice=64.297; StopLossBidPrice=64.134; TakeProfitBidPrice=64.46; MaxPercentEquityAtRisk=0.5; MinLotOverRide=false;

Es gibt neun Broker, die ich auf Kompatibilität teste. Diese Codes funktionieren bei Alpari(US), CitiFXPro, CMS, Forex.com (Gain Capital), FXCM, FXDD, IBFX, MIG Bank und ODL.

Diese Broker sind so unterschiedlich, dass ich bisher davon überzeugt war, dass die Codes brokerunabhängig sind, da sie die Unterschiede in den Marktparametern dieser Broker geschickt handhaben.

Aber wir gehen davon aus, dass Ihre Implementierung des Codes nicht kaputt ist, also lassen Sie uns das zuerst beseitigen. Probieren Sie das beigefügte Skript aus, ziehen Sie es auf EURJPY und geben Sie die Parameter für Ihren BUY STOP ein, wie ich es oben getan habe, und lassen Sie mich die Ergebnisse wissen. (natürlich nur auf einem Demo-Konto verwenden)

 

Danke Phillip... Ich benutze eine Alpari UK Demo, Kontokapital US$2272.85. OK, ich habe das Skript zu einem EURJPY-Stundenchart hinzugefügt (genau wie mein EA). Es hat nichts getan oder eine Pending Order platziert, also habe ich auf der Registerkarte "Experts" nach Fehlermeldungen gesucht... hier ist, was es sagte:


2010.11.04 20:39:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: entfernt
2010.11.04 20:38:38 Assisted_Order_Script_2010.11.01 EURJPY,H1: erfolgreich geladen
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: entfernt
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: uninit Grund 0
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: Nullteilung
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1: Max erlaubtes EquityAtRisk = $22.73 und Max berechnete Lotsize = 0
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1 Eingaben: Order_Type="BUY"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false;


Danke!

Shawn

 

Hinweis: Ich versuchte das Skript wieder gerade jetzt Phillip, die gleichen Zahlen aber MinLotOverride auf true... es startete eine sofortige MARKET Auftrag (obwohl mein Kaufkurs war 115,827 und der Markt war nur bei 114,945. Lotsize = 0.01 und keine Stoploss- oder Gewinnziel-Order - beide waren 0.0000

Vielen Dank

Shawn

 

Nur zur Bestätigung: Ihr Konto lautet auf USD, richtig?

Ich lade mir gerade Alpari UK herunter, um es zu überprüfen.

Die Ordereröffnung als Market statt Buy Stop wird vollständig von der Orderreliable-Routine gesteuert... sehr merkwürdig. Das muss ich dann auch noch untersuchen.

Eine Sache, die meine Aufmerksamkeit erregt, ist dieser Hinweis:
"Der Hebel eines Demokontos ist automatisch auf den maximalen Hebel von 1:500 eingestellt."

Der Hebel sollte sich nicht auf die Berechnung der Losgröße auswirken, sondern nur auf die Berechnung der freien Marge (IIRC).

Bearbeiten: Nevermind, ich sehe die Plattform tatsächlich nicht standardmäßig auf diese, es ist 1:100 max Leverage