|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?
|
|
|||
Zitat:
Na das habe ich doch schon in Post #28 geschrieben!!!, wenn er seine "20" Pips nimmt und ohne Berücksichtigung des 5Digit das in Deine Funktion einsetzt. Aber Du hast ja immer geschrieben 1 Pip = 1Pip, auch in Afrika. Ist zwar formal, wie es da steht, richtig aber eben doch im Endeffekt falsch! Und daran wird er scheitern, solange er nicht die 5Digit-Verhältnisse berücksichtigt. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
Ohne den kompletten Code kann man sowieso nichts sagen. Der Heilige Gral wahrscheinlich |
|
|||
Zitat:
Jetzt gibt es allerdings eine neue Schwierigkeit, undzwar will ich dass er nur von den Ersten Bedinungen eine Gegenposition falls Verlust öffnet. Dafür habe ich mir überlegt im Comment der Order etwas zu schreiben und dies dann in die Bedinung für einen Verlust mit einzubetten. Das macht allerdings noch Probleme. Des Weiteren geht er im Gewinnfall nicht mehr zurück zu der oberen Gewinnbedinung. Woran könnte das liegen? Gruß Aron Hier der Code: Code:
if (closedProfit < 0 && (lastcomment=="Buy St" || lastcomment=="Sell St")) Print("8"); double STOPLOSS = 100; double TAKEPROFIT = 100; //if(total < 1) { //was soll total sein??? if (lastorder == 0) { Print("Gegenposi"); ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, Bid + (STOPLOSS*Point), Bid - (TAKEPROFIT*Point), "abgesichert", mymagicnumber); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } if (lastorder == 1) { Print("Gegenposition Buy"); ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2,Ask - (STOPLOSS*Point), Ask + (TAKEPROFIT*Point), "abgescihert", mymagicnumber); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } } |
|
|||
Zitat:
Ohne 5Digit-Prüfung ist in der Regel jeder EA nichts wert. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Code:
//+------------------------------------------------------------------+ //| saro2018.mq4 | //+------------------------------------------------------------------+ #property strict int StopLoss =10; int TakeProfit =10; int Slippage =2; double Lot =0.01; int LastTyp=-1; int Magic=0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(Digits()==5 || Digits()==3)//+------------------------------------------------------------------+ { //| @traderdoc prüfung | TakeProfit*=10; //+------------------------------------------------------------------+ StopLoss*=10; Slippage *=10; } //prüfung //prüfung //prüfung //prüfung //u.s.w //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- //prüfung //prüfung //prüfung //prüfung //u.s.w } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //prüfung //prüfung //prüfung //prüfung //u.s.w //--- if(OrdersTotal()==0) { if(isCloseLastPosByStopLoss()) { if(LastTyp==0) { if(OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,NormalizeDouble(OrderOpenPrice()+StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()-TakeProfit*Point(),Digits()),"Sell",Magic,0,clrGreen)) Print("OK Sell"); else Print(GetLastError()); } if(LastTyp==1) { if(OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,NormalizeDouble(OrderOpenPrice()-StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()+TakeProfit*Point(),Digits()),"Buy",Magic,0,clrGreen)) Print("OK Buy"); else Print(GetLastError()); } } } } //+------------------------------------------------------------------+ bool isCloseLastPosByStopLoss() { int Pos=-1; datetime Zeit=0; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()<2) { if(Zeit<OrderCloseTime()) { Zeit=OrderCloseTime(); Pos=i; LastTyp=OrderType(); } } } } } if(OrderSelect(Pos,SELECT_BY_POS,MODE_HISTORY)) { if(NormalizeDouble(OrderClosePrice(),5)==NormalizeDouble(OrderStopLoss(),5)) { return(True); } } return(False); } //+------------------------------------------------------------------+ prüfen, erlaubt Brocker sofort SL,TP senden oder SL,TP=0, und dann OrderModify nicht vergessen "traderdoc prüfung" sonst beißt wieder Geändert von pako (26.06.15 um 11:02 Uhr) |
|
|||
Zitat:
Er durchläuft die Schleife nicht mehr, das heißt er benutzt zwar die Werte für den SL und TP im Verlustfall allerdings durchläuft er dann die Schleife nicht. Gruß Aron |
|
|||
logische Fehler lieber im Debugger suchen
|
|
|||
Hab im Kompiler keine Fehler gefunden meinst du das? Oder im Jornal?
|
|
|||
|
Lesezeichen |
Stichworte |
mql4, oco, order, order öffnen, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|