Bin ich auf dem richtigen Wege, wenn ich es mal mit Buffern versuche?
- Erst einmal herzlich willkommen und schon mal viel Erfolg später!
- Genereller Tipp vor dem Selbermachen erst einmal suchen, denn es gibt fast nix, was nicht schon programmiert wurde!
- So gibt es mehrere verschiedene Versionen vom RSI, einschl. dem originalen => nimm den (ist fehlerfrei!), mach eine Kopie und
ändere die Kopie nach Deinen Ideen und kompiliere nach jedem Stritt - so lernst Du am schnellsten, denke ich!
- Wenn dann Dein RSI sich fehlerfrei kompilieren lässt, aber irgendwie falsch Zahlen liefert, dann nimm im Editor den Debugger und gehe Zeile für Zeile durch Dein Programm und kontrolliere die Werte der einzelnen Variablen - ist schneller als hier eine Frage stellen und einen halben oder ganzen Tag auf Antwort warten.
- Bei einem Fehler immer auch die Logs mitliefern - einfach nur ist falsch oder geht nicht oder crasht ist zu wenig für eine Hilfe!
Danke für eure Antworten!
Versuche es jetzt mal weiter, leider geht es nur extrem kleinschrittig voran.
Die Einarbeitung ist wirklich ziemlich schwierig.
Woran kann es liegen, wenn der EA fehlerfrei kompiliert, auch geladen wird, aber dann im Strategietester keine Trades ausführt?
Habe mich an ein Tutorial gehalten, aber nun führt der EA leider keine Aktionen aus.
//+------------------------------------------------------------------+ //| Follow the volume DAX & DOW.mq4 | //| Thorsten Kock | //| | //+------------------------------------------------------------------+ #property copyright "Thorsten Kock" #property link "" #property version "1.00" #property strict input int SMAPeriod = 100; int ThisBarTrade = 0; datetime PeriodenStartZeit; bool NeuePeriodeBegonnen,LongSignal,ShortSignal; double RSI,SMA,RSIPreviousPeriod; int LongOrder,ShortOrder; extern double HandelsLots = 0.1; extern int MagicNummer = 12345; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- PeriodenStartZeit = Time[0]; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- // wenn neue Bar if(ThisBarTrade != Bars) { ThisBarTrade = Bars; double RSI = iRSI(NULL,0,14,PRICE_CLOSE,1); double RSIPreviousPeriod = iRSI(NULL,0,14,PRICE_CLOSE,1); double SMA = calcRSIAverage(SMAPeriod); // 100 SMA auf den RSI^ } //Handelssignale ermitteln //Buy-Signal if(RSI>SMA && RSIPreviousPeriod<SMA) { LongSignal = true; } else { LongSignal = false; } //Short-Signal if(RSI<SMA && RSIPreviousPeriod>SMA) { ShortSignal = true; } else { ShortSignal = false; } //Long-Signale umsetzen if (LongSignal == true) { //Mögliche Short-Order schließen if(ShortOrder>0) { OrderSelect(ShortOrder,SELECT_BY_TICKET); bool ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Ask,200,Blue); if (ShortOrderGeclosed==true) ShortOrder=0; } //Long-Order eröffnen while(LongOrder<=0) { LongOrder = OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,200,0,0,"RSILong",MagicNummer,0,Green); } } if (ShortSignal == true) { //Mögliche Long-Order schließen if(LongOrder>0) { OrderSelect(LongOrder,SELECT_BY_TICKET); bool LongOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Bid,200,Blue); if (LongOrderGeclosed==true) LongOrder=0; } //Short-Order eröffnen while(ShortOrder<=0) { ShortOrder = OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,200,0,0,"RSIShort",MagicNummer,0,Red); } } //Ticketnummern nach Closing auf 0 zurücksetzen if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true) { if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0; } if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true) { if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0; } } // Funktionen hier runter //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double calcRSIAverage(int period) { double temp = 0.0; for(int i = 1; i < period + 1; i++) { temp += iRSI(NULL,0,14,PRICE_CLOSE,i); } return temp/period; } //+------------------------------------------------------------------+
Woran kann es liegen, wenn der EA fehlerfrei kompiliert, auch geladen wird, aber dann im Strategietester keine Trades ausführt?
Habe mich an ein Tutorial gehalten, aber nun führt der EA leider keine Aktionen aus.
Dann such Dir eine Situation im Chart aus, wo der EA handeln sollte und starte den Debugger kurz vorher und kontrolliere die Variablen, die
einen Auftrag auslösen sollten - das wäre das Standardvorgehen!
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo liebe Leute,
ich kriege bei diesem Code leider die Fehler nicht raus.
Es soll ein simpler RSI-EA sein, der ein Buy-Signal generiert, wenn der RSI über einen definierten Moving Average steigt.
Behebe ich einen der Fehler beim Kompilieren, tauchen gleich mehrere neue auf :(
Vielleicht findet ja jemand von euch Zeit, mal drüberzuschauen und mir zu sagen, was das Problem am Code ist.
Ich glaube, es liegt an falscher Klammersetzung, aber da ich neu in MQL bin, weiß ich gar nicht so recht, was ich wo genau beheben soll.