Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Maximale Tradezahl durch 2

Geschrieben

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

Featured Replies

Geschrieben

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.

Geschrieben
  • Autor

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

Bearbeitet von AlexK.

Geschrieben
  • Autor

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?

Geschrieben

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

Geschrieben

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

Geschrieben
  • Autor

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

Geschrieben
  • Autor
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 :good:
Geschrieben

In jedem Fall bin ich ein Fan von dir und lese viele deiner Beiträge mit großem Interesse.

:wub:

 

Um die Euphorie wieder etwas zu dämpfen... das was ich geschrieben hab ist nicht ganz richtig. Es muss heißen

Geschrieben
  • Autor

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

Geschrieben
  • Autor

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 EA

Trailing AlexK..mq4

Geschrieben
  • Autor

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

Ich freu mich! Danke nochmal WOGO

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.