Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4972
Beiträge: 43372
Benutzer: 7.217
Aktive Benutzer: 85
Links: 84
Wir begrüßen unseren neuesten Benutzer: DFeck
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Stunden
- DFeck
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 100
Gesamt: 100
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 12.02.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 6
BBGPS befindet sich auf einem aufstrebenden Ast
Standard 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;
}
  #2 (permalink)  
Alt 12.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #3 (permalink)  
Alt 12.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

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.
  #4 (permalink)  
Alt 12.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von pischinger Beitrag anzeigen
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.
Na ja, das ist ein zweischneidiges Schwert mit dem nachträglichen Setzen des SL und TP. Wenn bei der direkten Mitsendung der beiden Stops ein Fehler wegen falscher Stops entsteht, wird auch keine Order geöffnet. Wenn aber ohne Mitsenden der Stops eine Order geöffnet wird, aber im Nachgang das OrderModify fehlschlägt, dann hängen Orders im Markt ohne SL!!!.
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.
  #5 (permalink)  
Alt 12.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Na ja, das ist ein zweischneidiges Schwert mit dem nachträglichen Setzen des SL und TP. Wenn bei der direkten Mitsendung der beiden Stops ein Fehler wegen falscher Stops entsteht, wird auch keine Order geöffnet. Wenn aber ohne Mitsenden der Stops eine Order geöffnet wird, aber im Nachgang das OrderModify fehlschlägt, dann hängen Orders im Markt ohne SL!!!.
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
schrieb ja, für scalper nicht so optimal, wobei zu beachten ist das manche broker sowieso eine mimimum open time für neue orders haben...könnten! steht meistens in den agb des brokers versteckt!!!. gerade wenn die quoten extrem fallen sind die agbs genau zu kennen (min. open time, was passiert wenn der broker keine quoten von seinen (clearing) (feed) banken bekommt...)

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.
  #6 (permalink)  
Alt 12.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #7 (permalink)  
Alt 12.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
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
doc trink nen schnaps, freitag is es! ich gebe zusatzinfos! natürlich ist das korrekte absetzen des kommandos voraussetzung! damit sich der te darunter was vorstellen kann, anbei mein "modify" mit "normalizedouble" (beispiel hättest du auch geben können)
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);
            }
         }
du bist und bleibst der coder guru!
  #8 (permalink)  
Alt 12.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #9 (permalink)  
Alt 12.02.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
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
-aha wo steht geschrieben das ich vom bid kurs ausgehen muss?
-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
  #10 (permalink)  
Alt 12.02.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
Thema geschlossen

Lesezeichen

Stichworte
code fehler, error, error 130, fehler, mql4, orderselect, programmierung, programmierung metatrader

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------