- Verwende den Code-Button </> (oder Alt-S), um Code zu präsentieren!
- Um solche Probleme zu lösen gibt es den Debugger (im Editor STRG+F5: mit hist. Daten) und dazu setzt man mit F9 Haltepunkte.
Du hast Sachen im OnDeinit stehen die eigentlich ins OnInit gehören.
Wenn Du weißt, wieviele Elemente Du kopieren willst, mach das Array statisch: static double RSIArray[5], das spart etwas Rechenzeit. Und den Return-Wert von CopyBuffer sollte man abfragen, Fehlerbehandlung.Vielen Dank schonmal für die Hilfe.
Code werde ich ab sofort mit der entsprechenden Funktion hier posten und ich habe den entsprechenden Code in die OnInit() verschoben.
Das Debugging hat mich soweit gebracht, dass die Funtion EntrySignal einen Integer zurückgibt. Sie sollte ja eigentlich "Buy" oder "Sell" als String ausgeben.
Wisst Ihr woran das liegen könnte?
Solange niemand die Funktion EntrySignal kennt, kann niemand Dir eine Antwort geben!
string EntrySignal(int TradeSignal) { string Signal = ""; int InpSignal = TradeSignal; if (TradeSignal==1) { double RSIArray[5]; //ArraySetAsSeries(RSIArray,true); int RSIHandle = iRSI(_Symbol,_Period,14,PRICE_CLOSE); CopyBuffer (RSIHandle,0,0,5,RSIArray); if(RSIArray[0]>70) Signal="Buy"; if(RSIArray[0]<30) Signal="Sell"; } if (TradeSignal==2) { double AlligatorJawsArray[5], AlligatorTeethArray[5], AlligatorLipsArray[5]; /*ArraySetAsSeries(AlligatorJawsArray,true); ArraySetAsSeries(AlligatorTeethArray,true); ArraySetAsSeries(AlligatorLipsArray,true); */ int AlligatorHandle = iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); CopyBuffer (AlligatorHandle,0,0,5,AlligatorJawsArray); CopyBuffer (AlligatorHandle,1,0,5,AlligatorTeethArray); CopyBuffer (AlligatorHandle,2,0,5,AlligatorLipsArray); if(AlligatorLipsArray[0]>AlligatorTeethArray[0] && AlligatorTeethArray[0]>AlligatorJawsArray[0 ] && AlligatorJawsArray[1]<AlligatorTeethArray[1]) Signal="Buy"; if(AlligatorLipsArray[0]<AlligatorTeethArray[0] && AlligatorTeethArray[0]<AlligatorJawsArray[0] && AlligatorJawsArray[1]>AlligatorTeethArray[1]) Signal="Sell"; } return (Signal); }
Also ich würde unbedingt die Compiler-Option
#property strict
eintragen!
Du verwendest offenbar "EntrySignal" als ganz verschiedene Variablen - kein Wunder, dass Du Dich nicht auskennst!
Danke nochmal. Habe Eure Tips umgesetzt.
Ich konnte den Fehler auch weiter eingrenzen. Es liegt am auslagern der EntrySignal Funktion in eine eigene Datei.
Wenn ich die Funktion einfach in den Code des Hauptprogramms kopiere, geht es.
Seltsam, oder?
Yeah, ich konnte es lösen. Der Compiler hat mir im Hauptprogramm einen Fehler angezeigt. Es war eine Variable doppelt genutzt. Das konnte er aber nicht sehen, wenn die Funktion in eine eigene Datei ausgelagert war.
Danke für die guten Tipps!
- 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 zusammen,
ich brauche nochmal Eure Hilfe.
Ich habe angefangen FUnktionen in eigene Dateien auszulagern und mit enum zu arbeiten. Irgendwie bekomme ich damit aber keinen EA hin, der wirklich handelt.
Hier ist der Code des Main-EA:
Und hier der ausgelagerte EntrySignal Code:
Danke im Voraus liebe Community.