|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
In TPSL-insert
hallo
unten ist der code von TPSL-insert.mq4. Er macht was er soll recht gut und setzt TP und SL sofort nach einer order. mein Anliegen: kann mir da bitte jemand eine Magicnummer einbauen, damit ich den EA im selben Währungspaar mit verschiedenen Settings betreiben kann? lg Joe hier ist der code: //+------------------------------------------------------------------+ //| TPSL-Insert.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" //---- input parameters extern double TakeProfitPips=100; extern double StopLossPips=150; int Faktor, Digt, cnt; double TPp, SLp; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init(){} //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit(){} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(Close[0]>10) {Faktor=1000; Digt=3;} else if(Close[0]<10) {Faktor=100000; Digt=5;} if(OrdersTotal()!=0) { for(cnt=0; cnt<OrdersTotal(); cnt++) { OrderSelect(cnt,SELECT_BY_POS); //--------------Take Profit-------------------------------- if(OrderTakeProfit()==0 && TakeProfitPips !=0) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) {TPp = OrderOpenPrice()+TakeProfitPips/Faktor;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) {TPp = OrderOpenPrice()-TakeProfitPips/Faktor;} } else TPp = OrderTakeProfit(); //--------------Stop Loss-------------------------------- if(OrderStopLoss()==0 && StopLossPips !=0) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) {SLp = OrderOpenPrice()-StopLossPips/Faktor;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) {SLp = OrderOpenPrice()+StopLossPips/Faktor;} } else SLp = OrderStopLoss(); //---------------Modify Order-------------------------- if (OrderType()==OP_BUY || OrderType()==OP_SELL) OrderModify(OrderTicket(),OrderOpenPrice(),SLp,TPp ,0); //----------------------------------------------------- } // for cnt }//if OrdersTotal return(0); }// Start() //+------------------------------------------------------------------+ |
|
|||
Zitat:
Viel Erfolg! traderdoc |
|
|||
danke. ganz lieb.
sind noch weitere verwertbare ansätze im raum? lg joe |
|
|||
Zitat:
Weniger als zwei zusätzliche Programmzeilen werden nur noch von 1 getoppt. Das geht aber nicht, weil Du erstens eine Magicnummer eingeben mußt und zweitens diese in der zweiten Zeile abgefragt wird. traderdoc |
|
|||
Zitat:
DANKE zuerst mal fürs coden überhaupt. ich werds jetzt testen. lg joe |
|
|||
Zitat:
es werden aber kein TP und SL gesetzt. lg joe |
|
|||
Zitat:
Mit diesem Code wird bisher auch keine Order geöffnet, sondern nur der TP und SL berechnet und mittels OrderModify() dann eine bestehende Order bzgl. TP und SL geändert. D.h. das fehlt der Teil der initialen Orderöffnung. traderdoc |
|
|||
Zitat:
zuerst wirde der EA wie gewohnt über den Chart gezogen. dann wird über den one-click-trading-button wird eine beliebige order eröffnet und beim nächsten tick werden TP und SL gesetzt. so habe ich mir das nun auch hier vorgestellt, nur eben mit Magicnummer. Das funktioniert aber noch nicht. Nach der Ordereröffnung wird kein TPSL gesetzt. wie könnte man dies nun realisieren? lg joe |
|
|||
Na ja, das geht dann nicht so einfach, weil die MagigNumber per EA!!! beim Orderöffnen mittels OrderSend() gesetzt werden müßte.
Wenn Du jetzt händisch!!! über das One-Click-Trading gehst, kannst Du keine MagicNumber an die Order koppeln. Es gibt einen kleinen Umweg über die Zeile "Kommentar:" im Fenster des Auftrages, wenn Du über das One-Click-Trading gehst. In diese Kommentarzeile mußt Du dann die Magicnummer schreiben, aber auch in die Variable Magicnummer am Codeanfang. Der EA wird dann den Kommentar der Order auslesen und mit der im Code oben angegebenen Magicnummer vergleichen und bei Identität den TP und SL setzen. //+------------------------------------------------------------------+ //| TPSL-Insert.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "" #property link "" //---- input parameters extern double TakeProfitPips=100; extern double StopLossPips=150; extern int Magicnummer = 100; int Faktor, Digt, cnt; double TPp, SLp; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init(){} //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit(){} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(Close[0]>10) {Faktor=1000; Digt=3;} else if(Close[0]<10) {Faktor=100000; Digt=5;} if(OrdersTotal()!=0) { for(cnt=0; cnt<OrdersTotal(); cnt++) { OrderSelect(cnt,SELECT_BY_POS); if (StringToInteger(OrderComment()) != Magicnummer) continue; //--------------Take Profit-------------------------------- if(OrderTakeProfit()==0 && TakeProfitPips !=0) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) {TPp = OrderOpenPrice()+TakeProfitPips/Faktor;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) {TPp = OrderOpenPrice()-TakeProfitPips/Faktor;} } else TPp = OrderTakeProfit(); //--------------Stop Loss-------------------------------- if(OrderStopLoss()==0 && StopLossPips !=0) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) {SLp = OrderOpenPrice()-StopLossPips/Faktor;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) {SLp = OrderOpenPrice()+StopLossPips/Faktor;} } else SLp = OrderStopLoss(); //---------------Modify Order-------------------------- if (OrderType()==OP_BUY || OrderType()==OP_SELL) OrderModify(OrderTicket(),OrderOpenPrice(),SLp,TPp ,0); //----------------------------------------------------- } // for cnt }//if OrdersTotal return(0); }// Start() //+------------------------------------------------------------------+ Viel Erfolg! traderdoc |
Lesezeichen |
Stichworte |
magic, magicnumber, magicnummer, mql4, programmierung, programmierung metatrader, tpsl-insert, tpsl-insert.mq4 |
|
|