//+------------------------------------------------------------------+ //| Boxinglife Stochastic.mq4 | //| author : Skyline | //| email : glicci@yahoo.it | //+------------------------------------------------------------------+ // You can find me at following forums : // www.forexpertutti.it (italian forum) // www.fastbrokers.net/forum (international forum) // www.forexfactory.com (international forum) // v1.0 [07 May 2007] ** Indicator created // v1.1 [10 july 2007 ] ** Indicator modified by Melpheos #property copyright "" #property link "" #property indicator_chart_window extern color Color = White; extern int Label_Size = 20; extern int Signal = 10; extern int Slowing = 20; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("Label_M5"); ObjectDelete("Label_M15"); ObjectDelete("Label_M30"); ObjectDelete("Label_H1"); ObjectDelete("Label_H4"); ObjectDelete("Label_D1"); ObjectDelete("Label_W1"); ObjectDelete("Label_5"); ObjectDelete("Label_30"); ObjectDelete("Label_50"); ObjectDelete("Label_70"); ObjectDelete("Label_90"); ObjectDelete("Label_110"); ObjectDelete("Label_130"); ObjectDelete("Label_150"); ObjectDelete("ArrowStoch5_TF5"); ObjectDelete("ArrowStoch30_TF5"); ObjectDelete("ArrowStoch50_TF5"); ObjectDelete("ArrowStoch70_TF5"); ObjectDelete("ArrowStoch90_TF5"); ObjectDelete("ArrowStoch110_TF5"); ObjectDelete("ArrowStoch130_TF5"); ObjectDelete("ArrowStoch150_TF5"); ObjectDelete("ArrowStoch5_TF15"); ObjectDelete("ArrowStoch30_TF15"); ObjectDelete("ArrowStoch50_TF15"); ObjectDelete("ArrowStoch70_TF15"); ObjectDelete("ArrowStoch90_TF15"); ObjectDelete("ArrowStoch110_TF15"); ObjectDelete("ArrowStoch130_TF15"); ObjectDelete("ArrowStoch150_TF15"); ObjectDelete("ArrowStoch5_TF30"); ObjectDelete("ArrowStoch30_TF30"); ObjectDelete("ArrowStoch50_TF30"); ObjectDelete("ArrowStoch70_TF30"); ObjectDelete("ArrowStoch90_TF30"); ObjectDelete("ArrowStoch110_TF30"); ObjectDelete("ArrowStoch130_TF30"); ObjectDelete("ArrowStoch150_TF30"); ObjectDelete("ArrowStoch5_TF60"); ObjectDelete("ArrowStoch30_TF60"); ObjectDelete("ArrowStoch50_TF60"); ObjectDelete("ArrowStoch70_TF60"); ObjectDelete("ArrowStoch90_TF60"); ObjectDelete("ArrowStoch110_TF60"); ObjectDelete("ArrowStoch130_TF60"); ObjectDelete("ArrowStoch150_TF60"); ObjectDelete("ArrowStoch5_TF240"); ObjectDelete("ArrowStoch30_TF240"); ObjectDelete("ArrowStoch50_TF240"); ObjectDelete("ArrowStoch70_TF240"); ObjectDelete("ArrowStoch90_TF240"); ObjectDelete("ArrowStoch110_TF240"); ObjectDelete("ArrowStoch130_TF240"); ObjectDelete("ArrowStoch150_TF240"); ObjectDelete("ArrowStoch5_TF1440"); ObjectDelete("ArrowStoch30_TF1440"); ObjectDelete("ArrowStoch50_TF1440"); ObjectDelete("ArrowStoch70_TF1440"); ObjectDelete("ArrowStoch90_TF1440"); ObjectDelete("ArrowStoch110_TF1440"); ObjectDelete("ArrowStoch130_TF1440"); ObjectDelete("ArrowStoch150_TF1440"); ObjectDelete("ArrowStoch5_TF10080"); ObjectDelete("ArrowStoch30_TF10080"); ObjectDelete("ArrowStoch50_TF10080"); ObjectDelete("ArrowStoch70_TF10080"); ObjectDelete("ArrowStoch90_TF10080"); ObjectDelete("ArrowStoch110_TF10080"); ObjectDelete("ArrowStoch130_TF10080"); ObjectDelete("ArrowStoch150_TF10080"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); // Disegna label per timeframe DrawTFLabel(5,"Label_M5",210,40); DrawTFLabel(15,"Label_M15",210,60); DrawTFLabel(30,"Label_M30",210,80); DrawTFLabel(60,"Label_H1",210,100); DrawTFLabel(240,"Label_H4",210,120); DrawTFLabel(1440,"Label_D1",210,140); DrawTFLabel(10080,"Label_W1",210,160); // Disegna label per stoch DrawStochLabel(5,"Label_5",185,20); DrawStochLabel(30,"Label_30",160,20); DrawStochLabel(50,"Label_50",135,20); DrawStochLabel(70,"Label_70",110,20); DrawStochLabel(90,"Label_90",85,20); DrawStochLabel(110,"Label_110",60,20); DrawStochLabel(130,"Label_130",35,20); DrawStochLabel(150,"Label_150",10,20); // Disegna Freccie per TF5 DrawArrow(5,5,"ArrowStoch5_TF5",180,35); DrawArrow(5,30,"ArrowStoch30_TF5",157,35); DrawArrow(5,50,"ArrowStoch50_TF5",133,35); DrawArrow(5,70,"ArrowStoch70_TF5",110,35); DrawArrow(5,90,"ArrowStoch90_TF5",85,35); DrawArrow(5,110,"ArrowStoch110_TF5",60,35); DrawArrow(5,130,"ArrowStoch130_TF5",35,35); DrawArrow(5,150,"ArrowStoch150_TF5",10,35); // Disegna Freccie per TF15 DrawArrow(15,5,"ArrowStoch5_TF15",180,56); DrawArrow(15,30,"ArrowStoch30_TF15",157,56); DrawArrow(15,50,"ArrowStoch50_TF15",133,56); DrawArrow(15,70,"ArrowStoch70_TF15",110,56); DrawArrow(15,90,"ArrowStoch90_TF15",85,56); DrawArrow(15,110,"ArrowStoch110_TF15",60,56); DrawArrow(15,130,"ArrowStoch130_TF15",35,56); DrawArrow(15,150,"ArrowStoch150_TF15",10,56); // Disegna Freccie per TF30 DrawArrow(30,5,"ArrowStoch5_TF30",180,75); DrawArrow(30,30,"ArrowStoch30_TF30",157,75); DrawArrow(30,50,"ArrowStoch50_TF30",133,75); DrawArrow(30,70,"ArrowStoch70_TF30",110,75); DrawArrow(30,90,"ArrowStoch90_TF30",85,75); DrawArrow(30,110,"ArrowStoch110_TF30",60,75); DrawArrow(30,130,"ArrowStoch130_TF30",35,75); DrawArrow(30,150,"ArrowStoch150_TF30",10,75); // Disegna Freccie per TF60 DrawArrow(60,5,"ArrowStoch5_TF60",180,96); DrawArrow(60,30,"ArrowStoch30_TF60",157,96); DrawArrow(60,50,"ArrowStoch50_TF60",133,96); DrawArrow(60,70,"ArrowStoch70_TF60",110,96); DrawArrow(60,90,"ArrowStoch90_TF60",85,96); DrawArrow(60,110,"ArrowStoch110_TF60",60,96); DrawArrow(60,130,"ArrowStoch130_TF60",35,96); DrawArrow(60,150,"ArrowStoch150_TF60",10,96); // Disegna Freccie per TF240 DrawArrow(240,5,"ArrowStoch5_TF240",180,116); DrawArrow(240,30,"ArrowStoch30_TF240",157,116); DrawArrow(240,50,"ArrowStoch50_TF240",133,116); DrawArrow(240,70,"ArrowStoch70_TF240",110,116); DrawArrow(240,90,"ArrowStoch90_TF240",85,116); DrawArrow(240,110,"ArrowStoch110_TF240",60,116); DrawArrow(240,130,"ArrowStoch130_TF240",35,116); DrawArrow(240,150,"ArrowStoch150_TF240",10,116); // Disegna Freccie per TF1440 DrawArrow(1440,5,"ArrowStoch5_TF1440",180,136); DrawArrow(1440,30,"ArrowStoch30_TF1440",157,136); DrawArrow(1440,50,"ArrowStoch50_TF1440",133,136); DrawArrow(1440,70,"ArrowStoch70_TF1440",110,136); DrawArrow(1440,90,"ArrowStoch90_TF1440",85,136); DrawArrow(1440,110,"ArrowStoch110_TF1440",60,136); DrawArrow(1440,130,"ArrowStoch130_TF1440",35,136); DrawArrow(1440,150,"ArrowStoch150_TF1440",10,136); // Disegna Freccie per TF10080 DrawArrow(10080,5,"ArrowStoch5_TF10080",180,156); DrawArrow(10080,30,"ArrowStoch30_TF10080",157,156); DrawArrow(10080,50,"ArrowStoch50_TF10080",133,156); DrawArrow(10080,70,"ArrowStoch70_TF10080",110,156); DrawArrow(10080,90,"ArrowStoch90_TF10080",85,156); DrawArrow(10080,110,"ArrowStoch110_TF10080",60,156); DrawArrow(10080,130,"ArrowStoch130_TF10080",35,156); DrawArrow(10080,150,"ArrowStoch150_TF10080",10,156); //---- //---- return(0); } //DrawTFLabel(5,"Label_M5",150,40); // Routine per disegnare le label degli stoch // DrawStochLabel(5,"Label_Stoch5",110,20); void DrawStochLabel(int TipoStoch, string Label, int PosX, int PosY) { // Stoch5 Label ObjectCreate(Label, OBJ_LABEL, 0, 0, 0); ObjectSet(Label, OBJPROP_CORNER, 1); ObjectSet(Label, OBJPROP_XDISTANCE, PosX); ObjectSet(Label, OBJPROP_YDISTANCE, PosY); if (TipoStoch == 5) ObjectSetText(Label, "5", 8, "Comic Sans MS", White); if (TipoStoch == 30) ObjectSetText(Label, "30", 8, "Comic Sans MS", White); if (TipoStoch == 50) ObjectSetText(Label, "50", 8, "Comic Sans MS", White); if (TipoStoch == 70) ObjectSetText(Label, "70", 8, "Comic Sans MS", White); if (TipoStoch == 90) ObjectSetText(Label, "90", 8, "Comic Sans MS", White); if (TipoStoch == 110) ObjectSetText(Label, "110", 8, "Comic Sans MS", White); if (TipoStoch == 130) ObjectSetText(Label, "130", 8, "Comic Sans MS", White); if (TipoStoch == 150) ObjectSetText(Label, "150", 8, "Comic Sans MS", White); } // Routine per disegnare le label dei timframe void DrawTFLabel(int TF, string Label, int PosX, int PosY) { // M5 Label ObjectCreate(Label, OBJ_LABEL, 0, 0, 0); ObjectSet(Label, OBJPROP_CORNER, 1); ObjectSet(Label, OBJPROP_XDISTANCE, PosX); ObjectSet(Label, OBJPROP_YDISTANCE, PosY); if (TF == 5) ObjectSetText(Label, "M5", 8, "Comic Sans MS", White); if (TF == 15) ObjectSetText(Label, "M15", 8, "Comic Sans MS", White); if (TF == 30) ObjectSetText(Label, "M30", 8, "Comic Sans MS", White); if (TF == 60) ObjectSetText(Label, "H1", 8, "Comic Sans MS", White); if (TF == 240) ObjectSetText(Label, "H4", 8, "Comic Sans MS", White); if (TF == 1440) ObjectSetText(Label, "D1", 8, "Comic Sans MS", White); if (TF == 10080) ObjectSetText(Label, "W1", 8, "Comic Sans MS", White); } // Routine per disegnare la freccia void DrawArrow(int TF, int TipoStoch, string NameArrow, int PosX, int PosY) { string Temp; // Arrow Stoch5_TF5 if ( StochMain(TF,TipoStoch) > StochSignal(TF,TipoStoch) && StochMain(TF,TipoStoch)<80 && StochMain(TF,TipoStoch)>20) { Temp="Ù"; Color = Green; } if ( StochMain(TF,TipoStoch)>80 ) { Temp="Ù"; Color = Green; } if ( StochMain(TF,TipoStoch) < StochSignal(TF,TipoStoch) && StochMain(TF,TipoStoch)>20 && StochMain(TF,TipoStoch)<80) { Temp="Ú"; Color = Red; } if ( StochMain(TF,TipoStoch)<20 ) { Temp="Ú"; Color = Red; } ObjectDelete(NameArrow); ObjectCreate(NameArrow, OBJ_LABEL, 0, 0, 0); ObjectSetText(NameArrow,Temp,15, "Wingdings", Color); ObjectSet(NameArrow, OBJPROP_CORNER, 1); ObjectSet(NameArrow, OBJPROP_XDISTANCE,PosX); ObjectSet(NameArrow, OBJPROP_YDISTANCE,PosY); } // Rileva valore Main Stocastico double StochMain(int TF,int TipoStoch) { double valore; if (TipoStoch == 5) valore = iStochastic(NULL,TF,TipoStoch,3,3,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 30) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 50) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 70) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 90) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 110) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 130) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); if (TipoStoch == 150) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_MAIN,0); return(valore); } // Rileva valore Signal Stocastico double StochSignal(int TF,int TipoStoch) { double valore; if (TipoStoch == 5) valore = iStochastic(NULL,TF,TipoStoch,3,3,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 30) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 50) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 70) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 90) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 110) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 130) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); if (TipoStoch == 150) valore = iStochastic(NULL,TF,TipoStoch,Signal,Slowing,MODE_SMA,0,MODE_SIGNAL,0); return(valore); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Stochastic oscillator
Custom Indicators Used:
Order Management characteristics:
Other Features: