martingales MoneyManagement
Liebe Programmier-"Gemeinde",
habe im letzten 1/2 Jahr meinen ersten kleinen robot geschrieben, welcher bis zum heutigen Tag, - entsprechend der Auswertungen des strategy-testers, - ein Profit-Losses-Verhältnis von ca. 60 : 40 aufweist. Um das "Teil" weiterhin zu optimieren, soll nun eine zweite Strategie, ein Hedging-Part und ein martingales Money Management ergänzt werden. Um den letztgenannten Code zu realisieren, habe ich als erstes versucht, die Anzahl der bestehenden offenen Positionen eines Vehikels (openOrders) zu bestimmen (Calculate open positions). Dieser Wert wird abschließend mit "return" zurückgegeben. Als zweites (MM - Calculate martingale lot size ...) soll dann die Berechnung von "lot" unter Verwendung von "extern Lot" und "MaximumRisk" erfolgen. - Und dies für den ersten zu öffnenden Trade. Abschließend soll dann das martingale System zur Anwendung kommen, in dem die Anzahl der ggf. offenen Positionen (openOrders) aufgegriffen und die lot für 2, 3, ... usw. offene Positionen berechnet wird. Alles in Allem sieht das "Teil" so aus: Code:
//+==================================================================================+ An dieser Stelle wäre ich für Eure Unterstützung sehr dankbar. LG. piptrade |
Hallo!
Was ist denn Deine Frage? LG M. |
Hi mat,
vorab herzlichen Dank für Dein Interesse und Deine Anfrage. Es ist für mich das erste Mal, dass ich einen solchen Money Management-Code schreibe und da stellt sich einfach die Frage, in wie weit die Herangehensweise richtig ist und ob der Code ggf. verbessert/optimiert werden könnte. Und wenn Verbesserungen - welche. Ich hoffe damit meine Fragestellung konkretisiert zu haben. LG. piptrade |
Ich schicke vorweg: weder bin ich ein großer Trading-Experte, noch MQL-Spezialist! Aber ich programmiere seit über 30 Jahren und kann Dir daher ein paar allgemeine Tipps geben. (Kommentare im Code)
Code:
//+==================================================================================+ LG |
Hallo, mat,
suuuper, dass Du Dich der Angelegenheit sofort und soooo umfänglich angenommen hast. Danke, Deine Hinweise sind wirklich „Gold“ wert. Im Folgenden aber zu diesen „Randnotizen“ konkret: A) Calculate open positions 1. „ if( ! OrderSelect(i,SELL, … “ - boolean bzw. das Ausrufezeichen wurden verstanden 2. „OrderMagicNumber“ und „openOrders“ wurden bereits global deklariert 3. Die Einsparung „if(OrderType()==OP_BUY) buys++;“ und der „else“-Zusatz in der nachfolgenden Zeile sind auch soweit klar 4. FRAGE: Weshalb sollte „openOrders()“ nicht „ > 0“ erreichen ? B) MoneyManagement – Calculate … 1. der Tipp mit den Variablen in Groß- bzw. Kleinbuchstaben – sehr gut, werde ich zukünftig so nutzen 2. integer-Division kann mit dem Punkt hinter der „100.“ ausgeschlossen werden ? - Auch gut ! Bis auf die o.a. eine Frage wurde alles verstanden und 1 : 1 umgesetzt. Thanks ! Dennoch: weshalb sollte „openOrder()“ nicht „ > 0“ sein können ? Im Abschnitt A) werden doch offene buys und sells zusammengezählt und sind dann doch „ > 0“ !? Würde mich über ein nochmaliges kleines Statement freuen. LG. piptrade |
Gerne!
openOrders wird nur dann ausgerechnet und zugewiesen, *wenn* openOrders>0 ist! Wie soll das das allererste mal passieren? Oder habe ich etwas ver- bzw. überlesen? LG |
Hi, mat,
sinnvoller Weise brauche ich doch weigstens "1" openOrder ---> also > 0 , wenn ALLE sells und buys addiert und dann als Exponent zugewiesen werden sollen. >= 0 hätte in meinen Augen den gleichen Effekt; - hier wird dann aber schon gezählt, wo es noch gar nichts zu zählen gibt; - oder ? LG. piptrade |
Das ist vom Gedanken her richtig, aber die Variable openOrders ist ja erst einmal 0! Daher wird das if nie betreten (!!), die Zuweisung findet gar nicht statt und openOrders bleibt 0!
(Es sei denn, openOrders wird irgendwo außerhalb des Codesegments gesetzt, das du herein gestellt hast!) LG |
Ja, dann schreibe doch einfach:
Code:
return (buys+sells); |
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:23 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum