Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Stochastic filtré

  • furynick

    Toujours sans prétention, un indicateurs basé sur le Stochastic et son signal.
    L'histogramme représente la différence entre le stochastic long (par défaut une période de 233) et son signal.
    Les signaux d'achat/vente sont issus du croisement de ces deux courbes filtré par une MM, le signal d'achat n'est valide que si le cours clôture au dessus de la MM et vice-versa.

    Les signaux ainsi obtenus sont assez intéressants.

    Code
    //+------------------------------------------------------------------+ //| stochDif.mq4 | //| Tous droits réservés, Nicolas Tuffier (2011) | //| http://www.furyweb.fr/forex/ | //+------------------------------------------------------------------+ #property copyright "Tous droits réservés, Nicolas Tuffier (2011)" #property link "http://www.furyweb.fr/forex/" #property indicator_separate_window #property indicator_buffers 8 #property indicator_color1 Red #property indicator_color2 Maroon #property indicator_color3 Lime #property indicator_color4 Green #property indicator_color5 Gold #property indicator_color6 Aqua #property indicator_color7 Red #property indicator_color8 Lime #property indicator_width1 3 #property indicator_width2 3 #property indicator_width3 3 #property indicator_width4 3 #property indicator_width6 2 #property indicator_width7 1 #property indicator_width8 1 #property indicator_maximum 25 #property indicator_minimum -25 //---- input parameters extern int pK = 233; extern int pD = 20; extern int slow = 20; extern int MAmethod = MODE_LWMA; extern int trendPeriod = 89; extern bool drawStrength = false; extern double filter = 0.1; //---- buffers double sellIncBuf[]; // sell increasing double sellDecBuf[]; // sell decreasing double buyIncBuf[]; // buy increasing double buyDecBuf[]; // buy decreasing double globalBuf[]; // global double strengthBuf[]; // strength double sellSigBuf[]; // sell signal double buySigBuf[]; // buy signal //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,sellIncBuf); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,sellDecBuf); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,buyIncBuf); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(3,buyDecBuf); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,globalBuf); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,strengthBuf); SetIndexStyle(6, DRAW_ARROW); SetIndexArrow(6, 242); SetIndexBuffer(6, sellSigBuf); SetIndexStyle(7, DRAW_ARROW); SetIndexArrow(7, 241); SetIndexBuffer(7, buySigBuf); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit, counted_bars=IndicatorCounted(); double b4ma, nowma; //---- check for possible errors if(counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; //---- the first bar must be skipped if(counted_bars == 0) counted_bars++; limit = Bars - counted_bars; //---- for (int i = limit; i >= 0; i--) { sellIncBuf[i] = EMPTY_VALUE; sellDecBuf[i] = EMPTY_VALUE; buyIncBuf[i] = EMPTY_VALUE; buyDecBuf[i] = EMPTY_VALUE; globalBuf[i] = iStochastic(NULL, 0, pK, pD, slow, MAmethod, 1, MODE_MAIN, i) - iStochastic(NULL, 0, pK, pD, slow, MAmethod, 1, MODE_SIGNAL, i); if (drawStrength) { if (globalBuf[i+2] != 0 && globalBuf[i+1] != 0) strengthBuf[i] = MathAbs((globalBuf[i+1] - globalBuf[i]) / (globalBuf[i+2] - globalBuf[i+1])); } else strengthBuf[i] = EMPTY_VALUE; if (globalBuf[i] < 0) if (globalBuf[i] < globalBuf[i+1]) sellIncBuf[i] = globalBuf[i]; else sellDecBuf[i] = globalBuf[i]; else if (globalBuf[i] > globalBuf[i+1]) buyIncBuf[i] = globalBuf[i]; else buyDecBuf[i] = globalBuf[i]; sellSigBuf[i] = EMPTY_VALUE; buySigBuf[i] = EMPTY_VALUE; if (iMA(NULL, 0, trendPeriod, 0, MODE_EMA, PRICE_CLOSE, i) > iMA(NULL, 0, trendPeriod, 0, MODE_EMA, PRICE_CLOSE, i + 1)) { // up trend if (sellDecBuf[i+1] != EMPTY_VALUE && buyIncBuf[i] != EMPTY_VALUE && MathAbs(globalBuf[i]) > filter) buySigBuf[i]=globalBuf[i] * 1.5 + 3; } else { // down trend if (sellIncBuf[i] != EMPTY_VALUE && buyDecBuf[i+1] != EMPTY_VALUE && MathAbs(globalBuf[i]) > filter) sellSigBuf[i]=globalBuf[i] * 1.5 - 3; } } //---- return(0); } //+------------------------------------------------------------------+
  • NYKOES

    Merci pour ce partage Fury. Les signaux ont tout à fait l'air intéressante en effet. Je pense malgré tout qu'il faudrait le tweaker un peu pour être vraiment parfait, c'est ce que j'en retire sur l'historique en H1.
  • furynick

    Effectivement, j'avais fait cet indic il y a quelque temps mais n'ai pas eu le temps de peaufiner.

    En association avec les 2 autres indics que j'ai publié (ADX et bandSize) il pourrait y avoir un potentiel intéressant pour une stratégie.
  • Anonyme (invité)

    bon indicateur par contre sa veut dire koi tweaker?merci
  • furynick

    Tweak = Personnaliser
    En gros ça signifie affiner les réglages pour que l'indicateur soit plus pertinent.