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)
-   -   EA Versuch (http://www.expert-advisor.com/forum/showthread.php?t=6859)

blackjack01 07.12.20 12:43

EA Versuch
 
Hallo

Wie ihr wisst bin ich neu hier .

Ich habe versucht einen Halb automatischen ea zu schreiben (nicht lachen bin ja voller Anfänger):D.

funktioniert soweit auch . Ziel ist es den Stop nach zu ziehen (SMA).

Er hat aber noch Fehler :

er zieht nicht immer nach
er schliesst obwohl er nicht ins sl läuft

wer Lust und Laune hat könnte mir bitte helfen .Würde mich sehr freuen über jede Hilfe und Verbesserung .

Danke

-------------------------------------------------------

#property strict

input int Magic = 1 ;

int OnInit() {

return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason){


}

void OnTick() {


double ma = iMA (_Symbol,PERIOD_CURRENT,9,0,MODE_SMA,PRICE_CLOSE,0 );

for(int i = OrdersTotal()-1; i >= 0; i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderSymbol() ==_Symbol) {
if (OrderType()== OP_BUY){
double sl = ma;
sl = NormalizeDouble(sl,_Digits);
if(sl > OrderStopLoss()){
if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,O rderTakeProfit(),OrderExpiration())){
Print(__FUNCTION__," > Order #",OrderTicket()," wurde angepasst ...");


}
}

}else if(OrderType() == OP_SELL){


double sl = ma;
sl = NormalizeDouble(sl,_Digits);
if(sl > OrderStopLoss()){
if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,O rderTakeProfit(),OrderExpiration())){
Print(__FUNCTION__," > Order #",OrderTicket()," wurde angepasst ...");

}
}
}
}
}
}
}

Indikator-Trading 07.12.20 13:10

Du fragst beides mal ab ob ma> sl ist. Der Stoploss ist aber für Buy Orders unter dem OpenPrice und für Sell Orders über dem OpenPrice.

Also wäre für Sell:

Code:

             
if(sl < OrderStopLoss())

die richtige Abfrage.

Indikator-Trading 07.12.20 13:21

Hier noch dein Code in eine deutlich besser zu lesende Form gebracht:

Code:

  double ma = iMA(_Symbol,PERIOD_CURRENT,9,0,MODE_SMA,PRICE_CLOSE,0);

  double sl = ma;
  sl = NormalizeDouble(sl,_Digits);

  for(int i = OrdersTotal()-1; i >= 0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS))
        {
        if((OrderSymbol() ==_Symbol) && (OrderType()== OP_BUY) && (sl > OrderStopLoss()))
            if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),OrderExpiration()))
              Print(__FUNCTION__," > Order #",OrderTicket()," wurde angepasst ...");
        if((OrderSymbol() ==_Symbol) && (OrderType()== OP_SELL) && (sl < OrderStopLoss()))
            if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),OrderExpiration()))
              Print(__FUNCTION__," > Order #",OrderTicket()," wurde angepasst ...");
        }
    }

Hinweis: Ich habe ihn jetzt nicht getestet!

blackjack01 07.12.20 13:38

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

Lade mal die datei hoch .

weiss nicht genau wo ich das einfügen muss .

Danke

blackjack01 08.12.20 12:43

Hallo

kriege ihn jetzt nicht mehr zum laufen .

bitte um hilfe

Danke

MA-EA 09.12.20 00:28

Wofür NormalizeDouble?


Mein Vorschlag wäre, wie gehabt nen MA zu deklarieren. Allerdings die Werte global einstellbar zu machen. Vor allem für welche Kerze er gilt. Würde jetzt mal Bar 3, vielleicht Bar 2 vorschlagen. Der Rest lautet im Grunde SL = MA...

MA-EA 09.12.20 19:24

Muss es unbedingt nen MA sein? Price wäre einfacher und es müssten keine größeren Berechnungen gemacht werden.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:12 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