|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
BE Func setzt instant BE ohne auf im Profit zu achten
Moin Leute,
Code:
double UpdateToBE = 50.00; void UpdateBE() { if(UpdateToBE <= 0) return; for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderType() == OP_BUY && OrderOpenPrice() > OrderStopLoss() && Bid - OrderOpenPrice() >= UpdateToBE * Point) { orderModify = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); } if(OrderType() == OP_SELL && OrderOpenPrice() < OrderStopLoss() && OrderOpenPrice() - Ask >= UpdateToBE * Point) { orderModify = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); } } } } Ich habe ja definiert er soll es erst auf BE setzen wenn der Trade 50 Punkte im Profit ist, aber er beachtet es gar nicht. Vorschläge? |
|
|||
Code:
if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderOpenPrice() > OrderStopLoss() && Bid - OrderOpenPrice() >= UpdateToBE * Point) { orderModify = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); } if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderOpenPrice() < OrderStopLoss() && OrderOpenPrice() - Ask >= UpdateToBE * Point) { orderModify = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ok danke dir, ich probiers aus hoffe das klappt
|
|
|||
Nop, es hat wieder nicht geklappt. Noch irgendeine Idee woran es liegen könnte? Ich will mit meinem EA endlich auf Echtgeld gehen, aber ich arbeite seit 2 Monaten an dieser BE Func die nicht funktioniert ich bin echt am verzweifeln.
|
|
|||
Dann liegt es an etwas anderem.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hab gerade nicht viel Zeit, also sorry, wenns falsch ist...
Liegts vielleicht am Update-Wert von fünfzig! € / $ / Pfund / was auch immer? Versuch vielleicht mal nen int Wert und NormalizeDouble. Vielleicht muss die Berechnung bei OrderModify auch in Klammern? Code:
... && ( Bid - OrderOpenPrice() ) >= UpdateToBE * Point)... Code:
...&& ( OrderOpenPrice() - Ask ) >= UpdateToBE * Point)... |
|
|||
Code:
extern int Order_Punkte_im_Profit = 50; Code:
if( OrderType == OBBuy ... { double Buy_BE = NormalizeDouble(OrderOpenPrice() + Order_im_Profit ); if( Ask > Buy_BE ) OrderModify(... , -Buy_SL = Buy_BE- , ...) } ; |
|
|||
Dann würde es mit Sicherheit falsch sein.
An dem Code stimmt so gut wie gar nichts. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Natürlich nicht die exakt selben Zeichen. Aber das Prinzip müsste funktionieren.
|
|
|||
BE Funktion
Hey Leute,
danke erstmal für jeden der sich die Zeit genommen hat um mir zu helfen. Ich hab einfach von Scratch selbst eine BE Func geschrieben, die funktioniert. Daher wollte ich sie hier einfach mit euch teilen, damit auch andere Leute die damit strugglen hier eine Lösung haben: Code:
double PIP; // Pips in Profit double nd_PIP; // normalized Pips in Profit void PipsInProfit() { //Breakeven Func for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderType() == OP_BUY) { if(Bid > OrderOpenPrice()) { // falls der aktuelle Kaufpreis über dem OpenPrice deiner laufenden Order liegt rechne folgendes: PIP = Bid - OrderOpenPrice(); nd_PIP = NormalizeDouble(PIP,Digits); //Comment(nd_PIP); dient zur Überprüfung ob er den Wert korrekt ausliest. } else { if(OrderOpenPrice() > Bid) {// falls der aktuelle Kaufpreis unter dem OpenPrice deiner laufenden Order liegt rechne folgendes: //return; PIP = OrderOpenPrice() - Bid; nd_PIP = NormalizeDouble(PIP,Digits); //Comment("-",nd_PIP); } } } else { if(OrderType() == OP_SELL) { if(Ask > OrderOpenPrice()) {// falls der aktuelle Verkaufspreis über dem OpenPrice deiner laufenden Order liegt rechne folgendes: //return; PIP = Ask - OrderOpenPrice(); nd_PIP = NormalizeDouble(PIP,Digits); //Comment("-",nd_PIP); } else { if(OrderOpenPrice() > Ask) {// falls der aktuelle Verkaufspreis unter dem OpenPrice deiner laufenden Order liegt rechne folgendes: PIP = OrderOpenPrice() - Ask; nd_PIP = NormalizeDouble(PIP,Digits); //Comment(nd_PIP); } } } } // da jetzt jede Möglichkeit durchgespielt wurde, und man alle Werte ob im minus oder im Plus durchgerechnet wurde wird jetzt die BE Func definiert. Wenn der PIP Wert nun +40 ist dann wird BE gesetzt. if(PIP == 40) { orderModify = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); } } } } |
Lesezeichen |
Stichworte |
breakeven ea, breakeven expert advisor, breakeven optimieren |
|
|