Ausführen von Buy und Sell Order nacheinander
Hallo liebe Traderfreunde,
ich bin neu in der Welt des MQL 4 Programmierens. Ich möchte ein Programm schreiben, dass mir einfach nacheinander Buy und Sell Order ausführt. Wenn eine Buy Order ausgeführt ist dann möchte ich danach eine Sell Order ausführen. Leider führt der Code nur die Buy Orders in der richtigen Reihenfolge aus, sobald ich den OP_BUY Befehl durch OP_SELL ersetze funkt garnichts mehr :mad: Was kann ich machen ? extern int TP = 20; extern int SL = 10; void OnTick() { if(OpenPosCount(OP_BUY)==0){ OrderSend (Symbol(), OP_BUY,0.0, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue); } if(OpenPosCount(OP_BUY)==1){ OrderSend (Symbol(), OP_BUY,0.00, Price, 3, Price-SL*10*Point,Price1+TP*10*Point, "MarketOrder", 123456, 0, Blue); } if(OpenPosCount(OP_BUY)==2){ OrderSend (Symbol(), OP_BUY,0.00, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue); } } int OpenPosCount(int Orderart) { int OffenePositionen=0; for (int x=0;x<=OrdersTotal()-1;x++) { if (OrderSelect(x,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol()&&OrderType()==Orderart) OffenePositionen++;}} return(OffenePositionen); } Nette Grüße dd |
Beides öffnen, wenn gar nix offen ist. z.B.
Code:
for(i=OrdersTotal()-1;i>=0;i--) { Code:
if( ... Buy_Mark_inv==false && Sel_Mark_inv==false ) { |
D
Ich verstehe gerad garnchts...
Ich möchte bei einem bestimmten Preis eine Buy Order öffnen, nur wenn diese geöffnet ist, möchte ich bei einem bestimmten Preis eine Sell Order öffnen... nicht beide gleichzeitig sondern nacheinander :) gruß |
Ach so. Dann probier Stop- oder Limit.
https://docs.mql4.com/trading/ordersend https://docs.mql4.com/constants/trad...rderproperties |
Zitat:
Und wenn direkt nach der 1. Buy Order eine 1. Sell Order rausgehen soll, mußt Du sehen, ob Dein OpenPosCount(OP_BUY)==1 ist und dann den 1. Verkauf senden. AVT |
Super Danke...
Jetzt führt er mir die erste Sell Position nach der ersten Buy Position aus, leider dann aber die Sell Position mehrfach gleichzeitig... also nicht nur eine Sell Position if(OpenPosCount(OP_BUY)==0){ OrderSend (Symbol(), OP_BUY,0.10, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue); } if(OpenPosCount(OP_BUY)==1){ OrderSend (Symbol(), OP_SELL,0.1, Price1, 3, Price1+SL*10*Point,Price1-TP*10*Point, "MarketOrder", 123456, 0, Red); } if(OpenPosCount(OP_SELL)==1){ OrderSend (Symbol(), OP_BUY,0.1, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue); |
Was soll das Ganze überhaupt werden? :confused: :rolleyes: Willst Du ständig Orders offen haben? Dann öffne mehrere Stop-Orders, jeweils mit eigener MN, eigenem Price, usw.
|
Gut, dann will ich mal zwischengrätschen:
Als Erstes solltest Du Dir bitte angewöhnen, den Code über den Button # zu schreiben, damit man den besser lesen kann. Wenn Du wirklich nur nach dem Öffnen der ersten! BuyOrder eine erste SellOrder öffnen willst, dann geht da ganz einfach so: Code:
if (!OrderCheck()) { |
ich glaube ich brauche 2 Zählschleifen, eine für die Buy und eine für die Sell Orders...
|
Das hängt jetzt ganz davon ab, was Du eigentlich wirklich wolltest.
Ich habe die Erfahrung über meine jahrelange Auftragsprogrammierung gesammelt, dass sich sehr häufig die Kunden nicht exakt genug ausgedrückt haben und damit etwas anderes programmiert wurde als angedacht. Daher nochmals mein Appell an alle Fragenden: Überlegt Euch im Vorfeld ganz, ganz genau, was Ihr tatsächlich erreichen wollt. traderdoc |
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:45 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