|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
OrderSelect und Error 130
Hallo,
N Neuling braucht mal wieder Hilfe. Bekomm im Editor bei meinem Code( Erster überhaupt) immer ne OrderSelect warnung. Hab gelesen das es nicht unbedingt was heißt, sprich das könnte man lassen. Im Backtest gibts aber nen Error 130. Also "Stops sind nicht im korrekten Datentyp". Ich denke das mein Indikator einen Wert ausgibt mit dem ich keine Stops berechnen kann. Hab jetzt schon einiges Ausprobiert, kann also sei das ganz andere Fehler im code sind. Ich geh aber davon aus das es immer der gleiche is. N Lösungsvorschlag währe schön. lg.GPS Code:
extern double Lot = 0.1; extern double SL = 0.0015; int start() { int Stoch, StochV, StochVV; double Price1, Price2; int TP, ST; bool signal; double kauf1,kauf2,stoppkurs,zahl,ticket,MN=5; //__________________________________________________________ for (ST=0;ST<3;ST++) { Stoch = iCustom(NULL,0,"Stochastic",5,0,3,0,0); StochV = iCustom(NULL,0,"Stochastic",5,0,3,0,1); StochVV = iCustom(NULL,0,"Stochastic",5,0,3,0,2); } if ((Stoch > StochV) && (StochV < StochVV)) //buy { signal=false; Price1=Point;} if ((Stoch < StochV) && (StochV > StochVV)) //sell { signal=true; Price2=Point;} if (signal=false) {Comment("Buy");} if (signal=true) {Comment("Sell");} //______________________Sell____________________________________ if(signal==true) { kauf2 = Bid; TP=Price1; stoppkurs = kauf2 - SL; } //__________________Buy_________________________________________ if(signal==false) { kauf1 = Ask; TP=Price2; stoppkurs = kauf1 - SL; } //_____________________OrderAnzahl______________________________ int OffeneO=0; int AnzahlO=OrdersTotal(); for(zahl=0;zahl<AnzahlO;zahl++) OrderSelect(zahl,SELECT_BY_POS,MODE_TRADES); { if (OrderSymbol() == Symbol()) { if(OrderMagicNumber() == MN) { OffeneO++; } } } //______________Orders aufgeben Buy_______________________________ if( kauf1>0||kauf2>0){ if(signal==false) { ticket=OrderSend(Symbol(),OP_BUY,Lot,kauf1,4,stoppkurs,TP,NULL,MN,0,Blue); return 0; } //________________Orders aufgeben Sell_____________________________ if(signal==true) { ticket=OrderSend(Symbol(),OP_SELL,Lot,kauf2,4,stoppkurs,TP,NULL,MN,0,Red); return 0; } } return 0; } |
|
|||
Wer hat denn behauptet, dass Error 130 zu vernachlässigen sei?
Einer der bedeutendsten Fehler überhaupt! //______________________Sell________________________ ____________ if(signal==true) { kauf2 = Bid; TP=Price1; stoppkurs = kauf2 - SL; Beim Sell liegt der StopLoss-Kurs immer über dem Entry, also: stopkurs = kauf2 + SL; Desweiteren macht der TP keinen Sinn, weil die Variable Point je nach WP den Wert 0.01, 0.001, 0.0001 oder 0.00001 haben wird. Da schreibt man besser gleich: TP = 0; Und Slippage = 4 könnte bei einem 5-DigitBroker sehr eng werden, weil diese 4 dann real nur 0,4 Pips entsprächen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
error 130 ist nicht unbedingt der datentyp gemeint wie von te angenommen, auch sind zu enge stops gemeint...broker verlangt 15 pips mit dem ordersend werden nur 10 pips mitgesendet.
zusatz zum traderdoc, tp,sl: empfehlung: immer tp, sl zuerst mit "0" im ordersend und sofort danach mit order modify auf den gewünschten tp, sl modifizieren, dann dürfen es auch weniger pips sein als vom broker verlangt. solange nicht auf m1 sollte das gut funktionieren. |
|
|||
Zitat:
Das kann zuweilen mächtig ins Auge gehen. Der Broker verlangt auch nur so viel Abstand vom Entry wie der Wert der Variablen MODE_STOPLEVEL der Funktion MarketInfo() beträgt. Zu beachten sei der Text dazu: "A zero value of MODE_STOPLEVEL means either absence of any restrictions on the minimal distance for Stop Loss/Take Profit or the fact that a trade server utilizes some external mechanisms for dynamic level control, which cannot be translated in the client terminal. In the second case, GetLastError() can return error 130, because MODE_STOPLEVEL is actually "floating" here." traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
zusatzinfo: wobei eigentlich bereits nach dem "order confirm" des orderbook servers des brokers sofort die order modifiziert werden kann, also auch zwischen den ticks! wobei dann natürlich der nächste tick für das "modify confirm" abgewartet werden muss...somit ist im bestfall das modify beim nächsten tick durch (kein requote, slippage,...) abhängig vom quoteserver des brokers. welche broker slippen, requoten oder das virtual dealer plugin verwenden hat man am live sowieso schnell heraus. |
|
|||
Zwischen Tick, nach dem Tick, wie auch immer. Nun lass aber mal beim OrderModify() den SL bei z.B. 1.23456789 sein, weil nicht normiert wurde, dann guckst Du mit dem OrderModify() in die Röhre, und es tritt das ein was ich schrieb:
Eine Order ohne SL!! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
Code:
void PairProfitModify(){ bool modifypairprofit; for(cnt=OrdersTotal();cnt>=0;cnt--){ if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ if(OrderType()==OP_BUY){ if(OrderTakeProfit()==0 && MinPairProfit!=0){ RefreshRates(); modifypairprofit=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(Ask+MinPairProfit*pt,Digits),0,Red); } } |
|
|||
Ach @pischinger, darum geht es mir doch gar nicht!
Aber auch hier müßte ich eigentlich wieder reingrätschen: modifypairprofit=OrderModify(OrderTicket(),OrderOp enPrice(),OrderStopLoss(),NormalizeDouble(Ask+MinPairProfit*pt,Digits),0,Red); Ich denke, dass der TP vom Entrykurs genommen werden sollte, also mittels OrderOpenPrice() bzw. wenn schon dann eher mit Bid. Und dann kann @BBGPS evtl. auch mit pt nichts anfangen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
-wer legt fest das der orderopenprice zwingend verwendet werden muss, das es auf die stategie drauf ankommt...z.b. ist der tp,sell "meilenweit" (aka z.b. 100 pips)entfernt...long term trader... ist der orderopenprice aber sowas von egal! sieht die strategie z.b. handeln auf m15 mit kleinen tp,sl vor dann gebe ich dir durchaus recht das der orderopenprice besser ist, zumindest wenn es um das verständnis für die meisten trader geht. -es ging hier um das normalizedouble! minpairprofit solltest dann auch gleich bitte monieren, kann ja sein das der trader neuling ist. und überhaupt, wenn dir mein beispiel nicht gefällt, ich habe eines gebracht, dann solltest du ein eigenes für dich korrektes beispiel posten, damit ein reingrätschen deinerseits nicht notwendig wird, ich will ja nicht das du dir noch schmerzen wegen mir einfängst |
|
|||
Ach @pischinger, das ist schon amüsant mit Dir.
Ein TP muß nicht vom OpenPrice aus genommen werden, sollte aber, weil dann die Nachvollziehbarkeit besser gegeben ist. Keiner setzt doch den TP oder SL "irgendwann und irgendwo" an. Man will doch den TP oder SL dann erreichen, wenn die Werte vom Öffnen der Order aus gesehen, gegeben sind. Und wenn schon Bid, dann deshalb, weil bekanntlich die BuyOrder mit dem Bid geschlossen wird und dann das Close auch besser nachvollziehbar ist. Wir bleiben ganz entspannt und schmerzfrei und sehen dem WE gelassen entgegen. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
code fehler, error, error 130, fehler, mql4, orderselect, programmierung, programmierung metatrader |
|
|