Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   simpel buy sell ea (http://www.expert-advisor.com/forum/showthread.php?t=6127)

Martin 30.05.18 21:58

simpel buy sell ea
 
hallo leute ich brauche mal bitte eure hilfen
und zwar suche ich ein ea der gleichzeitig eine buy und sell positon öffnet
und wen eine von beiden geschlossen wird soll er wider eine buy und sell position öfnen

kann mir bitte da jemand weiter helfen habe irgendwie nichs in der richtung gefunden was funktioniert

danke

Gruss Martin

MA-EA 01.06.18 21:03

Liste der Anhänge anzeigen (Anzahl: 1)
Arbeite derzeit an Einem.

Allerdings stimmt beim Trailing Stop was nicht. Im MT4 leuchtet SL zwar immer wieder mal auf, aber er ändert sich nicht. Wahrscheinlich irgendwo ein logischer Fehler drin. :confused:

Aber er öffnet erst wieder, wenn beide Richtungen geschlossen wurden. Oder soll er zumindest. :rolleyes:

Nachtrag: Ich glaube so müsste es richtig sein

Code:

//SL TP Deklarationen und Berechnungen
//ASK & BID
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK
double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID
//-------------------------------------------------------------------------------------------------------------
//Normaler SL
if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.
//Normaler TP
if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll.
//-------------------------------------------------------------------------------------------------------------

Code:

if(Trailing_Stop=true&&Stoploss>0){
 
  double M_CA_SL_TSS=NormalizeDouble(M_CA_SL-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask
  double M_CB_SL_TSS=NormalizeDouble(M_CB_SL+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid


//Trailing Stop Bedingungen für neuen TS
// ?
  if(B_SL<M_CA_SL_TSS)B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);
  if(S_SL>M_CB_SL_TSS)S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);
// ?

}


MA-EA 01.06.18 22:09

Liste der Anhänge anzeigen (Anzahl: 1)
Waren ein paar Fehler drin. :rolleyes: Müsste jetzt funktionieren.

MA-EA 02.06.18 01:22

Liste der Anhänge anzeigen (Anzahl: 1)
Sorry, musste was ergänzen. Mach schließlich nicht jeden Tag nen automatischen Takeprofit. :rolleyes:

Vergesst die beiden Vers. vor diesem Post. Leider kann ich die nicht mehr entfernen...

Meine größte Sorge ist der Trailing Stop. Weiß nicht, ob das so funktioniert:
Code:

extern bool Trailing_Stop=true;
extern int Trailing_Stop_Step=5;

Code:

//SL TP Deklarationen und Berechnungen
//ASK & BID
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK
double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID
//-------------------------------------------------------------------------------------------------------------
//Normaler SL
if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.
//Normaler TP
if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll.

Code:

if(Trailing_Stop=true&&Stoploss>0){
 
  double M_CA_SL_TSS=NormalizeDouble(M_CA-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask
  double M_CB_SL_TSS=NormalizeDouble(M_CB+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid


//Trailing Stop Bedingungen für neuen TS
// ?
  if(B_SL<M_CA_SL_TSS)double B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);
  if(S_SL>M_CB_SL_TSS)double S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);
// ?

 }

Code:

//Modify Orders (Trailing Stop nach ziehen)
if(Trailing_Stop==true&&Stoploss>0){// ganz oben Bedingungen für OrderModify eintragen müsste reichen...
for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){

if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){//modify Buy
if(B_SL<M_CA_SL_TSS)OrderModify(OrderTicket(),price,B_TS,OrderTakeProfit(),0,Blue);}// ?

if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){//modify Sell
if(S_SL>M_CB_SL_TSS)OrderModify(OrderTicket(),price,S_TS,OrderTakeProfit(),0,Red);}}}}// ?


MA-EA 03.06.18 02:13

Liste der Anhänge anzeigen (Anzahl: 1)
Moin.

Im Anhang der Versuch einer Art Hedge EA. Öffnet und schließt Buy und Sell entsprechend der Einstellungen.

Hab versucht den SL automatisch über den Spread zu berechnen.

Der Trailing Stop müsste in 5er Schritten die SLs nach ziehen. Jedenfalls wenn ichs richtig geproggt habe. :rolleyes:

Der TP sollte automatisch über die Spreads und vorrausichtlichen Verlust einer Richtung berechnet werden.

Wär dankbar, wenn Jemand damit ein paar (Back)Tests machen könnte. Bei mir heißt es immer nur "Order Close Error".

Viel Spass. ;) :cool:

Martin 03.06.18 17:28

danke für die antwort werd mal teste ob er das kann was ich möchte

MA-EA 04.06.18 00:24

Er öffnet nur, wenn gar keine Order offen ist.

Warum soll er gleich wieder Eine öffnen, wenn eine geschlossen wurde? :confused:

Falls Du Deinem Nick entsprechend Martin Gale versuchen willst, lass es. So ein System kann eigentlich nur früher oder später schief gehn. :(

https://de.wikipedia.org/wiki/Martingalespiel


Hat mal Jemand getestet, ob der SL alle (ich glaube) 5 Pips nach gezogen wird?

MA-EA 04.06.18 05:52

Moin.

Jetzt brauch wirklich mal die Hilfe von ein paar Proggern die sich richtig auskennen.

Ich will für winzige Spreads auch einen winzigen, alternativen Trailing Stop Schritt einrichten. Find aber nix zum Normalize. :confused:

So soll das werden:
Code:

extern bool Trailing_Stop=true;
extern int Trailing_Stop_Step=5;
extern string ATSS1="If Spread <";
extern string ATSS2="Trailing Stop Step";
extern int Alternative_TSS=3;
extern string ATSS3="If Spread <";
extern string ATSS4="Alternative Trailing";
extern string ATSS5="Stop Step";
 extern string ATSS6="TSS = 0";

Code:

//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein
  if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(Alternative_TSS*_Point,_Digits);

//Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein
  if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(0*_Point,_Digits);

Muss da jetzt Alles normalized werden? Oder nur die neuen int Werte? Oder wie oder was? :confused:

MA-EA 04.06.18 06:03

Funktioniert das so ordnungsgemäß?

//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein
if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point ,_Digits))NormalizeDouble(Trailing_Stop_Step=Alter native_TSS*_Point,_Digits);

//Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein
if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_D igits))NormalizeDouble(Trailing_Stop_Step=0*_Point ,_Digits);

Martin 04.06.18 06:24

nein kein marginal die lot grösse soll immer die selbe sein ich hab da eine idee die ich gerne mal testen möchte
wäre es den viel arbeit für dich den ea so zu endern wie ich das beschriben habe?
also das er gleich wider zwei neue aufmacht wen einer geschlossen ist ?

Zitat:

Zitat von MA-EA (Beitrag 41070)
Er öffnet nur, wenn gar keine Order offen ist.

Warum soll er gleich wieder Eine öffnen, wenn eine geschlossen wurde? :confused:

Falls Du Deinem Nick entsprechend Martin Gale versuchen willst, lass es. So ein System kann eigentlich nur früher oder später schief gehn. :(

https://de.wikipedia.org/wiki/Martingalespiel


Hat mal Jemand getestet, ob der SL alle (ich glaube) 5 Pips nach gezogen wird?


MA-EA 04.06.18 08:26

Ich bin Anfänger (wie man wahrscheinlich erkennen kann). :rolleyes:


Ich will hier auch Niemandem nen Auftrag weg schnappen... :eek:


Kannst Du Deine Idee nicht erst mal per Hand testen?

Martin 04.06.18 16:24

ja könnte ich schon manuel testen habe aber leider keine 24 stunden zeit pro Tag um am pc zu sitzen

MA-EA 04.06.18 17:01

Dann beschreib mal ganz genau, was das Gerät machen soll.


Irgend Jemand wirds schon hin bekommen. :rolleyes: Ich bin wie gesagt nicht wirklich Fachmann... :(

MA-EA 05.06.18 11:13

Liste der Anhänge anzeigen (Anzahl: 1)
Moin.

Im Großen und Ganzen scheinen SL und TP zu funktionieren.

Allerdings kommt bei EURNZD im Journal immer die Meldung invalid S/L or T/P

"2018.06.05 11:03:15.674 '1694254': order sell 0.01 EURNZD opening at market sl: 1.66283 tp: 1.66220 failed [Invalid S/L or T/P]"

"2018.06.05 11:03:15.565 '1694254': order sell market 0.01 EURNZD sl: 1.66283 tp: 1.66220"

"2018.06.05 11:03:15.565 '1694254': order buy 0.01 EURNZD opening at market sl: 1.66261 tp: 1.66324 failed [Invalid S/L or T/P]"

"2018.06.05 11:03:15.455 '1694254': order buy market 0.01 EURNZD sl: 1.66261 tp: 1.66324"

Wenn ich hier auch nach _Point normen will kommt irgendwie immer "wrong parameters count" oder so.
Code:

double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);
 double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);

Stimmt bei der Spread Berechnung was nicht?
Code:

double SPR=NormalizeDouble(M_CA-M_CB*_Point,_Digits);
Beim Max Spread bool vielleicht nicht?

Code:

//Max Spread Bedingungen
if(Only_MS_Allowed==false)bool SPR_AL=true;//bool SPR_AL = Spread Allowed
if(Only_MS_Allowed==true){
  double M_SPR=NormalizeDouble(Max_Spread*_Point,_Digits);//Max Spread
  if(SPR<=NormalizeDouble(Max_Spread*_Point,_Digits))SPR_AL=true;}

Code:

//Normaler SL
if(Stoploss>0&&Auto_Stoploss==false)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
 if(Stoploss>0&&Auto_Stoploss==false)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.

//Normaler TP
if(Takeprofit>0&&Auto_Takeprofit==false)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
 if(Takeprofit>0&&Auto_Takeprofit==false)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll.


Hab wirklich keine Ahnung warum er nicht richtig funktioniert. :( :confused:

MA-EA 06.06.18 17:50

Liste der Anhänge anzeigen (Anzahl: 1)
Lebt hier noch Jemand? :confused:

Der SL wird anscheinend richtig berechnet und gesetzt.

Der TP allerdings ist im Backtest und im Demo immer genau wie der Einstiegskurs. Manchmal mit 2 o. 3 Pips Abstand. Aber allgemein ist TP immer gleich Einstiegskurs. Eingestellt ist er auf 150. Hab eben 99 versucht, selbes Problem.

Code:

extern int Stoploss=30;
 extern int Takeprofit=150;

Code:

double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);


 double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);

Code:

//Normaler SL
 if(Stoploss>0&&Auto_Stoploss==false)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
 if(Stoploss>0&&Auto_Stoploss==false)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.

 //Normaler TP
if(Takeprofit>0&&Auto_Takeprofit==false)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
 if(Takeprofit>0&&Auto_Takeprofit==false)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Sell gesendet werden soll.

Code:

if(!IsInv&&SPR_AL==true&&RT==true){
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,B_SL,B_TP,Name + " Buy(#" + Buy_MagicNumber + ")",Buy_MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,S_SL,S_TP,Name + " Sell(#" + Sell_MagicNumber + ")",Sell_MagicNumber,0,Red);}


MA-EA 30.06.18 20:18

Hallo.


Ich versuche nen automatischen SL. Der soll durch Multiplizieren des Spread berechnet werden. Man müsste also irgendwie rausfinden, was da genau von ASK abgezogen / zum BID dazu gerechnet wurde.


Ein Weg ist wohl, erst mal gar keinen SL zu senden. Dann Order auslesen und den Abstand zwischen OpenPrice() und StopLoss() auszurechnen. Damit dann den Auto-SL berechnen und dann OrderModify. Aber da ja der SL immer wieder nach gezogen wird, ist das vielleicht keine so gute Idee.


Kann man irgendwie Ergebnisse von Berechnungen dauerhaft speichern? Bzw. so lange, bis die nächste Order geöffnet wird. Was ist mit diesen Arrays?

pascalper 01.07.18 04:06

Hier fehlt eindeutig das entsprechende Grundwissen.

Bitte zuerst einmal den Unterschied zwischen "Trailing Stop" und "Trailing Profit" aufnehmen!

MA-EA 01.07.18 11:26

Trailing Profit? Der TakeProfit soll fest sein. Soll vielleicht gelöscht werden, wenn die Order/s ein gutes Stück überm Break Even ist.

Ist wohl das Einfachste, Auto-SL und Auto-TP in extra Funktionen noch mal komplett neu zu berechnen. :confused:

MA-EA 01.07.18 20:00

Liste der Anhänge anzeigen (Anzahl: 1)
Abend.

Gratis Hedge EA für MT4 im Anhang. Ist eigentlich ne Art Martin Gale. Allerdings bleiben die Einsätze immer gleich. Es wird erst wieder geöffnet, wenn beide Richtungen geschlossen wurden.

Müsste eigentlich Alles funktionieren... :confused:

MA-EA 06.07.18 14:10

@ Martin

Inzwischen was gefunden? Ich könnts vielleicht die nächsten Tage versuchen. Kann aber für nix garantieren. :rolleyes: Bin, wie gesagt, eher noch als Anfänger einzustufen. :(

Wie sollen SL / TP / Max Spread sein?

Aber was soll das Ganze eigentlich bringen?

MA-EA 10.07.18 20:58

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Martin (Beitrag 41056)
hallo leute ich brauche mal bitte eure hilfen
und zwar suche ich ein ea der gleichzeitig eine buy und sell positon öffnet
und wen eine von beiden geschlossen wird soll er wider eine buy und sell position öfnen

Hab das mal so geproggt. Allerdings macht er wahrscheinlich ständig Verluste und bekommt die nie wieder rein.

Aber ich experimentiere gerne mal nen bißchen rum. :cool:

Hab ich das so richtig verstanden:Er soll, wenn Eine Order geschlossen wurde, noch mal in diese Richtung UND noch Eine Zweite in die Andere Richtung öffnen? So dass man dann z.B. zwei Long-Orders UND die alte Short-Order gleichzeitig offen hat? :confused: Das dürfte nix bringen...

Der EA im Anhang hat theoretisch immer ein Long und ein Short offen. Wird Eine geschlossen, öffnet er gleich wieder in die Richtung. Ich glaub aber wie gesagt nicht, dass das irgendwann mal Profit bringt. Man kann aber einstellen, dass er erst wieder öffnet, wenn beide Richtungen geschlossen wurden, also weder Long noch Short offen ist.

Jedenfalls wenn Alles richtig ist. :rolleyes: Hab ihn noch nicht getestet und bin wie gesagt Alles andere als nen Profi. Verwendung auf Dein Risiko... ;)

MA-EA 17.07.18 20:53

Liste der Anhänge anzeigen (Anzahl: 1)
Abend.

SL und TP werden automatisch mit dem Spread berechnet.

Hab das mal probiert.Meine Befürchtung hat sich bestätigt: Evtl. Gewinne werden immer wieder von den ständigen Verlusten und Spreads zunichte gemacht. :(

Vielleicht hab ich auch nur blöde Werte. Wenn Jemand Welche weiß, mit denen man die ständigen Verluste und Spreads immer wieder rein bekommt + etwas Gewinn, dann immer her damit. :confused:

MA-EA 24.07.18 21:41

Liste der Anhänge anzeigen (Anzahl: 1)
Abend.

Hatte vorhin beim Hedgen etwas über 50% Erfolgs-Trades. Wenn Jeder davon nur ein paar Cent mehr Gewinn als Verlust der Gegenseite macht... :cool:

Nur weiß ich nicht so richtig, wie SL und TP setzen. Einerseits will man natürlich möglichst wenig Verlust. Andererseits muss man dem Kurs aber einen gewissen Spielraum geben, sich für eine Richtung zu entscheiden.

A.
Man setzt SL und TP möglichst eng. Natürlich aber so, dass man 2x Spread und den Verlust einer Richtung wieder rein bekommt.

B.
Man macht nen SL von mehreren 100 und den TP 2 oder 3 mal so groß.

C.
Man macht nen einigermaßen großzügigen SL und gar keinen TP. Und hofft, dass einer der Trailings-Stops für Gewinn sorgt, sobald der Kurs eine klare Richtung eingeschlagen hat. Die müssten dann aber wohl jeweils ein Vielfaches der Spreads sein, die man ja wieder rein bekommen muss. :confused:

Hatte eben

SL:300 (Alle 7 Punkte nach gezogen)

TP:600

MA-EA 01.08.18 22:30

Wenn man den Code einfach so hier rein kopiert, braucht man nicht so viel scrollen, aber gut. :rolleyes:

Ich versuche zur Zeit, Stop-Orders da öffnen zu lassen, bzw. zu setzen, wo die Market-Order durch den SL gegangen ist. Wenn die Stop-Order dann gültig und zur Market-Order wurde, soll sie geschlossen werden. Bei einem kurzen Test vorhin war die sie die ganze Zeit offen und so wurden immer wieder Markt-Orders geöffnet...

Funktioniert das so, die Stop-Order zu schließen, wenn entsprechend Buy/Sell geöffnet wurde?

Orders zählen bzw. feststellen, ob überhaupt Welche offen sind:
Code:

for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol())bool Buy_Mark_inv=true;
    if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())bool Buy_Stop_inv=true;
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol())bool Sel_Mark_inv=true;
    if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())bool Sel_Stop_inv=true;}}

Orders öffnen:
Code:

if(Buy_Mark_inv==false&&Buy_Stop_inv==false&&Sel_Mark_inv==false&&Sel_Stop_inv==false&&RT==true&&SPR_AL==true){

  if(Buy_Market==true)OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,B_Mark_SL,B_Mark_TP,Name + " Buy(#" + Buy_Market_MN + ")",Buy_Market_MN,0,MediumBlue);
  if(Buy_Stop==true)OrderSend(Symbol(),OP_BUYSTOP,Lots,B_Stop_OOP,Slippage,B_Stop_SL,B_Stop_TP,Name + " Buy(#" + Buy_Stop_MN + ")",Buy_Stop_MN,0,MediumBlue);

  if(Sell_Market==true)OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,S_Mark_SL,S_Mark_TP,Name + " Sell(#" + Sell_Market_MN + ")",Sell_Market_MN,0,SteelBlue);
  if(Sell_Stop==true)OrderSend(Symbol(),OP_SELLSTOP,Lots,S_Stop_OOP,Slippage,S_Stop_SL,S_Stop_TP,Name + " Sell(#" + Sell_Stop_MN + ")",Sell_Stop_MN,0,SteelBlue);}

Stop-Orders schließen, wenn Market-Order in der selben Richtung offen ist:
Code:

for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS)){
 
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol()){
      if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);}

    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol()){
      if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);}


MA-EA 02.08.18 10:14

Ich glaub so wär die OrderClose Funktion besser:

Code:

for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS)){
 
    if(Buy_Mark_inv==true){
      if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);}

    if(Sel_Mark_inv==true){
      if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);}

    if(Close_all_Orders_after_Time_O_Clock==true&&TC>CA){// ganz oben Bedingungen für OrderClose eintragen müsste reichen...
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol())OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,OrangeRed);
      if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol())OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,SteelBlue);
      if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);}}}


MA-EA 05.08.18 16:47

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Jemand Ahnung, wie man nen Stop-Order Open-Price zusammen mit dem Trailing-Stop, nach zieht?

Ich seh einfach nicht mehr durch in diesem ganzen Computer-chinesisch. :( Mir fehlt einfach total der Überblick. :confused: :eek:

traderdoc 05.08.18 22:46

Sorry, aber das kommt daher, weil bei Dir die Grundlagen einfach fehlen oder ungenügend vorhanden sind. Ich sagte es schon einmal, man kann als Fahranfänger nicht einen Formel1-Wagen fahren.

traderdoc

MA-EA 06.08.18 11:20

Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich müsste es doch reichen, die Stop-Order-Bedingungen zu "aktualisieren", bzw. erneut berechnen und senden, wenn der Trailing Stop nach gezogen wird. Müsste doch eigentlich Alles in einer Schleife erledigt werden können. :confused:

Buy-Stop nach ziehn

if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Bu y_Stop_MN&&OrderSymbol()==Symbol()){
OrderModify(OrderTicket(),B_Stop_OOP,B_Stop_SL,B_S top_TP,0,Maroon);}



Sell-Stop nach ziehn

if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==S ell_Stop_MN&&OrderSymbol()==Symbol()){
OrderModify(OrderTicket(),S_St_OOP,S_Stop_SL,S_Sto p_TP,0,Maroon);}



Sorry, aber so brauch man nich so viel scrolln. :rolleyes:

MA-EA 06.08.18 22:32

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Diese Vers. scheint zu funktionieren. Aber SL und TP müssen wohl echt eng sein. Aber auch wieder nicht zu eng. :confused:

MA-EA 08.08.18 02:13

Liste der Anhänge anzeigen (Anzahl: 1)
Neueste Version. Hab sie selber noch nicht getestet und kann für nix garantieren. :rolleyes:

Beim Hedgen wärs vielleicht nicht schlecht, den TP nicht viel höher einzustellen als nötig. Sowas wie ne automatische TP-Berechnung, die anhand es aktuellen Spread und SL den TP selber kalkuliert, wär vielleicht nicht schlecht. Weiß aber nicht so richtig wie der berechnet werden sollte. :confused:

MA-EA 14.08.18 19:32

Liste der Anhänge anzeigen (Anzahl: 1)
Macht zwar keinen Gewinn, aber wenigstens das, was er soll. Sieht jedenfalls so aus. :rolleyes:

RetepM 15.08.18 15:00

Sach mal, lieber MA-EA, musst Du Deine "Selbstgespräche" unbedingt in diesem Forum führen? Vielleicht findest Du ja ein deutschsprachiges "Opfer", das Deine Programmier-Probleme außerhalb mit Dir diskutiert :-)

viele Grüße


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:06 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum