Jump to content
Tom Next - Daytrading Community

Maximale Tradezahl durch 2


AlexK.

Recommended Posts

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 :mosking:

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üße

Alex

Trailing AlexK..mq4

Link to comment
Share on other sites

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 :mosking:

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.

Link to comment
Share on other sites

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 :biggrin: hab nix verstanden

Edited by AlexK.
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 EAs

extern 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...

  • Upvote 4
Link to comment
Share on other sites

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

Link to comment
Share on other sites

:wub:

 

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...