Kleinerbroker Posted December 18, 2011 Report Posted December 18, 2011 Gleich die erste geschnappt : bool isTradingTime() //nicht unbedingt notwenig, aber bereits vorbereitet für Zeitfilter Variablen Tradinghour1 ....6 können externe Variablen (logo: Format Datetime ) sein . //+-----------------------------------------------------------------------------------------------+ //| Community_Istradingtime.mqh | //| The code should be used for Community-EA only | //+-----------------------------------------------------------------------------------------------+ //+-----------------------------------------------------------------------------------------------+ //| function : checks if EA is allowed to trade or off-time | //+-----------------------------------------------------------------------------------------------+ // | bool Istradingtime() // | { // | if ((Tradinghour1 <= Hour()) && (Tradinghour2 > Hour()) || // | (Tradinghour3 <= Hour()) && (Tradinghour4 > Hour()) || // | (Tradinghour5 <= Hour()) && (Tradinghour6 > Hour())) // | // | return(true); // | else // | return(false); // | } // | //------------------------------------------------------------------------------------------------+ Vor dem Heiken habe ich Respekt, den darauf , die MA , kann ich wieder relativ easy machen ...soll ich ? Wermacht bitte Heikin ? KB PS.: Beruflicher Stress (Edit) plus gewisser Frustlevel bei meinem Ernten haben mich dem Wolf u.a. den Vortritt gewähren lassen .Aber ich bin da ..... was sonst . 1
Der Wolf Posted December 19, 2011 Report Posted December 19, 2011 eigentlich hatte ich auf ein paar Wortmeldungen und/oder Freiwillige gehofft...... haben mich dem Wolf u.a. den Vortritt gewähren lassen . Ich habe mich seit Anfang/Mitte November ganz bewußt aus der Codierung herausgehalten, damit es nicht wieder "mein EA mit Euren Anmerkungen" wird. Siehe hierzu:http://www.tom-next.com/community/topic/59588-projekt-entwicklung-community-ea/page__view__findpost__p__125372 Aber ich glaube wenn wir es weiter in dem Stil machen (Du erklärst uns was im EA passiert), ist es endgültig nur dein EA und wir kommentieren. Ich habe meine Rolle im CommunityEA seitdem eher in einer beratenden Funktion gesehen. Da ich aber den Chandelier ins Spiel gebracht habe, würde ich mich anbieten, die entsprechenden Funktionen calcInitStopDiff() und calcNewTrailingStop() incl. Parabolic zu codieren - natürlich nur, falls sich niemand anders darum reißt ! 3
Mythos Posted December 19, 2011 Report Posted December 19, 2011 Ich habe mich seit Anfang/Mitte November ganz bewußt aus der Codierung herausgehalten, damit es nicht wieder "mein EA mit Euren Anmerkungen" wird. Da haben wir uns möglicherweise falsch verstanden. Damals gings um den "fertigen" Vorschlag von dir, hätten wir den direkten übernommen und "nur" angepasst, wärs eben "dein EA" mit unseren anmerkungen geworden. So ist es stärker ein Communityprojekt da wir Funktion für Funktion gemeinsam durchgegangen sind. jetzt ist es eher schon ein bissl das Risiko das es "mein Code" wird, deswegen würd ich mich sehr über Beteiligung freuen. Also schnapp dir eine Funktion und los gehts ;) Die Trailingfunktion seh ich als eine der spannensten/aufwändigsten wo es sicher diskussionspotential geben wird. @KB: thx für die Funktion, magst du die verwendeten externen Parameter kurz im Code dazu beschreiben? Wär allgemein sicher nit schlecht, wenn wir dann bei jedem Parameter eine kurze Erklärung dazutun. @all: es muss sich auch niemand fürchten wenn er denkt "ich hab zuwenig Erfahrung". Schnappt euch einfach eine Funktion die noch keiner hat und probiert es. Wir können die Funktion dann ggf. auch kollektiv finalisieren/perfektionieren.
Der Wolf Posted December 19, 2011 Report Posted December 19, 2011 Da haben wir uns möglicherweise falsch verstanden. ... jetzt ist es eher schon ein bissl das Risiko das es "mein Code" wirdSehe ich auch so ! Also ich schnapp mir dann die Chandelier/Parabolic Funktionen calcInitStopDiff() und calcNewTrailingStop().
Kleinerbroker Posted December 19, 2011 Report Posted December 19, 2011 magst du die verwendeten externen Parameter kurz im Code dazu beschreiben? //+-----------------------------------------------------------------------------------------------+ //| Definition of the variables which relate to Istradingtime() | //+-----------------------------------------------------------------------------------------------+ // | extern int Tradinghour1 = 006 ;// | extern int Tradinghour2 = 012 ;// | extern int Tradinghour3 = 013 ;// | extern int Tradinghour4 = 018 ;// | extern int Tradinghour5 = 019 ;// | extern int Tradinghour6 = 023 ;// | // | //+-----------------------------------------------------------------------------------------------+ Der Filter prüft ob die aktuelle Zeit zwischen den Uhrzeiten 1/2 , 3/4 oder 5/6 ist . Wenn das derFall ist, dann darf gehandelt werden . Es wird "true" zurück gegeben == Ja, es darf gehandelt werden. Für westliche Währungen sollte es reichen , wenn man die Nacht und die Mittagspausen in EUR und USD als Blackout nimmt .Ich sehe mir ja auch viel den AUD an, andere vielleicht auch den JPY und dann könnte man vielleichtauch noch die Zeit von morgens 02:00 bis etwa 05:00 für den Handel zulassen . KB Edit : Wenn ich bis zum 26.12. Zeit bekomme, mache ich noch den int calcFilterSignal() //check ob MAs auf höherer Ebene entsprechenden Abstand haben bool isTimeOut(datetime openTime,int orderType) // check ob Timout-Trigger erreicht
Mythos Posted December 20, 2011 Report Posted December 20, 2011 Edit : Wenn ich bis zum 26.12. Zeit bekomme, mache ich noch den int calcFilterSignal() //check ob MAs auf höherer Ebene entsprechenden Abstand haben bool isTimeOut(datetime openTime,int orderType) // check ob Timout-Trigger erreicht spricht aus meiner Sicht nix dagegen. Ich hab mal Marker in die Liste gesetzt. Freut mich das ihr so aktiv dabei seid
Mythos Posted December 23, 2011 Report Posted December 23, 2011 So, bin selber die Woche zu nix gekommen, werd aber über die Feiertage dann auch noch 1-2 Funktionen machen. Da ich heut den Heimaturlaub antrete und somit morgen sicher nimmer dazu komm, heute schon allen frohe Weihnachten. Mit dem ersten Backtest zu Weihnachten is nix worden, aber dafür geht es schön Stück für Stück voran. Werden wir halt erst im nächsten Jahr reich ;) 1
Kleinerbroker Posted December 23, 2011 Report Posted December 23, 2011 Ha, EINMAL schneller als Vola gewesen @Mythos , die Pips sind jetzt eh wirr . Aber wir können rechtzeitig zu den ersten guten Pips in 2012 soweit sein, dass wäre durchaus denkbar . Ich fange gerade mit dem FilterSignal an . Dir eine gute Heimreise zu Deinen Lieben, was gibt es schöneres , als so die Weihnacht zu beginnen ? Meine Lieben sind schon alle angekommen, es wird gemütlich bei "Kleinerbroker´s Zuhause" Auch ich wünsche Dir eine frohe und gesegnete Weihnacht . KB
Kleinerbroker Posted December 23, 2011 Report Posted December 23, 2011 TEMP_KB_eTomNextCommunity.mq4 Ok ich habe alle drei Funktionen eingefügt, in einen Rahmen gesetzt und mit meinem Index "KB" versehen, damit leicht zu finden ist .Es sind 4 solche Rahmen, eine Ergänzung bei "Parameter" //+-----------------------------------------------------------------------------------------------+ // isTradingTime KB was here| extern int Tradinghour1 = 006 ;// | extern int Tradinghour2 = 012 ;// | extern int Tradinghour3 = 013 ;// | extern int Tradinghour4 = 018 ;// | extern int Tradinghour5 = 019 ;// | extern int Tradinghour6 = 023 ;// | // | extern string Markt = "EURUSD-fx";// Activetrades 5 Digit Demo | // | // calcFilterSignal | extern int TF_MA = 240 , FS_MA_Schnell = 3 , FS_MA_Slow = 6 ;// 4 Std TF , MA 12Std und 1 Tag | extern double Gap = 0.0025 ;// Distanz zwischen den beiden MA | // isTimeOut | extern int y = 20 ;// Zahl der Bars innerhalb der das letzte HH/LL gefunden werden muss | //+-----------------------------------------------------------------------------------------------+ .... dann der Filter für die Zeiten, den ich oben bereits gepostet hatte : //+-----------------------------------------------------------------------------------------------+ // KB was here| bool isTradingTime() // | { // | if ((Tradinghour1 <= Hour()) && (Tradinghour2 > Hour()) || // | (Tradinghour3 <= Hour()) && (Tradinghour4 > Hour()) || // | (Tradinghour5 <= Hour()) && (Tradinghour6 > Hour())) // | // | return(true); // | else // | return(false); // | } // | //------------------------------------------------------------------------------------------------+ ............ der Trendfilter, basierend auf EMA ... ich habe einfach alles Variabel und somit optimierbar gemacht //------------------------------------------------------------------------------------------------+ // KB was here| // übergeordneter Trend erkannt durch Abstand von 2 MAs, dient als Filter für die Einstiege. | // returns one out of FLAT, LONG, SHORT | // TF_MA = 240 , FS_MA_Schnell = 3 , FS_MA_Slow = 6 ;// 4 Std TF , MA 12Std und 1 Tag | // Gap = 0.0025 ;// Distanz zwischen den beiden MA | int calcFilterSignal() { // | double Abstand ;// | double MA_Schnell = iMA (Markt , TF_MA , FS_MA_Schnell , 0 , MODE_EMA ,PRICE_CLOSE ,0) ;// | double MA_Slow = iMA (Markt , TF_MA , FS_MA_Slow , 0 , MODE_EMA ,PRICE_CLOSE ,0) ;// | Abstand = MA_Schnell - MA_Slow ;// "+" ist Long , "-" ist Short | if (MathAbs(Abstand) < Gap) return(FLAT) ;// Signal ist "Rauschen" | if (Abstand > 0) return (LONG);else return (SHORT);// Eindeutiges Signal | } // | //------------------------------------------------------------------------------------------------+ ........ und schlussendlich der Zeitüberlauf ... der gefällt mir konzeptionell sehr gut und kommt in den Ernten rein : //------------------------------------------------------------------------------------------------+ // KB was here| // Timeout (== true ) wenn y Bars lang kein neues HH (im long fall) | bool isTimeOut(datetime openTime,int orderType) {// | bool Flag = true ;// | int Kanallang = iBarShift( Markt, 0 , openTime );// Bar Index zum Zeitpunkt des Öffnen der | // aktuell selektierten Order | if (orderType == OP_BUY) // wenn es sich um einen Long handelt, dann | int uptrendhighbar = iHighest( Markt, 0 , MODE_HIGH , Kanallang , 1 );// suche die Adresse des | if ((y - uptrendhighbar) < 0) Flag = false ;// letzten Highest High und "false" wenn "älter" | // | if (OrderType() == OP_SELL) // wenn es sich um einen Short handelt, dann | int downtrendlowbar= iLowest( Markt , 0 , MODE_LOW , Kanallang , 1 ) ;// suche die Adresse des | if ((y - uptrendhighbar) < 0) Flag = false ;// letzten Highest High und "false" wenn "älter" | // | return(Flag) ;// | } // | //------------------------------------------------------------------------------------------------+ Und mir macht dieses Projekt richtig richtig richtig Spaß . Mein Dank an Hr. Tom-Next , dass ich hier mitmachen darf . KB 5
wingman Posted December 24, 2011 Report Posted December 24, 2011 vorweihnachtlicher Stress oder gesunkene Motivation in der Mannschaft?eigentlich hatte ich auf ein paar Wortmeldungen und/oder Freiwillige gehofft... ...also wenn es noch was zu coden gibt, übernehme ich gerne einen Part, auch wenn ich etwas spät dazustosse. 3
Kleinerbroker Posted December 24, 2011 Report Posted December 24, 2011 @Wingman : #224 ist eine Liste der ToDo´s und wer was macht/bereits gemacht hat . Wäre schön . :-) Grüße KB
Hausel Posted December 25, 2011 Report Posted December 25, 2011 HiBin per Zufall auf den Thers gestossen, schöne Sache. Habe den Ea runtergeladen und kann ihn nicht testen ist das Ea noch nicht fertig? Kann leider nicht programmieren, hätte aber zum Einstieg was bsp Eurusd long wenn Usdchf short ist so was können man mit bsp Rsi oder Gd oder anderen Indis machen. Grüsse Pit
Mythos Posted December 25, 2011 Report Posted December 25, 2011 Hallo Hausel und frohe Weihnachten, die Logik für Version 1 des EA ist bereits fixiert (siehe Post #171 ). Der EA ist noch nicht fertig, im Moment steht das Grundgerüst und wird gerade mit Logik gefüllt. @KB vielen Dank, ich werds gleichmal einbauen und dann eine neue Übersicht posten.
Kleinerbroker Posted December 25, 2011 Report Posted December 25, 2011 Ich muss die letzte Funktion aus #234 leider verbessern, das ist mir ein Fehler passiert : //------------------------------------------------------------------------------------------------+ // KB was here| // Timeout (== true ) wenn y Bars lang kein neues HH (im long fall) V1:12252011| bool isTimeOut(datetime openTime,int orderType) {// | bool Flag = true ;// | int Kanallang = iBarShift( Markt, 0 , openTime );// Bar Index zum Zeitpunkt des Öffnen der | // aktuell selektierten Order | if (orderType == OP_BUY) // wenn es sich um einen Long handelt, dann | int uptrendhighbar = iHighest( Markt, 0 , MODE_HIGH , Kanallang , 1 );// suche die Adresse des | if ((y - uptrendhighbar) < 0) Flag = false ;// letzten Highest High und "false" wenn "älter" | // | if (OrderType() == OP_SELL) // wenn es sich um einen Short handelt, dann | int downtrendlowbar= iLowest( Markt , 0 , MODE_LOW , Kanallang , 1 ) ;// suche die Adresse des | if ((y - downtrendlowbar) < 0) Flag = false ;// letzten Highest High und "false" wenn "älter" | << Korrektur // | return(Flag) ;// | } // | //------------------------------------------------------------------------------------------------+ TEMP_V1_KB_eTomNextCommunity.mq4 KB
Mythos Posted December 25, 2011 Report Posted December 25, 2011 so, habs mal eingebaut und ein paar Änderungen gemacht, ich hoff es passt.im Detail:- Hab y und Gap als Parameter ein bissl sprechendere Namen gegeben ;)- Gap als Parameter auf Ticks geändert um besser für verschiedene Märkte zu passen (sowas vergisst man immer zu ändern)- ein paar Layoutänderungen ( if-else auf Zeilen aufgeteilt, Einrückungen einheitlich etc.)- Hab auch ein paar Variablen umbenannt um den Codingstyle einheiltich zu halten (Variablen kleinbuchstaben, großer Anfangsbuchstaben für Parameter) Beschwerden zu Anpassungen direkt an mich ;) Code compiliert, ich hoff sonst sind keine Fehler drin. zum Parameter "Markt": damit war kann man einstellen auf welchen Markt die MAs gerechnet werden sollen. Macht das in der Form Sinn? Ich denke der EA wird auf den Chart gezogen auf dem er arbeiten soll, und wir wollen ja auf diesem Markt die Filter und Signale rechnen. Da ist es eher eine Fehlerquelle wenn der markt für den Filter ein eigener Parameter ist oder? noch offen: (mythos) int calcEntrySignal() //check ob Heiken Ashi gedreht hat (Wolf) double calcInitStopDiff(int orderType) // Berechnung des Chandelier double calcTPDiff(int orderType) // calc des TP double calcLots(double stopDiff) // Lotsizeberechnung nach abhängig von externem Parameter (Wolf) double calcNewTrailingStop(double curStop,int orderType) // trail des stops bool isBreakEven(double openPrice,int orderType) // check ob BreakEven-Trigger erreicht eTomNextCommunity.mq4 1
Kleinerbroker Posted December 25, 2011 Report Posted December 25, 2011 @Mythos : Feedback in "Steno" => Finde alles gut, bzw Danke für Korrekturen und Aufzeigen besserer Lösungen (Ticks und Layout) . Frage : "Markt" hast Du belassen aber ich verstehe auch, dass besser kein Parameter . Bitte so ändern, wie Du in #240 vorgeschlagen hast . vG´s . :-) . KB PS.: Wenn ich mein Criterion() im Griff habe, schnappe ich mir die nächste Fkt von oben .
Mythos Posted December 25, 2011 Report Posted December 25, 2011 @Mythos : Feedback in "Steno" => Finde alles gut, bzw Danke für Korrekturen und Aufzeigen besserer Lösungen (Ticks und Layout) . Frage : "Markt" hast Du belassen aber ich verstehe auch, dass besser kein Parameter . Bitte so ändern, wie Du in #240 vorgeschlagen hast . vG´s . :-) . KB PS.: Wenn ich mein Criterion() im Griff habe, schnappe ich mir die nächste Fkt von oben . Ja wollte es erst zur diskussion stellen und nit einfach eigenmächtig funktionalitäten ändern. @funktionen: ich würde dann bei gelegenheit den Heiken Ashi machen.
Mythos Posted December 29, 2011 Report Posted December 29, 2011 Soda, bin endlich auch zu was gekommen und hab den HA (also das Entry-Signal) eingebaut: int calcEntrySignal() { double ha_open_1= iCustom(Symbol(),Period(),"Heiken Ashi",White,White,White,White,2,1); double ha_open_2= iCustom(Symbol(),Period(),"Heiken Ashi",White,White,White,White,2,2); double ha_close_1= iCustom(Symbol(),Period(),"Heiken Ashi",White,White,White,White,3,1); double ha_close_2= iCustom(Symbol(),Period(),"Heiken Ashi",White,White,White,White,3,2); //no signal if no candle-body if(ha_open_1 == ha_close_1 || ha_open_2 == ha_close_2) return(FLAT); if(ha_open_1 < ha_close_1 && ha_open_2 > ha_close_2) return(LONG); if(ha_open_1 > ha_close_1 && ha_open_2 < ha_close_2) return(SHORT); return(FLAT); } verwendet hab ich den Heiken Ashi der mit MT direkt mitkommt. Mir ist auch noch ein Fehler im isTimeOut aufgefallen und der Markt-Parameter is jetzt weg.Aktuelle Version ist 0.4eTomNextCommunity.mq4 Meine kindliche Neugierde hat natürlich gewonnen und ich hab den EA gleichmal getestet/optimiert.Eigentlich nicht ganz sinnvoll, da bis jetzt nur der Timeout-Exit implementiert ist, aber:Gleich als Preamble: Ich hab grad nur 5 Monate M15 Daten, wollte mir nicht mehr suchen, war ja nur ein kleiner "sinnloser" Test. Mit den Defaultparametern wars natürlich mal negativ aber weniger als erwartet. Nach ein bissl Optimierung kamen schnell positive Ergebnisse (immerhin besser als ein System das NUR verliert egal was man macht).Sehr schnell war klar das die Shortpositionen viel profitabler sind als die Long. Und vor allem wenn man den Filter defakto ausschaltet. Ein Blick auf den Chart in der Zeit zeigt: Da gibts einen übergeordneten Abwärtstrend. Also erste Erkenntniss: 3/6 als Filterparameter sind viel zu klein, man muss vermutlich im H4 höhere MAs nehmen bzw. macht es womöglich sogar Sinn noch höhere TF für den Filter zu betrachten. Was jetzt auch spannend wird, ist wie diese Kombination dann im längeren (richtigen) Backtest abschneidet und inwiefern zusätzliche Exits das ganze verbessern. Auf jeden Fall bin ich dafür die MAs für den Filter vom Typ her variabel zu machen (EMA, SMA...) bzw. glaub ich das der SMA zu lahm sein dürfte. zum Vergleich noch die Variante ohne Filter, mit nur Short. Für interessierte stille Mitleser: Der EA steht ggf. natürlich zum Verkauf. Der Erlös kommt der Community zugute. SCNR und falls wir uns nicht mehr lesen sollten: An guaten Rutsch ;) EDIT: Da man ja nach dem Post nit mit dem Testen aufhört, ich noch das final-überoptimierte Ergebnis der Version 0.4 ;) Wenns in der Form auch auf längeren Testreihen läuft, hama gewonnen. 8
Der Wolf Posted December 30, 2011 Report Posted December 30, 2011 Ich habe mich über die Feiertage aus allem was mit Computern zu tun hat größtenteils herausgehalten und sehe gerade - ihr wart in der Zwischenzeit ganz schön fleißig ! Meine beiden Funktionen für Inital- bzw. Trailingstop habe ich nicht vergessen. Will demnächst (evtl. sogar heute) damit anfangen, wenn nichts dazwischenkommt.Ich denke spätestens am Montag, also nach Sylvester/Neujahr bin ich soweit. Falls ich bis dahin mich nicht mehr melden sollte, wünsche ich allen einen Guten Rutsch ins neue Jahr und viel Erfolg in demselbigen !
Kleinerbroker Posted December 31, 2011 Report Posted December 31, 2011 //----------------------------------------------------------------- // TP mit fixem Abstand // returns the distance of the TP or 0 if there is no TP double calcTPDiff(int orderType) { //+-----------------------------------------------------------------------------------------------+ // Version 0.5 KB was here| // | if (orderType == OP_BUY && TP_Digits_Long != 0) {// | return (TP_Digits_Long * Point) ;}// | if (orderType == OP_SELL && TP_Digits_Short != 0) {// | return (-1 * TP_Digits_Short * Point) ;}// | // | //+-----------------------------------------------------------------------------------------------+ return(0); } Hier ist der TP , im Rahmen wieder mein Senf .Dazu die Variablen : //+-----------------------------------------------------------------------------------------------+ // Version 0.5 KB was here| extern int TP_Digits_Long = 50; // Profitziel für den LongTrade | extern int TP_Digits_Short = 50; // Profitziel für den LongTrade | // | //+-----------------------------------------------------------------------------------------------+ V0.5._eTomNextCommunity.mq4 KB PS.: Auf jeden Fall bin ich dafür die MAs für den Filter vom Typ her variabel zu machen (EMA, SMA...) bzw. glaub ich das der SMA zu lahm sein dürfte.Es sind im Moment EMA´s aber ich mache das jetzt auch variabel , dann können wir das auch noch ändern . 4
Mythos Posted January 1, 2012 Report Posted January 1, 2012 sehr schön. Da ich etwas verwirrt war warum du für Short einen negativen Abstand angibst, hab ich nochmal nachgeschaut wie der Wert verwendet wird. Und siehe da, der böse mythos hat einen copy&paste error eingebaut. Eigentlich war geplant das der Abstand immer positiv ist und im Shortfall eben abgezogen wird. Hier die korrekte Version 0.5:eTomNextCommunity.mq4 @KB: bitte wenn du den gesamten EA postest, auch im Changelog am Fileanfang die aktuelle Version anpassen und die geänderten codeteile dokumentieren. 2
Kleinerbroker Posted January 1, 2012 Report Posted January 1, 2012 Ja , @ Mythos , sowohl was das negative Vorzeichen betrifft als auch den Änderungsindex, von dem ich lieber die Finger lassen werde ...viel Köche usw . 1.) Zwischenfragen : 1.1. )Die Multipikation innerhalb der Return(_____) mit "-1" hätte aber schon funktioniert, oder ? Frage eigentlich nur, weil es jedenfalls ungewöhnlich ist .1.2. ) Name von Variablen : Du entfernst die "_" , weil ..... ? Ich nutze diese , um die Lesbarkeit im Namen zu verbessern . 2.) So, nun die MA´s optional integriert : 2.1.) Parameter und Definition des String : //+-----------------------------------------------------------------------------------------------+ // Version 0.5 KB was here| extern int TP_Digits_Long = 50; // Profitziel für den LongTrade | extern int TP_Digits_Short = 50; // Profitziel für den LongTrade | // | extern bool EMA = true; // Für MA-Filter "Exponentiell" ausgewählt | extern bool SMA = false; // Für MA-Filter "Simple" ausgewählt | string Mode_MA ; // Variable die mit Mode der MA belegt werden wird | //+-----------------------------------------------------------------------------------------------+ 2.2.) Nun muss in der Init auf Falscheingabe geprüft und anschliessend - wenn alles richtig war - die Stringvariable belegt werden . //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //+-----------------------------------------------------------------------------------------------+ // Version 0.5 KB was here| // | if (EMA == SMA ) { // Fehler in der Eingabe | Alert ("Falscher Input bei Moving AVG , bitte nur eines auswählen"); deinit();}// | if (EMA) Mode_MA = "MODE_EMA" ; // | if (SMA) Mode_MA = "MODE_SMA" ; // | // | //+-----------------------------------------------------------------------------------------------+ //---- return(0); } Das gefällt mir nicht, kann ich die Eingabe für die EMA/SMA "fool proove" coden ? 2.3.) Nun füge ich nur noch die Variable in den Aufruf der "iMA" ein : //------------------------------------------------------------------------------------------------+ // KB was here| // übergeordneter Trend erkannt durch Abstand von 2 MAs, dient als Filter für die Einstiege. | // returns one out of FLAT, LONG, SHORT | // | // verwendete Parameter: | // TF_MA = 240 , FS_MA_Schnell = 3 , FS_MA_Slow = 6 ;// 4 Std TF , MA 12Std und 1 Tag | // MinFilterGap = 0.0025 // Distanz zwischen den beiden MA | int calcFilterSignal() { // | double abstand; // | double ma_Schnell = iMA (Symbol() , TF_MA , FS_MA_Schnell , 0 , Mode_MA ,PRICE_CLOSE ,0) ;// | double ma_Slow = iMA (Symbol() , TF_MA , FS_MA_Slow , 0 , Mode_MA ,PRICE_CLOSE ,0) ;// | Task erledigt, vielleicht aber ein wenig viel Aufwand für den Zweck . 3.) Der Zweck : Wenn man glaubt das die Schnelligkeit der MA wichtig sein kann, dann sollte man eventuell sogar die HULL-MA nutzen . Die habeich mal vor längerer Zeit genutzt, als ich mit der MA ein Signal generieren wollte . Da wir die MA als Filter nutzen, ist eine wesentliche Empfindlichkeit nicht nötig ? 4.) Multicharts : Ich habe ein Interesse daran zu sehen, wie dieses MT4-HS in MC aussieht und noch mehr, ob wir bei Nutzung von MC zu denselben Ergebnissen kommen .Gibt es hier MC-User, die mit Ihrer Plattform schon gut umgehen können , und dieses HS schnell und einfach in EL transferieren können und wollen ?Sonst wird das mein nächstes Projekt . KB
Mythos Posted January 1, 2012 Report Posted January 1, 2012 1.1. )Die Multipikation innerhalb der Return(_____) mit "-1" hätte aber schon funktioniert, oder ? Frage eigentlich nur, weil es jedenfalls ungewöhnlich ist .ja sollte funktionieren. Er wertet zuerst die Expression innerhalb der (...) aus und gibt den Wert zurück. 1.2. ) Name von Variablen : Du entfernst die "_" , weil ..... ? Ich nutze diese , um die Lesbarkeit im Namen zu verbessern .Eigentlich nur weil ichs so gewohnt bin und alle anderen Parameter im Moment auch in Kapitälchen ohne _ sind. Es geht nur um einheitliche Conventionen, damit man im Code sofort sieht ob das eine lokale Variable, globale Variable oder externer Parameter ist.Mir fällt grad auf, das die Filter-Parameter auch "_" drin haben. Wie machen wirs? Kapitälchen mit oder ohne "_"? @MA: Funkt so leider nicht. Der Parameter bei iMA ist kein String. MODE_EMA ist eine vordefinierte Konstante und eigentlich ein integer. "sicher" wäre es wenn man die MODE-Konstante per Parameter übergibt. extern int FilterMAMode = 1; // 0 - SMA, 1 - EMA, 2 - SMMA ... //------------------------------------------------------------------------------------------------+ // KB was here| // übergeordneter Trend erkannt durch Abstand von 2 MAs, dient als Filter für die Einstiege. | // returns one out of FLAT, LONG, SHORT | // | // verwendete Parameter: | // TF_MA = 240 , FS_MA_Schnell = 3 , FS_MA_Slow = 6 ;// 4 Std TF , MA 12Std und 1 Tag | // MinFilterGap = 0.0025 // Distanz zwischen den beiden MA | int calcFilterSignal() { // | double abstand; // | double ma_Schnell = iMA (Symbol() , TF_MA , FS_MA_Schnell , 0 , FilterMAMode ,PRICE_CLOSE ,0) ;// | double ma_Slow = iMA (Symbol() , TF_MA , FS_MA_Slow , 0 , FilterMAMode ,PRICE_CLOSE ,0) ;// | In dem Fall kann man dann ggf. später auch weitere Codes für andere MAs einfügen.
wingman Posted January 1, 2012 Report Posted January 1, 2012 Eigentlich nur weil ichs so gewohnt bin und alle anderen Parameter im Moment auch in Kapitälchen ohne _ sind. Es geht nur um einheitliche Conventionen, damit man im Code sofort sieht ob das eine lokale Variable, globale Variable oder externer Parameter ist. "CamelCase" nicht "Kapitälchen". "Kapitälchen" ist ein Begriff aus der Typografie und im Source-Code nicht nachzubilden. "...Als CamelCase bezeichnet man eine Schreibweise von zusammengesetzten Worten bei der die einzelnen Worte ohne Zwischenraum aber jeweils mit einem Großbuchstaben am Anfang geschrieben werden..." Es wäre wahrscheinlich sinnvoll, bei so einem Projekt minimale "Programmierrichtlinien" festzulegen - zumindest, was die Variablenbenennung angeht. Ich denke "CamelCase" wäre ein guter gemeinsamer Nenner.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now