- Poste Deinen Code bitte hier mittels (Alt+s oder das Symbol von der Editorleiste </>) als Code, nicht als Bild,
- Bei Vorfällen, wie Du sie beschreibst, gibt es immer eine Fehlermeldung im Log, Expert-Log oder Tester-Log,
- Außerdem gibt es den Debugger (aus dem Editor), wenn das Programm nicht so tut wie es soll,
- Unter Umständen kann man auch einmal die Funktion zB. iCustom nachlesen, dazu im Editor den Kursor 'draufstellen und F1 drücken.
Alls ist viel schneller, als eine Antwort hier!
Trotzdem viele Glück
- Poste Deinen Code bitte hier mittels (Alt+s oder das Symbol von der Editorleiste </>) als Code, nicht als Bild,
- Bei Vorfällen, wie Du sie beschreibst, gibt es immer eine Fehlermeldung im Log, Expert-Log oder Tester-Log,
- Außerdem gibt es den Debugger (aus dem Editor), wenn das Programm nicht so tut wie es soll,
- Unter Umständen kann man auch einmal die Funktion zB. iCustom nachlesen, dazu im Editor den Kursor 'draufstellen und F1 drücken.
Alls ist viel schneller, als eine Antwort hier!
Trotzdem viele Glück
Vielen Dank für deine Antwort.
1.
#import "AMBibliothek_001.ex5" double AktuellerAskPreis(); double AktuellerBidPreis(); double AktuellesGuthaben(); double AktuelleKontopositionen(); double AktuellerProfit(); #import #include<Trade\Trade.mqh> CTrade trade; void OnTick() { Comment ("Aktueller AskPreis: ", AktuellerAskPreis(), "\n" "Aktueller BidPreis: ", AktuellerBidPreis(), "\n" "Aktuelles Guthaben: ", AktuellesGuthaben(), "\n" "Aktuelle Kontopositionen: ", AktuelleKontopositionen(), "\n" "Aktueller Profit: ", AktuellerProfit()); //Erstelle ein Array für Preisdaten MqlRates Preisinformationen[]; // sortiere die Preise abwaerts von der aktuellen Kerze ArraySetAsSeries (Preisinformationen, true); // Kopieren Preisdaten in das Array int Data=CopyRates(Symbol(),Period(),0,3,Preisinformationen); // Erstelle Arrays für Indikatoren double EMA1Array[]; double EMA2Array[]; double RSIArray[]; double SAKArray[]; double SADArray[]; // definiere die Eigenschaften der Moving Average 1 int EMA1Definition=iMA(_Symbol,_Period,5,0,MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(EMA1Array, true); CopyBuffer(EMA1Definition,0,0,3,EMA1Array); // definiere die Eigenschaften der Moving Average 2 int EMA2Definition=iMA(_Symbol,_Period,10,(0),MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(EMA2Array, true); CopyBuffer(EMA2Definition,0,0,3,EMA2Array); // definere die Eigeschaften für den RSI int RSIDefinition=iRSI(_Symbol,_Period,14,PRICE_CLOSE); ArraySetAsSeries(RSIArray, true); CopyBuffer(RSIDefinition,0,0,3,RSIArray); // berechne den RSI-Wert der aktuellen Kerze double RSIWert=NormalizeDouble(RSIArray[0],2); // Sortieren von SA-Arrays abwärts ArraySetAsSeries (SAKArray,true); ArraySetAsSeries (SADArray,true); int SADefinition=iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH); CopyBuffer(SADefinition,0,0,3,SAKArray); CopyBuffer(SADefinition,1,0,3,SADArray); double KWertaktuell=SAKArray[0]; double DWertaktuell=SADArray[0]; double KWertK1=SAKArray[1]; double DWertK1=SADArray[1]; // KAUF Position eröffnungen if ((PositionsTotal() < 1)&&(EMA1Array[1]<EMA2Array[1])&&(EMA1Array[0]>EMA2Array[0])&&(KWertaktuell>KWertK1)&&(DWertaktuell>DWertK1)&&(KWertaktuell<80)&&(DWertaktuell<80)&&(RSIWert>50)) trade.Buy(0.1,NULL,AktuellerAskPreis(),(AktuellerAskPreis()-100 * _Point),0,NULL); // VERKAUF Position eröffnungen if ((PositionsTotal() < 1)&&(EMA1Array[1]>EMA2Array[1])&&(EMA1Array[0]<EMA2Array[0])&&(KWertaktuell<KWertK1)&&(DWertaktuell<DWertK1)&&(KWertaktuell>20)&&(DWertaktuell>20)&&(RSIWert<50)) trade.Sell(0.1,NULL,AktuellerBidPreis(),(AktuellerAskPreis()+100 * _Point),0,NULL); //TrailingStop Check CheckTrailingStop(); } void CheckTrailingStop() { double DCobenArray[]; double DCuntenArray[]; int DCDefinition=iCustom(_Symbol,_Period,"Indicators\\Admiral Donchian.ex5"); ArraySetAsSeries(DCobenArray, true); ArraySetAsSeries(DCuntenArray, true); CopyBuffer(DCDefinition,0,0,3,DCobenArray); CopyBuffer(DCDefinition,1,0,3,DCuntenArray); double DCobenWertK1=DCobenArray[1]; double DCuntenWertK1=DCuntenArray[1]; double SLKauf=DCuntenWertK1; double SLVerkauf=DCobenWertK1; for (int i=PositionsTotal()-1; i>=0; i--) { string symbol= PositionGetSymbol(i);//Positionssymbol ermitteln if ((_Symbol==symbol)&&(PositionGetDouble(POSITION_SL)<PositionGetDouble(POSITION_TP))) //Wenn Chartsymbol mit offenen Positionssymbol überreint stimmt { //Ticketnummer ermitteln ulong PositionsTicket = PositionGetInteger(POSITION_TICKET); //Aktuellen Stoploss ermitteln double AkSTL = PositionGetDouble(POSITION_SL); if (AkSTL<SLKauf) { trade.PositionModify(PositionsTicket,DCuntenWertK1,0); } } if ((_Symbol==symbol)&&(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_TP))) //Wenn Chartsymbol mit offenen Positionssymbol überreint stimmt { //Ticketnummer ermitteln ulong PositionsTicket = PositionGetInteger(POSITION_TICKET); //Aktuellen Stoploss ermitteln double AkSTL = PositionGetDouble(POSITION_SL); if (AkSTL<SLVerkauf) { trade.PositionModify(PositionsTicket,DCobenWertK1,0); } } } }
2. Leider gibt es keine Fehlermeldung. Der Code kann sogar durch den Strategietester gestartet werden. Leider kann die Geschwindigkeits nicht erhöht werden, das der Code bei Zeile 88 stehen bleibt.
3. Konnte mich leider noch nicht vertraut machen mit dem Debugger. Vielen Dank für den Tipp, werde mich mal schlau machen.
4. Habe ich gemacht, hatt mir leider nicht weiter geholfen. Meiner Auffassung nach, sollte es funktionieren.
Vielen Dank für die Tipps. Hoffe jemand kann mir tortzdem weiterhelfen.
REDREED
add. 4: Tja, erst lesen dann schreiben!
iCustom() sucht in: "MQL5/Indicators/", ergo "\\Indicators\\" darfst Du nur angeben, wenn im Ordner "MQL5/Indicators/" noch ein Verzeichnis Indicators existiert: "MQL5/Indicators/Indicators/".
Super Danke! Hatt funktioniert. Dann ist das Beispiel echt doof gewählt in der Hilfestellung.
Der DonChain-Chanell wurde nun aufgerufen und kann verwendet werden, leider habe ich noch das selbe probel wie vorher, das der Code irgenwo stecken beleibt, da ich im Strategietester die Zeit auf max beschleunige, und der Chartablauf bleibt bewegt sich nicht. :S
REDREED
- 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.
Guten Tag Zusammen
Ich versuche mich seit wenigen Tagen mit der EA-Programmierung einer TradingStrategie.
Nun habe ich folgendes Problem:
Das Programm kann inkl. Trailing Stop Fehlerlos kompiliert werden. Jedoch beleibt das Programm ab Programmzeile 88 stehen und die Strategie hängt sich im Strategietester auf.
Da ich für den Trailingstop gerne ein externen Indikator (Donchain Chanel) verwenden möchte, habe ich diesen über iCostum imporiert. Ich denke der Fehler liegt in der Wertedefinierung für den Indikator.
Auf eure hilfe würde ich mich freuen!
REDREED