AlexK. Posted September 22, 2011 Report Share Posted September 22, 2011 Hallo, nachdem ich mich etwas aus dem automatisierten Handel zurück gezogen habe (aus dem Diskretionärem im übrigen auch:)wollte ich mal wieder mit alten Ideen weiter rumprobieren.Nun stehe ich vor folgendem Problem:Ich möchte bei einem Halbautomaten eine zusätzliche simple Setting einfügen, und zwar die maximale Orderzahl für jeweils long und short.Ist sicher nur eine Zeile und nicht weiter aufwendig, wenn man denn weiß wie`s geht. Weiß ich aber nicht Nun habe ich eine Programmiererfirma gefragt die nun dafür 100-250€ haben wollen. Klar soll man für seine Arbeit entlohnt werden, aber ist dieser Preis gerechtfertigt? Die Funktion maximale Order existiert bereits, diese soll nun nur noch unterteilt werden in maximale Order long und max short.Wenn mir jemand für weniger Lohn helfen könnte, würde ich mich sehr über eine Antwort freuen. Umsonst soll es natürlich auch nicht sein!Anbei der EA Nette GrüßeAlexTrailing AlexK..mq4 Quote Link to comment Share on other sites More sharing options...
WOGO Posted September 22, 2011 Report Share Posted September 22, 2011 Ich möchte bei einem Halbautomaten eine zusätzliche simple Setting einfügen, und zwar die maximale Orderzahl für jeweils long und short.Ist sicher nur eine Zeile und nicht weiter aufwendig, wenn man denn weiß wie`s geht. Weiß ich aber nicht Nun habe ich eine Programmiererfirma gefragt die nun dafür 100-250€ haben wollen.Hi, ich glaub ich mach doch nochmal eine Programmiererfirma auf... Du hast doch im Code schon Variablen für buyopenposition und sellopenposition. Wenn du die vor dem Einlesen der Trades auf 0 setzt und danach vor OrderSend() abfrägst, dann ist das in 2 Minuten drin. Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 (edited) Hi, ich glaub ich mach doch nochmal eine Programmiererfirma auf... Du hast doch im Code schon Variablen für buyopenposition und sellopenposition. Wenn du die vor dem Einlesen der Trades auf 0 setzt und danach vor OrderSend() abfrägst, dann ist das in 2 Minuten drin. Hi WOGO,du hattest mir schonmal geholfen! Hab ich nicht vergessen.Nun musst du mir allerdings nochmal genau sagen, was du mir eben gesagt hast, nur leider für Leien hab nix verstanden Edited September 22, 2011 by AlexK. Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 also ich habe die Stelle: int buyopenposition=0,sellopenposition=0; im Code gefunden, aber was soll ich dort verändern? Wie bekomme ich diese in den EA-Settings unter ordersmanagement zu sehen? Quote Link to comment Share on other sites More sharing options...
Mythos Posted September 22, 2011 Report Share Posted September 22, 2011 Hi, hab hier grad keinen MT wodurch ich mir deinen Code nit detailiert anschauen kann deswegen ne allgemeine antwort: int long=0; int short= 0; for(int pos=0;pos < OrdersTotal();pos++) { if(!OrderSelect(pos,SELECT_BY_POS)) continue; //üblich kontrollen ob magic passt etc. if(OrderType() == OP_BUY || OrderType() == OP_LIMIT_BUY || OrderType() == OP_STOP_BUY) long++; //alternativ long+= OrderLots(); wenn nit anzahl sonst lots beschränkt werden, dann aber long und short als double! if(OrderType() == OP_SELL || OrderType() == OP_LIMIT_SELL || OrderType() == OP_STOP_SELL) short++; } boolean longallowed= long < MaxOrderLong; boolean shortallowed= short < MaxOrderShort; ich hoff ich hab nicht zuviele syntaxfehler eingebaut hth PS: jup, der stundenlohn wär da echt der wahnsinn, wenns hochkommt 10 minuten arbeit für 250 euro... Quote Link to comment Share on other sites More sharing options...
WOGO Posted September 22, 2011 Report Share Posted September 22, 2011 Hab's mir nochmal angeschaut. Das geht ja noch einfacher:Das hier änderst du ab: if((count(OP_BUY,Magic)+count(OP_SELL,Magic))<Maxtrades_Open){ if(buy_signal && tpb<Trades_per_bar && IsTradeAllowed()){ while(IsTradeContextBusy())Sleep(3000); if(hidestop==false&&buystop>0){sl=Ask-buystop*pt;}else{sl=0;} if(hidetarget==false&&buytarget>0){tp=Ask+buytarget*pt;}else{tp=0;} RefreshRates();ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage*mt,sl,tp,comment1+". Magic: "+DoubleToStr(Magic,0),Magic,0,Blue); if(ticket<=0){Print("Error Occured : "+errordescription(GetLastError()));} else{tpb++;Print("Order opened : "+Symbol()+" Buy @ "+Ask+" SL @ "+sl+" TP @"+tp+" ticket ="+ticket);} } if(sell_signal && tpb<Trades_per_bar && IsTradeAllowed()){ while(IsTradeContextBusy())Sleep(3000); if(hidestop==false&&sellstop>0){sl=Bid+sellstop*pt;}else{sl=0;} if(hidetarget==false&&selltarget>0){tp=Bid-selltarget*pt;}else{tp=0;} RefreshRates();ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage*mt,sl,tp,comment1+". Magic: "+DoubleToStr(Magic,0),Magic,0,Red); if(ticket<=0){Print("Error Occured : "+errordescription(GetLastError()));} else{tpb++;Print("Order opened : "+Symbol()+" Sell @ "+Ask+" SL @ "+sl+" TP @"+tp+" ticket ="+ticket);} } } in if((count(OP_BUY,Magic)+count(OP_SELL,Magic))<Maxtrades_Open){ if(count(OP_BUY,Magic)<=2 && buy_signal && tpb<Trades_per_bar && IsTradeAllowed()){ while(IsTradeContextBusy())Sleep(3000); if(hidestop==false&&buystop>0){sl=Ask-buystop*pt;}else{sl=0;} if(hidetarget==false&&buytarget>0){tp=Ask+buytarget*pt;}else{tp=0;} RefreshRates();ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage*mt,sl,tp,comment1+". Magic: "+DoubleToStr(Magic,0),Magic,0,Blue); if(ticket<=0){Print("Error Occured : "+errordescription(GetLastError()));} else{tpb++;Print("Order opened : "+Symbol()+" Buy @ "+Ask+" SL @ "+sl+" TP @"+tp+" ticket ="+ticket);} } if(count(OP_SELL,Magic)<=2 && sell_signal && tpb<Trades_per_bar && IsTradeAllowed()){ while(IsTradeContextBusy())Sleep(3000); if(hidestop==false&&sellstop>0){sl=Bid+sellstop*pt;}else{sl=0;} if(hidetarget==false&&selltarget>0){tp=Bid-selltarget*pt;}else{tp=0;} RefreshRates();ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage*mt,sl,tp,comment1+". Magic: "+DoubleToStr(Magic,0),Magic,0,Red); if(ticket<=0){Print("Error Occured : "+errordescription(GetLastError()));} else{tpb++;Print("Order opened : "+Symbol()+" Sell @ "+Ask+" SL @ "+sl+" TP @"+tp+" ticket ="+ticket);} } } Dann sollten immer maximal 2 long und 2 short Orders möglich sein (sofern der Code aussenrum stimmt).Du kannst die Zahl 2 natürlich noch über Parameter flexibel machen. Hierfür am Anfang des EAsextern int MaxLong = 2;extern int MaxShort=2;einfügen und dann die Konstante 2 im obrigen Code durch MaxLong bwz. MaxShort ersetzen. Wenn's funktioniert und es dir das wert ist, dann kannst du ja anstelle der 100-250€ die die Programmiererfirma verlangt hätte, hier ein paar Euro überweisen... 4 Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 WOGO du bist klasse! Ich habs soweit eingefügt, werde es gleich einmal testen. Auf jeden Fall spende ich an Ärzte ohne Grenzen, dass verspreche ich dir! Du kannst mir aber auch gerne per PN deine Bankverbindung zukommen lassen und ich überweise dir eine Kleinigkeit. Nicht weil du es nötig hast, sondern weil es den Wert der Mühe würdigt.In jedem Fall bin ich ein Fan von dir und lese viele deiner Beiträge mit großem Interesse. Schönen Abend noch Alex Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 P.S. hab ich doch glatt den Mythos überlesen. Tut mir Leid! Es ist erstaunlich wie Hilfsbereit ihr seid und das um diese Uhrzeit. Ein Hoch auf Euch und das nette Forum!!! Vielen Dank Quote Link to comment Share on other sites More sharing options...
WOGO Posted September 22, 2011 Report Share Posted September 22, 2011 In jedem Fall bin ich ein Fan von dir und lese viele deiner Beiträge mit großem Interesse. Um die Euphorie wieder etwas zu dämpfen... das was ich geschrieben hab ist nicht ganz richtig. Es muss heißen Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 Um die Euphorie wieder etwas zu dämpfen... das was ich geschrieben hab ist nicht ganz richtig. Es muss heißen <2 und nicht <=2. Also ich habe dies abgeändert, hab aber im Backtest gesehen, dass er nicht mehr als 2 Trades öffnet (je Richtung), obwohl ich oben im EA unter den Settings 30 eingetragen habe. Ich hab sicher noch was verkehrt gemacht.Ich füg den EA mal so an, wie ich ihn bis jetzt verändert habe.Vielleicht ist es so einfacher zu erkennen was ich falsch gemacht habe. Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 Also es funktioniert wunderbar wenn ich die max Werte für long und short direkt in dem Code eingebe, allerdings akzeptiert er nicht wenn ich diesen über den Parameter verändern will.hier der EATrailing AlexK..mq4 Quote Link to comment Share on other sites More sharing options...
AlexK. Posted September 22, 2011 Author Report Share Posted September 22, 2011 Ich glaube ich habs jetzt!!! Ich hätte nur wie von WOGO bereits gesagt im Code für die Konstante MaxLong bwz. MaxShort schreiben müssen Ich freu mich! Danke nochmal WOGO Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted September 23, 2011 Report Share Posted September 23, 2011 Es ist erstaunlich wie Hilfsbereit ihr seid und das um diese Uhrzeit. Ein Hoch auf Euch und das nette Forum!!! KB Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.