StochasticStack_v2

Author: Copyright � 2009, Ivan Kornilov. All rights reserved.
Indicators Used
Stochastic oscillator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
StochasticStack_v2
//+------------------------------------------------------------------+
//|                                   Copyright © 2010, Ivan Kornilov|
//|                                            StochasticStack_v2.mq4|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"

#property indicator_separate_window
#property indicator_buffers 3

#property indicator_color1 Gray  
#property indicator_color2 FireBrick  
#property indicator_color3 SteelBlue



extern double nextPriod = 1.2;
extern int kPeriod1 = 34;
extern int level = 10;


int dPeriod1 = 0;
int slowing1 = 0;

int kPeriod2 = 0;
int dPeriod2 = 0;
int slowing2 = 0;

int kPeriod3 = 0;
int dPeriod3 = 0;
int slowing3 = 0;

int kPeriod4 = 0;
int dPeriod4 = 0;
int slowing4 = 0;

int kPeriod5 = 0;
int dPeriod5 = 0;
int slowing5 = 0;

int kPeriod6 = 0;
int dPeriod6 = 0;
int slowing6 = 0;

int kPeriod7 = 0;
int dPeriod7 = 0;
int slowing7 = 0;

int kPeriod8 = 0;
int dPeriod8 = 0;
int slowing8 = 0;


double lineBuffer0[];
double lineBuffer1[];
double valueChenal[];

int init() {
    if(nextPriod != 0) {
        kPeriod2 = kPeriod1 * nextPriod;
        kPeriod3 = kPeriod2 * nextPriod;
        kPeriod4 = kPeriod3 * nextPriod;
        kPeriod5 = kPeriod4 * nextPriod;
        kPeriod6 = kPeriod5 * nextPriod;
        kPeriod7 = kPeriod6 * nextPriod;
        kPeriod8 = kPeriod7 * nextPriod;
    } 
    if(dPeriod1 == 0 && slowing1 == 0) {
        dPeriod1 = kPeriod1 / 2;
        slowing1 = dPeriod1 / 2;
    }
    if(dPeriod2 == 0 && slowing2 == 0) {
        dPeriod2 = kPeriod2 / 2;
        slowing2 = dPeriod2 / 2;
    }
    if(dPeriod3 == 0 && slowing3 == 0) {
        dPeriod3 = kPeriod3 / 2;
        slowing3 = dPeriod3 / 2;
    }
    if(dPeriod4 == 0 && slowing4 == 0) {
        dPeriod4 = kPeriod4 / 2;
        slowing4 = dPeriod4 / 2;
    }
    if(dPeriod5 == 0 && slowing5 == 0) {
        dPeriod5 = kPeriod5 / 2;
        slowing5 = dPeriod5 / 2;
    }
    if(dPeriod6 == 0 && slowing6 == 0) {
        dPeriod6 = kPeriod6 / 2;
        slowing6 = dPeriod6 / 2;
    }
    if(dPeriod7 == 0 && slowing7 == 0) {
        dPeriod7 = kPeriod7 / 2;
        slowing7 = dPeriod7 / 2;
    }
    if(dPeriod8 == 0 && slowing8 == 0) {
        dPeriod8 = kPeriod8 / 2;
        slowing8 = dPeriod8 / 2;
    }
    
   // IndicatorBuffers(3);
    string indicatorName = "StochasticStack_v2(";
    SetIndexBuffer(0, valueChenal);
    SetIndexBuffer(1, lineBuffer0);
    SetIndexBuffer(2, lineBuffer1);
    
 
    indicatorName = indicatorName + kPeriod1;
    indicatorName = indicatorName + "," + DoubleToStr(nextPriod,2);

    SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY, 3);
    SetIndexStyle(1, DRAW_HISTOGRAM, EMPTY, 3);
    SetIndexStyle(2, DRAW_HISTOGRAM, EMPTY, 3);
    
    indicatorName = indicatorName + "," + kPeriod1;
    indicatorName = indicatorName + "-" + kPeriod8;
    
    
    SetIndexDrawBegin(0,kPeriod8);
    SetIndexDrawBegin(1,kPeriod8);
    SetIndexDrawBegin(2,kPeriod8);
    
    
    SetIndexLabel(0, "Stochastick " + kPeriod1);
    
    indicatorName = indicatorName + ")";
    IndicatorShortName(indicatorName);
    SetLevelValue(0, level); 
    SetLevelValue(1, -level); 
}

int start(){
    int indicatorCounted = IndicatorCounted();
    if (indicatorCounted < 0) { 
        return (-1);
    }
    if(indicatorCounted > 0) {
       indicatorCounted--;
    }

    double stochastic1 = 0;
    double stochastic2 = 0;
    double stochastic3 = 0;
    double stochastic4 = 0;
    double stochastic5 = 0;
    double stochastic6 = 0;
    double stochastic7 = 0;
    double stochastic8 = 0;
    double sum = 0;
    int i;
   
    int limit = Bars - indicatorCounted - 1;
    for(i = limit - 1; i >= 0; i--) {
        stochastic1 = iStochastic(NULL, 0, kPeriod1, dPeriod1, slowing1, MODE_EMA, 1, MODE_MAIN, i);
        stochastic2 = iStochastic(NULL, 0, kPeriod2, dPeriod2, slowing2, MODE_EMA, 1, MODE_MAIN, i);
        stochastic3 = iStochastic(NULL, 0, kPeriod3, dPeriod3, slowing3, MODE_EMA, 1, MODE_MAIN, i);
        stochastic4 = iStochastic(NULL, 0, kPeriod4, dPeriod4, slowing4, MODE_EMA, 1, MODE_MAIN, i);
        stochastic5 = iStochastic(NULL, 0, kPeriod5, dPeriod5, slowing5, MODE_EMA, 1, MODE_MAIN, i);
        stochastic6 = iStochastic(NULL, 0, kPeriod6, dPeriod6, slowing6, MODE_EMA, 1, MODE_MAIN, i);
        stochastic7 = iStochastic(NULL, 0, kPeriod7, dPeriod7, slowing7, MODE_EMA, 1, MODE_MAIN, i);
        stochastic8 = iStochastic(NULL, 0, kPeriod8, dPeriod8, slowing8, MODE_EMA, 1, MODE_MAIN, i);
        
        sum = 0;
        sum += (stochastic1 - stochastic2) ;
        sum += (stochastic3 - stochastic4) ;
        sum += (stochastic5 - stochastic6);
        sum += (stochastic7 - stochastic8);
        
        valueChenal[i] = sum;
    }
    
    for(i = limit - 1; i >= 0; i--) {
        
            if(valueChenal[i] < 0) {
                lineBuffer0[i] = valueChenal[i];
                lineBuffer1[i] = EMPTY_VALUE;
            } else {
                lineBuffer0[i] = EMPTY_VALUE;
                lineBuffer1[i] = valueChenal[i];
            }
    }
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---