Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Expert-Advisors

Expert-Advisors Expert-Advisors für Metatrader 4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36910
Benutzer: 6.081
Aktive Benutzer: 495
Links: 80
Wir begrüßen unseren neuesten Benutzer: DarthTrader
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 10 Stunden
- DarthTrade...
vor 12 Stunden
- Eren
vor 20 Stunden
- Rene1504
vor 20 Stunden
- ibdafx
vor einem Tag
- Batangenyo

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 77
Gesamt: 79
Team: 0
Team:  
Benutzer:  fxnoob, Stier
Freunde anzeigen

Empfehlungen

Werbung

Like Tree51Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #131 (permalink)  
Alt 14.02.12
Elite Mitglied
 
Registriert seit: Jan 2012
Beiträge: 247
Free99 befindet sich auf einem aufstrebenden Ast
Standard

Ich darf das kurz korrigieren

Der EA schaut NICHT in die Zukunft.
Auf dem Daily Chart wartet er bis 0:00 und öffnet ausschließlich dann Trades, wenn der OPEN und/oder (weiss ich grad nichtmehr) der CLOSE Preis der aktuellen Kerze innerhalb des HIGH/LOW der vorigen Kerze ist. Daher macht er auch gerne mehrere auf, aber nur dann, wenn noch Möglichkeit besteht Gewinne (oder Verluste ^^) zu machen.
Warum sollte er auch Orders öffnen, wenn wir ein Gap im Kurs haben?
  #132 (permalink)  
Alt 14.02.12
Elite Mitglied
 
Registriert seit: Aug 2011
Ort: NRW
Beiträge: 764
Mast83 befindet sich auf einem aufstrebenden Ast
Mast83 eine Nachricht über ICQ schicken Mast83 eine Nachricht über Skype™ schicken
Standard

Ich werde den Code hier heute Abend noch mal posten und dann darf sich jeder erfreuen...oder vll postet ihn mal sirius
eigentlich ist ja auch egal wer...
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn...
  #133 (permalink)  
Alt 14.02.12
Mitglied
 
Registriert seit: Nov 2011
Ort: 87435 KPT
Beiträge: 63
Sirius befindet sich auf einem aufstrebenden Ast
Standard Zukunft??

Hallo und guten Tag Free99,

in dem mir vorliegenden Code schaut das Programm in die Zukunft, da es
im Backtest Werte des aktuellen Zeitabschnittes verwendet, welche bei Bar-Wechsel um 0:00 im live-Betrieb noch gar nicht bekannt sein können.

Im live-Betrieb ist bei Bar-Wechsel OPEN = HIGH = LOW = CLOSE und von da an wird jeh nach Kursbewegung HIGH und LOW an ihren Grenzwerten gespeichert und CLOSE ist innerhalb der gewählten TIME-Frame immer der aktuelle Kurs. d.h. Erst mit dem letzten TICK einer TIME-FRAME stehen HIGH; LOW und OPEN als gültige Werte zur Verfügung.

Im Backtest sind hingegen alle 4 Werte zu Beginn einer Timeframe durch (0) für Berechnungen verfügbar ... was aber nicht der live-Situation entspricht.

Der Unterschied, wann welche Daten zu welchem Zeitpunkt beim Backtest und LIVE(Demo) verwertbar sind, wird deshalb leicht übersehen.(so meine Erfahrung)

an Mast93 ... stell bitte die mq4-File rein, damit alle die gleiche Grundlage
an Information haben danke

Grüße SIRIUS
  #134 (permalink)  
Alt 14.02.12
Elite Mitglied
 
Registriert seit: Jan 2012
Beiträge: 247
Free99 befindet sich auf einem aufstrebenden Ast
Standard

Code:
double L=iLow(NULL,NULL,1);
double H=iHigh(NULL,NULL,1);
double C=iClose(NULL,NULL,0);
double O=iOpen(NULL,NULL,0);
sorry, aber das ist dein Code, der meinem sehr ähnlich sieht...
und hier wird HIGH und LOW der LETZTEN Kerze bezogen... ich wüsste also nicht warum hier "orakelt" wird...

Code:
if (H - C >= stopLevel && C - L >= stopLevel && O < H)
Dieser welcher sagt mir (übrigens aus meinem Code kopiert, bei deinem sieht es extrem unvollständig aus)
High der letzten Kerze - Close Aktuelle (wie du richtig sagtest, der aktuelle Preis) sollte größer oder gleich dem stoplevel sein, welcher in diesem Fall aus MarketInfo(xx,MODE_STOPLEVEL) besteht
und es muss Close aktuelle - Low letzte Kerze ... s.o. ...
das sagt mir, dass der Kurs nicht zu nah an den geplanten Öffnungspositionen sein darf...

O < H heisst hier für mich, weil es sich um den BUY Teil des EAs handelt, dass der OPEN Kurs aktuelle Kerze kleiner sein muss als das HIGH letzte Kerze

beim Sell siehts genauso aus nur dass es sich hier um O > L handelt...
der Kurs muss also zwischen H und L der LETZTEN KERZE sein...

da wie oben schon gesagt der Code aus deinem kopiert ist, wird es bei dir genauso sein... nix mit Kaffeesatzleserei
  #135 (permalink)  
Alt 14.02.12
Elite Mitglied
 
Registriert seit: Aug 2011
Ort: NRW
Beiträge: 764
Mast83 befindet sich auf einem aufstrebenden Ast
Mast83 eine Nachricht über ICQ schicken Mast83 eine Nachricht über Skype™ schicken
Standard

Für all jene die ihn noch mal haben wollen...

Code:
extern double    Lot              = 0.01;
extern bool      MM               = TRUE;
extern double    Risk             = 0.5; //%
 
extern int       StopLoss         = 5;
extern int       TakeProfit       = 15;

extern bool      UseTrailing      = false;
extern int       TrailingStopLoss = 5;
extern int       TrailingStep     = 2.5;

extern int       MagicNumber      = 8888;

bool initialized = false;
int MAX_TRAILING_STEP = 15;

int init() {
   if (Digits == 5 || Digits == 3)
  {
   StopLoss = StopLoss * 10;
   TakeProfit = TakeProfit * 10;
   TrailingStopLoss = TrailingStopLoss * 10;
   TrailingStep = TrailingStep * 10;
  }
   double stopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
   if (StopLoss < stopLevel) {
      Alert("StopLoss", stopLevel);
      return(-1);
   }
   if (TakeProfit < stopLevel && !UseTrailing) {
      Alert("TakeProfit", stopLevel);
      return(-1);
   }
   double minLot = MarketInfo(Symbol(), MODE_MINLOT);
   if (Lot < minLot) {
      Alert("minLot", minLot);
      return(-1);
   }
   double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
   if (Lot > maxLot) {
      Alert("maxLot", maxLot);
      return(-1);
   }
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   for (double i = minLot; i <= maxLot; i+=lotStep) {
      if (i == Lot) {
         break;
      }
      if (i + lotStep > maxLot) {
         Alert("LotStep", lotStep);
         return(-1);
      }
   }
   if (UseTrailing) {
      if (TrailingStopLoss < stopLevel) {
         Alert("TrailingStopLoss", stopLevel);
         return(-1);
      }
      if (TrailingStep < MAX_TRAILING_STEP) {
         Alert("TrailingStep", MAX_TRAILING_STEP);
         return(-1);
      }
   }
   initialized = true;
   return(0);
}

int deinit() {
   initialized = false;
   return(0);
}

int start() {
   if (!initialized) {
      return(0);
   }
   if (DayOfWeek() == 0 || DayOfWeek() == 6) {
      return(0);
   }
   if (!IsTradeAllowed()) {
      return(0);
   }
   
   int ticket;
   int q = 0;
 
   double L = iLow(NULL, NULL, 1);
   double H = iHigh(NULL, NULL, 1);
   double C = iClose(NULL, NULL, 0);
   double O = iOpen(NULL, NULL, 0);
   double spred = MarketInfo(Symbol(), MODE_SPREAD) * Point;
   double sl = StopLoss * Point;
   double tp = TakeProfit * Point;
   
   if (UseTrailing) {
      TrailingPositions(TrailingStopLoss, TrailingStep, MagicNumber);
   }
   
   //
   if  (O >= H || O <= L) {
      Comment("\\OP_BUYSTOP & OP_SELLSTOP\\");
      return (0);
   }
   
   
   if (MM) Lot = AutoLot(Risk);
   for (q = 0; q < OrdersTotal(); q++) {
      if (OrderSelect(q, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUYSTOP) {
            return(0);
         } else if (OrderType() == OP_SELLSTOP) {
            return(0);
         }
      }
   }
   
   double stopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL) * Point;
 
   //ORDER BUY
   if (H - C >= stopLevel && C - L >= stopLevel && O < H) {
      double tpReal = 0;
      if (!UseTrailing) {
         tpReal = H + tp + spred * 2;
      }
      ticket = OrderSend(Symbol(), OP_BUYSTOP, Lot, H + spred * 2, 0, H - sl + spred * 2, tpReal, NULL, MagicNumber, iTime(Symbol(), Period(), 0) + Period() * 60);
      ChechAndPrintError(ticket);
   } else {
      Comment("\Sleeping.... Will wake up again at 0:00");
   }     
  
   //ORDER SELL
   if (H - C >= stopLevel && C - L >= stopLevel && O > L) {
      tpReal = 0;
      if (!UseTrailing) {
         tpReal = L - spred - tp;
      }
      ticket = OrderSend(Symbol(), OP_SELLSTOP, Lot, L - spred, 0, L - spred + sl, tpReal, NULL, MagicNumber, iTime(Symbol(), Period(), 0) + Period() * 60);
      ChechAndPrintError(ticket);
   } else {
      Comment("\Sleeping.... Will wake up again at 0:00");
   }
   
}

void TrailingPositions(int trailingStopLoss, int trailingStep, int magicNumber) {
   double bid = 0;
   double ask = 0;
   for (int i = 0; i < OrdersTotal(); i++) {
      if (!(OrderSelect(i, SELECT_BY_POS)) || OrderSymbol() != Symbol() || OrderMagicNumber() != magicNumber) {
         continue;
      }
      
      bid = MarketInfo(OrderSymbol(), MODE_BID);
      ask = MarketInfo(OrderSymbol(), MODE_ASK);
      
      if (OrderType() == OP_BUY) {
         if (bid - OrderOpenPrice() > trailingStopLoss * Point) {
            if (OrderStopLoss() < bid - (trailingStopLoss + trailingStopLoss - 1) * Point || OrderStopLoss() == 0) {
               OrderModify(OrderTicket(), OrderOpenPrice(), bid - trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());
            }
         }
      } else if (OrderType() == OP_SELL) {
         if (OrderOpenPrice() - ask > trailingStopLoss * Point) {
            if (OrderStopLoss() > ask + (trailingStopLoss + trailingStep - 1) * Point || OrderStopLoss() == 0) {
               OrderModify(OrderTicket(), OrderOpenPrice(), ask + trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());
            }
         }
      }
   }
}

void ChechAndPrintError(int result) {
   if (result < 0) {
      int err = GetLastError();
      Print("Expert+10 >> error(", err, ")");
   }
}

double AutoLot(double ad_0)
 {
   double l_minlot = MarketInfo(Symbol(), MODE_MINLOT);
   double l_maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
   double l_lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double LotSize = AccountBalance()/ MarketInfo(Symbol(), MODE_MARGINREQUIRED) * ad_0;
   LotSize = MathMin(l_maxlot, MathMax(l_minlot, LotSize));
   if (l_minlot >= 0.01) LotSize = NormalizeDouble(LotSize, 2);
   else {
      if (l_minlot >= 1.0) LotSize = NormalizeDouble(LotSize, 1);
      else LotSize = NormalizeDouble(LotSize, 0);
   }
   if (LotSize < l_minlot) LotSize = l_minlot;
   if (LotSize > l_maxlot) LotSize = l_maxlot;
   return (LotSize);
}
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn...
  #136 (permalink)  
Alt 14.02.12
Elite Mitglied
 
Registriert seit: Aug 2011
Ort: NRW
Beiträge: 764
Mast83 befindet sich auf einem aufstrebenden Ast
Mast83 eine Nachricht über ICQ schicken Mast83 eine Nachricht über Skype™ schicken
Standard

Lieber Sirius, ich würde mich freuen wenn Du Deine Änderungen hier posten würdest.
Vielen Dank

Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn...
  #137 (permalink)  
Alt 14.02.12
Mitglied
 
Registriert seit: Nov 2011
Ort: 87435 KPT
Beiträge: 63
Sirius befindet sich auf einem aufstrebenden Ast
Standard ??

Hallo Free99,

jetzt ist ein Mißverständnis entstanden ... meine Beispiele bezogen sich
auf die aus dem Internet gefunde Version, welche ich etwas genauer
angesehen habe, um nicht auf das Kaffeelesen reinzufallen.

Da ich die Grundidee interessant fand, habe ich natürlich daran weiter
gearbeit ... um eigene Vorstellungen darin einzubauen.

Frage an alle, wie kann ich den Beitrag von Free99 komplett lesen, bei mir
ist der Text rechts abgeschnitten und ich kann den fehlenden Text nur
erahnen?

Grüße SIRIUS
  #138 (permalink)  
Alt 14.02.12
Benutzerbild von nixname
Elite Mitglied
 
Registriert seit: Jan 2012
Beiträge: 134
nixname befindet sich auf einem aufstrebenden Ast
Standard

hallo,

@mast83:


vielen dank!!

grüße
  #139 (permalink)  
Alt 14.02.12
Gesperrter Benutzer
 
Registriert seit: Jan 2012
Ort: Leck
Beiträge: 1.033
Egoluxe [EA] -Trader befindet sich auf einem aufstrebenden Ast
Arrow

Zitat:
Zitat von Free99 Beitrag anzeigen
ich merke nochmal an zum Thema "boah das is aber n großes Volumen, da is der Account ja bald platt"

Wer MM so einstellt, dass pro Trade 10% des Accounts riskiert wird ist selbst schuld.

Nächstes Thema:
Wer den Backtest mal von 1.1.2011 bis heute laufen lässt, merkt dass die Gewinne ab Ende Oktober stagnieren. Heisst für mich, seit dem funktioniert die Strategie nichtmehr. Kein Wunder warum sie online ist ;-)
ich habe nur die Standartparameter genutzt die vorgegeben sind. Also funktioniert das so nicht mit den vorgegebenen Parametern... der 15vs5 hat jetzt 11 minus trades gemacht und 2 plus Trades. Vom Konto sind jetzt quasi nur noch 50-60% übrig, gestern waren es nur noch knapp 45%. Heute hat er eine Pending-Position eröffnet die weit über den Tageskurs liegt bei 1.32100 auf Long! Der Kurs wie ihr selbst sehen könnt liegt sehr weit darunter....die Position hab ich wieder gekillt.

Warum macht der 15vs5 sowas? Jetzt steht oben links in der Ecke das er schläft bis 00:00 Uhr! Auch komisch sowas! ^^

freundliche Grüße

egoluxe
  #140 (permalink)  
Alt 14.02.12
Gesperrter Benutzer
 
Registriert seit: Jan 2012
Ort: Leck
Beiträge: 1.033
Egoluxe [EA] -Trader befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von rekors Beitrag anzeigen
sehr komisch.. bei mir hat er bislang nur 3 Trades gemacht... 2 Davon nu im +..gestern wurde keine meiner Limit order erreicht
Kanne es sein das du den robot nicht D1 laufen hast.. denn gestern würde er definitiv keinen auftrag gemacht haben.
Hallo Rekors,

ich hab den 15vs5 in den D1 Chart gezogen! Ich schaue mir aber den Kursverlauf auf unterschiedlichen Timeframes an. Also quasi mal auf H1 oder M15 etc. Hat das irgentwelche Auswirkungen? Danke für Antworten! ;-)

freundliche Grüße

egoluxe
Thema geschlossen

Lesezeichen

Stichworte
ea, expert-advisor, metatrader, mt4


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------