Alle Inhalte von Der Wolf
-
Frage zu ChandelierExit
Zuallererst, ich denke das ist keine Anfängerfrage zum ChandelierExit, sondern im Zusammenhang mit der Anforderungsdefinition an den CommunityEA zu sehen. @Mods Diese Frage sollte m.E. daher auch nicht unbedingt aus dem CommunityEA-Zusammenhang herausgerissen werden und in einem eigenen Thread landen ! Richtig erkannt, nur wenn der ChandelierExit ebnefalls einen Down-Trend erkennt, kann auch ein Stop gesetzt werden, in diesem Fall gibt es eben keinen initialStop. Der Trendfilter befindet sich in der Funktion calcFilterSignal(). Dort wird der übergeordneter Trend durch Abstand von 2 MA erkannt. Daraus folgt: Das ganze ist aus der Anforderungsdefinition an den CommunityEA entstanden, wir befinden uns jetzt im Integrationstest (= Zusammenführen von Code, der von verschiedenen Entwicklern stammt), und da fallen solche Dinge auf. Gefordert und realisiert wurde folgendes: 1. Einstiege werden per HeikenAshi-Signal generiert, dies ist in der Funktion calcEntrySignal() realisiert 2. zusätzliche Filter zum Einstieg werden durch zwei MA's in der Funktion calcFilterSignal() realisiert 3. ein initialStop soll per ChandelierExit in der Funktion calcInitStopDiff() generiert werden Daraus ergeben sich voneinander unabhängige Ereignisse: wenn HA-Signal und Filter einen Down-Trend anzeigen und der CE nicht, dann gibt es eben keinen InitalStop erforderlicher Diskussionsbedarf: Nehmen wir den ChandelierExit als zusätzlichen Filter auf ? Die Alternative wäre, einen anderern initial Stop zu verwenden, was aber m.E. nicht im Sinne der Anforderungen wäre, vor allem wenn dann im trailingStop sowieso der CE wieder ins Spiel kommt.
-
Backtest und Optimierungsthreads
Hier noch einige Links zu Metatrader-Backtests: http://www.autopilot-trading.at/html/backtest.pdf http://www.metatrader-experts.de/wissen-ueber-metatrader-mql-programmierung-handelssysteme-und-trading/mt4tool/backtest-und-daten.html http://www.metatrader-experts.de/wissen-ueber-metatrader-mql-programmierung-handelssysteme-und-trading/backtestvsforwardtest.html Und hier etwas zu Backtests unabhängig von Metatrader: http://www.forextester.com/data/datasources.html http://forexsb.com/forex-strategy-builder/
-
Projekt: Entwicklung Community-EA
so, erledigt Funktion calcNewTrailingStop inklusive Fallunterscheidung ob TrailigStop gesetzt werden soll //------------------------------------------------------------- // Chandelier als InitStop + Trailing (per Parameter trailing ausschaltbar) // Parabolic als zusätzlicher Trailing (max(chandelier,parabolic)), wobei AccStart= 0. double calcNewTrailingStop(double curStop,int orderType) { double trailStop = 0.0; double trailStopChandelier=0.0; double trailStopParabolic=0.0; double chandelierExitValue0=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE double chandelierExitValue1=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE int shiftATR = 0; //shift für ATR in initerner ChandelierExit Berechnung int shiftChandelierExit = 0; //shift für ChandelierExit int shiftParabilicSAR = 0; //shift für ParabolicSAR //--- ChandelierExit if (TrailStopChandelier) { //ChandelierExit Buffer 0 - Blue - Support chandelierExitValue0 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,0,shiftChandelierExit); //ChandelierExit Buffer 1 - Red - Resistance chandelierExitValue1 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,1,shiftChandelierExit); if ((chandelierExitValue0==EMPTY_VALUE && chandelierExitValue1!=EMPTY_VALUE) || (chandelierExitValue0!=EMPTY_VALUE && chandelierExitValue1==EMPTY_VALUE)) { //o.k. if (orderType == OP_BUY && chandelierExitValue0 != EMPTY_VALUE ) trailStopChandelier = chandelierExitValue0; else if (orderType == OP_SELL && chandelierExitValue1 != EMPTY_VALUE ) { trailStopChandelier = chandelierExitValue1; } } else { Print("calcNewTrailingStop: einer der ChandelierExitBuffer muß EMPTY_VALUE zurückliefern: Rückgabe Buffer0 = "+ chandelierExitValue0 + " | Rückgabe Buffer1 = " + chandelierExitValue1); trailStopChandelier = 0.0; } //Print("calcNewTrailingStop | trailStopChandelier="+trailStopChandelier); } //--- ParabolicSAR if (TrailStopParabolicSAR) { trailStopParabolic = iSAR(NULL,0,parabolicSARStep,parabolicSARMaximum,shiftParabilicSAR); //Print("calcNewTrailingStop | trailStopParabolic="+trailStopParabolic); } //--- Fallunterscheidung ChandelierExit / ParabolicSAR if ( orderType == OP_BUY ) trailStop = MathMax(trailStopChandelier, trailStopParabolic); else if ( orderType == OP_SELL && trailStopChandelier > 0.0 && trailStopParabolic > 0.0) trailStop = MathMin(trailStopChandelier, trailStopParabolic); else if ( orderType == OP_SELL && (trailStopChandelier == 0.0 || trailStopParabolic == 0.0) ) trailStop = trailStopChandelier + trailStopParabolic; else trailStop = 0.0; //--- Fallunterscheidung ob TrailigStop gesetzt werden soll //wenn der alte Trailingstop curStop zurückgegeben wird, dann braucht keine Änderung durchgeführt werden //in allen anderen Fällen wurde ein neuer Trailingstop berechnet der auch per Modify geändert werden sollte //Print("calcNewTrailingStop | trailStop="+trailStop); if ((orderType == OP_BUY && trailStop > 0.0 && trailStop > curStop) || (orderType == OP_SELL && trailStop > 0.0 && trailStop < curStop) ) return(trailStop); //neuer TrailingStop else return(curStop); //alter TrailingStop: d.h. keine Änderung notwendig }
-
Projekt: Entwicklung Community-EA
o.k. packe ich noch rein !
-
Projekt: Entwicklung Community-EA
Und so sieht das im StrategyTester aus, mit dem EURUSD M15 vom 01.10.2011 - 31.12.2011 StrategyTester.htm
-
Projekt: Entwicklung Community-EA
Hier meine inkrementellen Änderungen, habe diese mit #0.6 gekennzeichnet: 1. Doku der Änderungen für den ChangeLog // #0.6 Der Wolf 02.01.2012 // - calcInitStopDiff implementiert // - calcNewTrailingStop implementiert // - chandelierExit implementiert // - handleOpenOrders: Abfrage auf StopLoss // - checkAndHandleSignals open sell: stop + entry anstelle stop - entry 2. externe Paramter //---- Trailing Stop Parameters abschaltbar extern bool TrailStopChandelier = true; extern bool TrailStopParabolicSAR = false; //---- ChandelierExit Parameter extern int chandelierExitATRPeriod = 9; //Standard: 9 extern double chandelierExitATRMultiplier = 3.0; //Standard: 3.0 extern int chandelierExitRange = 7; //Standard: 7 //ParabolicSAR Parameter extern double parabolicSARStep = 0.02; //Standard: 0.02 extern double parabolicSARMaximum = 0.2; //Standard: 0.2 3. Funktion calcInitStopDiff //----------------------------------------------------------------- // Chandelier als InitStop // returns the distance of the initStop or 0 if there is no initStop double calcInitStopDiff(int orderType) { double initStopDiff=0.0; double chandelierExitValue0=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE double chandelierExitValue1=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE int shiftATR = 0; //shift für ATR in initerner ChandelierExit Berechnung int shiftChandelierExit = 0; //shift für ChandelierExit //ChandelierExit Buffer 0 - Blue - Support chandelierExitValue0 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,0,shiftChandelierExit); //ChandelierExit Buffer 1 - Red - Resistance chandelierExitValue1 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,1,shiftChandelierExit); if ((chandelierExitValue0==EMPTY_VALUE && chandelierExitValue1!=EMPTY_VALUE) || (chandelierExitValue0!=EMPTY_VALUE && chandelierExitValue1==EMPTY_VALUE)) { //o.k. if (orderType == OP_BUY && chandelierExitValue0 != EMPTY_VALUE ) { initStopDiff = Ask - chandelierExitValue0; //Print("calcInitStopDiff buy | chandelier_exit="+chandelierExitValue0+"|Ask="+Ask+"|StopDiff="+initStopDiff); } else if (orderType == OP_SELL && chandelierExitValue1 != EMPTY_VALUE ) { initStopDiff = chandelierExitValue1 - Bid; //Print("calcInitStopDiff sell | chandelierExit="+chandelierExitValue1+"|Bid="+Bid+"|StopDiff="+initStopDiff); } } else { //Print("calcInitStopDiff: einer der ChandelierExitBuffer muß EMPTY_VALUE zurückliefern: Rückgabe Buffer0 = "+ chandelierExitValue0 + " | Rückgabe Buffer1 = " + chandelierExitValue1); initStopDiff = 0.0; //kein initial Stop ermittelbar } //Print("calcInitStopDiff: return("+initStopDiff+")"); return(initStopDiff); } 4. Funktion calcNewTrailingStop double calcNewTrailingStop(double curStop,int orderType) { double trailStopChandelier=0.0; double trailStopParabolic=0.0; double chandelierExitValue0=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE double chandelierExitValue1=EMPTY_VALUE; //Initialisierung mit EMPTY_VALUE int shiftATR = 0; //shift für ATR in initerner ChandelierExit Berechnung int shiftChandelierExit = 0; //shift für ChandelierExit int shiftParabilicSAR = 0; //shift für ParabolicSAR //--- ChandelierExit if (TrailStopChandelier) { //ChandelierExit Buffer 0 - Blue - Support chandelierExitValue0 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,0,shiftChandelierExit); //ChandelierExit Buffer 1 - Red - Resistance chandelierExitValue1 = chandelierExit(chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,1,shiftChandelierExit); if ((chandelierExitValue0==EMPTY_VALUE && chandelierExitValue1!=EMPTY_VALUE) || (chandelierExitValue0!=EMPTY_VALUE && chandelierExitValue1==EMPTY_VALUE)) { //o.k. if (orderType == OP_BUY && chandelierExitValue0 != EMPTY_VALUE ) trailStopChandelier = chandelierExitValue0; else if (orderType == OP_SELL && chandelierExitValue1 != EMPTY_VALUE ) { trailStopChandelier = chandelierExitValue1; } } else { //Print("calcNewTrailingStop: einer der ChandelierExitBuffer muß EMPTY_VALUE zurückliefern: Rückgabe Buffer0 = "+ chandelierExitValue0 + " | Rückgabe Buffer1 = " + chandelierExitValue1); trailStopChandelier = 0.0; } } //--- ParabolicSAR if (TrailStopParabolicSAR) { trailStopParabolic = iSAR(NULL,0,parabolicSARStep,parabolicSARMaximum,shiftParabilicSAR); //Print("calcNewTrailingStop buy | trailStopParabolic="+trailStopParabolic); } //--- Fallunterscheidung ChandelierExit / ParabolicSAR if ( orderType == OP_BUY ) return(MathMax(trailStopChandelier, trailStopParabolic)); else if ( orderType == OP_SELL && trailStopChandelier > 0.0 && trailStopParabolic > 0.0) return(MathMin(trailStopChandelier, trailStopParabolic)); else if ( orderType == OP_SELL && (trailStopChandelier == 0.0 || trailStopParabolic == 0.0) ) return(trailStopChandelier + trailStopParabolic); else return (0.0); } 5. Funktion chandelierExit //+------------------------------------------------------------------------------+ //| chandelierExit | //| @param chandelierExitRange: range of periods for HH/LL backwards | //| @param shiftATR: shift of ATR | //| @param chandelierExitATRPeriod: AverageTrueRange ATR Period | //| @param chandelierExitATRMultiplier: Multiplier for ATR | //| @param chandelierExitBuffer: Buffer 0 - Blue - Suppor | //| Buffer 1 - Red - Resistance | //| @param shiftChandelierExit: shift, relative to the current bar | //| @return Double Value for Support/Resistance, EMPTY_VALUE for opposite Buffer | //+------------------------------------------------------------------------------+ double chandelierExit(int chandelierExitRange, int shiftATR, int chandelierExitATRPeriod, double chandelierExitATRMultiplier, int chandelierExitBuffer, int shiftChandelierExit) { if(chandelierExitBuffer >= 0 && chandelierExitBuffer <= 1) return(iCustom(NULL, 0, "ChandelierExit",chandelierExitRange,shiftATR,chandelierExitATRPeriod,chandelierExitATRMultiplier,chandelierExitBuffer,shiftChandelierExit)); else { Print("Fehler: Aufruf mit ungültigem Parameter für Buffer, erlaubt ist 0 oder 1, übergeben wurde "+chandelierExitBuffer); return(EMPTY_VALUE); } } 6. Ergänzung der Funktion handleOpenOrders um Abfrage auf StopLoss void handleOpenOrders() { ... if(NormalizeDouble(stop - OrderStopLoss(),Digits) != 0) //#0.6 Der Wolf 02.01.2012 Anfang if ((OrderType() == OP_BUY && stop > 0.0 && stop > OrderStopLoss()) || (OrderType() == OP_SELL && stop > 0.0 && stop < OrderStopLoss()) ) //#0.6 Der Wolf 02.01.2012 Ende tbModifyOrder(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(), OrderExpiration()); } } 7. Fehlerbereinigung in checkAndHandleSignals im Abschnitt "open sell:" stop + entry anstelle stop - entry void checkAndHandleSignals() ... //---- open sell if(filterSignal + entrySignal == 2*SHORT && (calculateCurrentOrders() == 0 || calcOpenDirection() == SHORT || HedgeAllowed)) { entry= Bid; stop=calcInitStopDiff(OP_SELL); lots= calcLots(stop); if(stop > 0) { //#0.6 Der Wolf 02.01.2012 Anfang stop = entry + stop; //#0.6 Der Wolf 02.01.2012 Ende } else stop= 0; tp=calcTPDiff(OP_SELL); if(tp > 0) tp= entry + tp; else tp= 0; res = tbSendOrder(Symbol(),OP_SELL,lots,entry,3,stop,tp,"sell",MAGICNR, 0); } Den Indicator ChandelierExit habe ich sicherheitshalber auch noch angehängt. Ich hoffe, ich habe nichts übersehen. ChandelierExit.mq4
-
Projekt: Entwicklung Community-EA
Hi KB, bin wieder da - nach "Dinner for One", Sylvester, Neujahr u.s.w. ! Funktionen habe ich auch fertig, ich teste noch ein bischen und dann lade ich sie hoch !
-
Projekt: Entwicklung Community-EA
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 !
-
Wilfried Schmickler
Ihr seht das vollkomen falsch: unser Bundespräsident schafft echten Mehrwert !!! Ist doch klar: Rechtsanwälte, Journalisten, Kabarettisten und und und ... haben viel zu tun - von wegen Lohndumping - wo denn ??? Darauf kann doch unser Bundespräsident sehr stolz sein, das sind schliesslich keine unterbezahlten Tätigkeiten - das Bruttosozialprodukt steigt folglich ! Von einem Gutverdiener können ja angeblich x Geringverdiener leben !
-
Grüezi metanand
Hallo clex, herzlich willkommen ! War auchmal beruflich fast zwei Jahre "in'd Schwyz" tätig. Ist schon einige Zeit her - habe 1996 den Absprung geschafft. Im nachhinein betrachtet, also vor dem Hintergrund des "T"Euros, war es fast ein Fehler, meine Jahresaufenthaltergenehmigung (Typ B) nicht in eine Dauergenehmigung (Typ C) umzuwandeln. Ich glaube so nach ca. 15 Jahren hätte ich jetzt schon nach erfolgreicher Aufnahmeprüfung Schweizer sein können. Aber wer will das schon - Sicherheit und Kohle sind halt auch nicht alles - oder ??? Viel Erfolg !
-
Excel vs. "R"
Der letzte Punkt war zuviel im Link: http://cran.r-project.org/web/packages/RJSONIO/RJSONIO.pdf
-
Servus mitanand
Servus Daro, willkommen an Board ! War ich am Anfang auch nicht, habe mich so langsam daran gewöhnt.
-
Held von Kosmos
Weil ich von der 1. Staffel nur einen und von der 2. Staffel nicht alle Filme gesehen habe, habe ich heute mal gegoogelt und alle bereits vorhandenen Video's in der ZDF-Mediathek zusammengesucht. Könnte ja sein, daß die Videos auch dem einen oder anderen von Euch Spaß machen - es müssen ja nicht immer Jedi-Ritter und Obi-Wan's und Konsorten sein.
-
Held von Kosmos
Für Freunde von ultraschrägen und aberwitzigen Science-Fiction-Komödien: Heute abend wird um 23:45 bzw. 00:10 im ZDF die vorletzte bzw. letzte Folge der 2. Staffel von "Iion Tichy - Raumpilot bzw. 'Held von Kosmos' " ausgestrahlt. Die Ausstrahlungstermine der 2. Staffel ZDF, montags 28.11.2011, 00.20 Uhr "Held von Kosmos" 28.11.2011, 00.45 Uhr "Shøpping" 5.12.2011, 00.20 Uhr "Schön schaumig" 5.12.2011, 00.45 Uhr "Biste-Fix Zeitblasen" 12.12.2011, 23.45 Uhr "Sepulken verboten" 12.12.2011, 00.10 Uhr "Das Erinnerungsstück" 19.12.2011, 23.45 Uhr "Schein und Sein I" 19.12.2011, 00.10 Uhr "Schein und Sein II" Allgemeines zu diesen Filmen: http://www.zdf.de/ZDFde/inhalt/16/0,1872,1404048,00.html bisher ausgestrahlte Videos der 1. Staffel http://www.zdf.de/ZDFmediathek/beitrag/video/1464590/Ijon-Tichy---Kosmische-Kollegen#/beitrag/video/1464590/Ijon-Tichy---Kosmische-Kollegen http://www.zdf.de/ZDFmediathek/beitrag/video/1464598/Ijon-Tichy---Planet-der-Reserven#/beitrag/video/1464598/Ijon-Tichy---Planet-der-Reserven http://www.zdf.de/ZDFmediathek/beitrag/video/1470790/Ijon-Tichy-Relativistische-Effekte#/beitrag/video/1470790/Ijon-Tichy-Relativistische-Effekte http://www.zdf.de/ZDFmediathek/beitrag/video/1474514/Tichy-Der-futurologische-Kongress-#/beitrag/video/1474514/Tichy-Der-futurologische-Kongress- http://www.zdf.de/ZDFmediathek/beitrag/video/1474518/Ijon-Tichy-Sabotage#/beitrag/video/1474518/Ijon-Tichy-Sabotage http://www.zdf.de/ZDFmediathek/beitrag/video/1474516/Ijon-Tichy-Die-innere-Stimme#/beitrag/video/1474516/Ijon-Tichy-Die-innere-Stimme bisher ausgestrahlte Videos der 2. Staffel http://www.zdf.de/ZDFmediathek/kanaluebersicht/aktuellste/502#/beitrag/video/1476384/Ijon-Tichy---Held-von-Kosmos http://www.zdf.de/ZDFmediathek/kanaluebersicht/aktuellste/502#/beitrag/video/1476408/Ijon-Tichy---Sh%C3%B8pping http://www.zdf.de/ZDFmediathek/beitrag/video/1476410/-Ijon-Tichy---Schoen-schaumig#/beitrag/video/1476410/-Ijon-Tichy---Schoen-schaumig http://www.zdf.de/ZDFmediathek/beitrag/video/1479950/Ijon-Tichy---Biste-Fix-Zeitblasen#/beitrag/video/1479950/Ijon-Tichy---Biste-Fix-Zeitblasen http://www.zdf.de/ZDFmediathek/beitrag/video/1479966/Ijon-Tichy---Sepulken-verboten#/beitrag/video/1479966/Ijon-Tichy---Sepulken-verboten http://www.zdf.de/ZDFmediathek/beitrag/video/1479978/Ijon-Tichy---Das-Erinnerungsstueck#/beitrag/video/1479978/Ijon-Tichy---Das-Erinnerungsstueck Viel Spaß wem's gefällt !
-
TomNext Musik - Ecke
Zum "Speculation Blues" gibt es sogar eine eigene Homepage mit Song-Text. http://www.speculationblues.com/
-
Excel vs. "R"
Versuch doch mal eine Google-Suche mittels 'R' project Da kommen seitenweise Suchergebnisse zu R zurück.
-
Projekt: Entwicklung Community-EA
Sehe ich auch so ! Also ich schnapp mir dann die Chandelier/Parabolic Funktionen calcInitStopDiff() und calcNewTrailingStop().
-
Projekt: Entwicklung Community-EA
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 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 !
-
TomNext Musik - Ecke
Sieht aus wie Ed Seykota, es ist Ed Seykota ! Hier der direkte Link zum "Whipsaw Song" auf seiner Page: http://www.seykota.com/tribe/essentials/index.htm Man kann sich den Song auch als MP3 laden und den Text und die Noten zur Melodie gibt es da auch: http://www.seykota.com/tribe/essentials/downloads.htm
-
Trading Software mit Node based Graph
Vielleicht wäre das etwas für Dich ? http://www.molanis.com/home oder das http://forexsb.com/
-
TomNext Musik - Ecke
Freut mich ! Einen hätte ich noch: den "Whipsaw Song"
-
TomNext Musik - Ecke
Ich hoffe, ich kann hier den Link auf den "Speculation Blues" unterbringen !
-
Microtrading_the_1_Minute_Chart.pdf
- 10 Downloads
Vorstellung einer Strategie auf dem 1-Minuten Chart. Verwendet Bollinger Bands, Moving Averages, MACD, RSI. -
LBR_Scalp_setups.pdf
-
KobasFX_Strategy.pdf