Lotsize aus festgelegter Reihe - Array?
Hallo,
ein Beispiel, ich kaufe den EURUSD bei 1,20, die Lotsize ist 0.03. Die Lotsize des nächsten Trade, egal ob Buy oder Sell, soll 0,12 sein. Die Lotsize soll nicht errechnet werden, sondern aus einer festgelegten Reihe kommen, bspw. einem Array. Wie setzt man so etwas um, dass ich die Lotsize in einer EnterTrade()-Funktion dann weiterverwenden kann? Ist das Array dafür überhaupt sinnvoll? Die Beispiel-Reihe könnte folgende Werte haben: Trade 1: 0.03 Trade 2: 0.12 Trade 3: 0.18 Trade 4: 0.24 Das Thema Array und wie man sie ausliest, ist für mich einfach zu hoch. |
Du könntest einen Zähler verwenden, der bei Tradeeröffnung eins nach oben zählt. Und beim letzten wert auf 0 gesetzt wird.
Code:
double Array_LotSize[4]; --- Leopold --- |
Wenn die Reihe sich immer um +6 fortsetzt, so kann die Zuweisung auch in eine Schleife.
Oder noch besser, gleich einfach eine einzige Variable die man nach jedem Trade entsprechend anhebt... |
Zitat:
---Leopold--- |
Persönlich würde ich die Anzahl der offenen Positionen abfragen und die Lots davon abhängig machen, so ist auch eine manuell geöffnete Position (ohne Magic)mit in der Berechnung-wenn das erwünscht ist.
|
Vielen Dank für eure Anregungen. Die Idee mit der Abfrage des TotalOpenOrders-Wertes finde ich gut. Aber ich bekomme die Funktionen trotzdem nicht zusammen.
Ich habe eine fertige Funktion, welche mir die Anzahl der offenen Trades liefert: TotalOpenOrders(). Bitte nicht an die Decke gehen, über die folgende Funktion, die wahrscheinlich kompletter Nonsens ist. Ich hole mir also den Wert der offenen Orders und versuche hier zu prüfen, ob dieser Wert größer ist als num_LotSize (Positionsnummer im Array), wenn ja wird num_LotSize erhöht, wenn nicht soll der erste Wert im Array verwendet werden. Code:
double LotSize_Berechnung() |
Auf die Schnelle (Fehler garantiert):
double lots=0.01; if(TotalOpenOrders() = 2 {lots=0.06}; if(TotalOpenOrders() = 3 {lots=0.09}; if(TotalOpenOrders() = 4 {lots=0.12}; usw. Wozu Array? |
@pascalper
Du hast recht. Das klappt auf diese Weise super. Danke. |
Zitat:
Zitat:
Zitat:
Code:
switch(TotalOpenOrders()) Zitat:
============================================ @dundale Wenn ich es richtig gesehen habe, so liefert dir TotalOpenOrders() NUR die aktiven und NICHT auch noch die Pending Orders. Den Sinn dahinter verstehe ich nicht, aber dann hättest du doch sicherlich OrdersTotal() genutzt, oder? Du könntest dann einfach einen Zähler beim Öffnen einer Order inkrementieren und diesen, um auch manuelle Trades zu integrieren, z.B. in der OnTick() mit der aktuellen Anzahl vergleichen. Stimmen sie nicht überein, so anpassen. Ein Beispiel könnte so aussehen: Code:
double lotArray[4] = {0.03, 0.12, 0.18, 0.24}; |
@next user
Die fehlenden Klammern habe ich gefunden. Ich wollte mit TotalOpenOrders() wirklich nur die aktiven Order. Tausend Dank für den Code mit dem Array. Ich habe etwas gebraucht, aber erfolgreich in das Script integriert. Bei jedem neuen Trade wird die Lotsize aus dem Array geholt und verwendet. Einzig habe ich jetzt ein "Array out of range"-Problem. Wie erreiche ich, dass der 5. Trade und alle folgenden die Lotsize Nr. 4 also 0.24 haben. Also den letzten Wert der Reihe? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 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