-Hot cakes, pancakes, pancakes! - In a figurative sense, of course. Discuss and criticise the new indicators. - page 5

 

--------------------------------------

Keeping my promise by correcting a logical error created during programming.
It turns out there was more than one.


Error (1). With this error the indicator showed "the strength of a certain direction". It consisted in the wrong variable description. Without it it started to show the "relative strength of the definite direction of movement".

Error (2). With this error the indicator has shown the "the relative strength of the exact movement direction". It consisted in a mistake made during the FORMULA COMPLETION. Without it it began to show
"the relative strength of the exact direction of the price movement".


So much for the "healthy" code:

//|+-----------------------------------------------------------------+
//|Название : RSAR_Korsar / Корсар                                   |
//|Создатель : Jonny Bravo / Джони Браво                             |
//|Тип : зеркальнопериодический индикатор                            |
//|Построен на основе RSI, Stohastic, RVI, ADX.                      |
//|Работает на основе экстримумов и фигур.                           |
//|+-----------------------------------------------------------------+
#property copyright "Jonny Bravo"
#property indicator_separate_window
#property indicator_buffers 6
#property  indicator_color1 DarkGreen 
#property  indicator_color2 Green
#property  indicator_color3 MediumSeaGreen
#property  indicator_color4 MediumSeaGreen
#property  indicator_color5 Green
#property  indicator_color6 DarkGreen
//|+-----------------------------------------------------------------+
//|Inputs                                                            |
//|+-----------------------------------------------------------------+
double price;
//|+--+
extern double _N_  = 1;
extern double _NN_ = -1;
//|+--+
extern int History = 10000;
//|+--+
extern double RSI_Type_Line_1 = 0;
extern double RSI_Period_Line_1_1 = 5;
extern double ADX_Type_Price_1 = 0;
extern double ADX_Period_Line_1 = 5;
extern double RVI_Period_Line_1 = 5;
extern double Stohastic_MA_Metod_1 = 0;
extern double Stochastic_Period_Line_A_1 = 10;
extern double Stochastic_Period_Line_B_1 = 6;
//|+--+
extern double RSI_Type_Line_2 = 0;
extern double RSI_Period_Line_1_2 = 10;
extern double ADX_Type_Price_2 = 0;
extern double ADX_Period_Line_2 = 10;
extern double RVI_Period_Line_2 = 10;
extern double Stohastic_MA_Metod_2 = 0;
extern double Stochastic_Period_Line_A_2 = 10;
extern double Stochastic_Period_Line_B_2 = 6;
//|+--+
extern double RSI_Type_Line_3 = 0;
extern double RSI_Period_Line_1_3 = 20;
extern double ADX_Type_Price_3 = 0;
extern double ADX_Period_Line_3 = 20;
extern double RVI_Period_Line_3 = 20;
extern double Stohastic_MA_Metod_3 = 0;
extern double Stochastic_Period_Line_A_3 = 10;
extern double Stochastic_Period_Line_B_3 = 6;
//|+--+
extern double RSI_Type_Line_4 = 0;
extern double ADX_Type_Price_4 = 0;
extern double ADX_Period_Line_4 = 5;
extern double RVI_Period_Line_4 = 5;
extern double Stohastic_MA_Metod_4 = 0;
extern double Stochastic_Period_Line_A_4 = 10;
extern double Stochastic_Period_Line_B_4 = 6;
//|+--+
extern double RSI_Type_Line_5 = 0;
extern double ADX_Type_Price_5 = 0;
extern double ADX_Period_Line_5 = 10;
extern double RVI_Period_Line_5 = 10;
extern double Stohastic_MA_Metod_5 = 0;
extern double Stochastic_Period_Line_A_5 = 10;
extern double Stochastic_Period_Line_B_5 = 6;
//|+--+
extern double RSI_Type_Line_6 = 0;
extern double ADX_Type_Price_6 = 0;
extern double ADX_Period_Line_6 = 20;
extern double RVI_Period_Line_6 = 20;
extern double Stohastic_MA_Metod_6 = 0;
extern double Stochastic_Period_Line_A_6 = 10;
extern double Stochastic_Period_Line_B_6 = 6;
//|+-----------------------------------------------------------------+
//|Declaration                                                       |
//|+-----------------------------------------------------------------+
int p;
//|+--+
double Buf_0[];  double Buf_1[];  double Buf_2[]; 
double Line_1_A; double Line_2_A; double Line_3_A;
double Line_1_B; double Line_2_B; double Line_3_B;
double Line_1_C; double Line_2_C; double Line_3_C;
double Line_1_D; double Line_2_D; double Line_3_D;
double Line_1_I; double Line_2_I; double Line_3_I;
double Line_1_F; double Line_2_F; double Line_3_F;
double Line_1_K; double Line_2_K; double Line_3_K;
double Line_1_L; double Line_2_L; double Line_3_L;
double Line_1_M; double Line_2_M; double Line_3_M;
//|+--+
double Buf_3[];  double Buf_4[];  double Buf_5[]; 
double Line_4_A; double Line_5_A; double Line_6_A;
double Line_4_B; double Line_5_B; double Line_6_B;
double Line_4_C; double Line_5_C; double Line_6_C;
double Line_4_D; double Line_5_D; double Line_6_D;
double Line_4_I; double Line_5_I; double Line_6_I;
double Line_4_F; double Line_5_F; double Line_6_F;
double Line_4_K; double Line_5_K; double Line_6_K;
double Line_4_L; double Line_5_L; double Line_6_L;
double Line_4_M; double Line_5_M; double Line_6_M;
//|+-----------------------------------------------------------------+
//|Buf inform                                                        |
//|+-----------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
SetIndexBuffer(1,Buf_1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
SetIndexBuffer(2,Buf_2);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
SetIndexBuffer(5,Buf_3);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
SetIndexBuffer(4,Buf_4);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
SetIndexBuffer(3,Buf_5);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//|+--+
return;
}
//|+-----------------------------------------------------------------+
//|Start                                                             |
//|+-----------------------------------------------------------------+
int start()
  {
  //|+---------------------------------------------------------------+
  //|Level_1                                                         |
  //|+---------------------------------------------------------------+
  for(
  p=0;
  p<History;
  p++)
    {
    //|+-------------------------------------------------------------+
    //|Level_2                                                       |
    //|+-------------------------------------------------------------+
    price = Bid;
    //|+--+
    Line_1_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_1,p);
    Line_1_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_1,p);
    Line_1_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_1,p);
    Line_1_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_1,Stochastic_Period_Line_B_1,Stochastic_Period_Line_B_1,Stohastic_MA_Metod_1,0,0,p);
    Line_1_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_1,Stochastic_Period_Line_B_1,Stochastic_Period_Line_B_1,Stohastic_MA_Metod_1,0,1,p);
    Line_1_C = iADX(Symbol(),0,ADX_Period_Line_1,ADX_Type_Price_1,0,p);
    Line_1_D = iADX(Symbol(),0,ADX_Period_Line_1,ADX_Type_Price_1,1,p);
    Line_1_I = iADX(Symbol(),0,ADX_Period_Line_1,ADX_Type_Price_1,2,p);
    Line_1_F = iRVI(Symbol(),0,RVI_Period_Line_1,ADX_Type_Price_1,p);
    //|+--+
    Line_2_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_2,p);
    Line_2_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_2,p);
    Line_2_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_2,p);
    Line_2_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_2,Stochastic_Period_Line_B_2,Stochastic_Period_Line_B_2,Stohastic_MA_Metod_2,0,0,p);
    Line_2_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_2,Stochastic_Period_Line_B_2,Stochastic_Period_Line_B_2,Stohastic_MA_Metod_2,0,1,p);
    Line_2_C = iADX(Symbol(),0,ADX_Period_Line_2,ADX_Type_Price_2,0,p);
    Line_2_D = iADX(Symbol(),0,ADX_Period_Line_2,ADX_Type_Price_2,1,p);
    Line_2_I = iADX(Symbol(),0,ADX_Period_Line_2,ADX_Type_Price_2,2,p);
    Line_2_F = iRVI(Symbol(),0,RVI_Period_Line_2,ADX_Type_Price_2,p);
    //|+--+
    Line_3_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_3,p);
    Line_3_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_3,p);
    Line_3_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_3,p);
    Line_3_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_3,Stochastic_Period_Line_B_3,Stochastic_Period_Line_B_3,Stohastic_MA_Metod_3,0,0,p);
    Line_3_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_3,Stochastic_Period_Line_B_3,Stochastic_Period_Line_B_3,Stohastic_MA_Metod_3,0,1,p);
    Line_3_C = iADX(Symbol(),0,ADX_Period_Line_3,ADX_Type_Price_3,0,p);
    Line_3_D = iADX(Symbol(),0,ADX_Period_Line_3,ADX_Type_Price_3,1,p);
    Line_3_I = iADX(Symbol(),0,ADX_Period_Line_3,ADX_Type_Price_3,2,p);
    Line_3_F = iRVI(Symbol(),0,RVI_Period_Line_3,ADX_Type_Price_3,p);
    //|+--+
    Line_4_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_4,p);
    Line_4_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_4,p);
    Line_4_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_4,p);
    Line_4_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_4,Stochastic_Period_Line_B_4,Stochastic_Period_Line_B_4,Stohastic_MA_Metod_4,0,0,p);
    Line_4_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_4,Stochastic_Period_Line_B_4,Stochastic_Period_Line_B_4,Stohastic_MA_Metod_4,0,1,p);
    Line_4_C = iADX(Symbol(),0,ADX_Period_Line_4,ADX_Type_Price_4,0,p);
    Line_4_D = iADX(Symbol(),0,ADX_Period_Line_4,ADX_Type_Price_4,1,p);
    Line_4_I = iADX(Symbol(),0,ADX_Period_Line_4,ADX_Type_Price_4,2,p);
    Line_4_F = iRVI(Symbol(),0,RVI_Period_Line_4,ADX_Type_Price_4,p);
    //|+--+
    Line_5_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_5,p);
    Line_5_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_5,p);
    Line_5_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_5,p);
    Line_5_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_5,Stochastic_Period_Line_B_5,Stochastic_Period_Line_B_5,Stohastic_MA_Metod_5,0,0,p);
    Line_5_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_5,Stochastic_Period_Line_B_5,Stochastic_Period_Line_B_5,Stohastic_MA_Metod_5,0,1,p);
    Line_5_C = iADX(Symbol(),0,ADX_Period_Line_5,ADX_Type_Price_5,0,p);
    Line_5_D = iADX(Symbol(),0,ADX_Period_Line_5,ADX_Type_Price_5,1,p);
    Line_5_I = iADX(Symbol(),0,ADX_Period_Line_5,ADX_Type_Price_5,2,p);
    Line_5_F = iRVI(Symbol(),0,RVI_Period_Line_5,ADX_Type_Price_5,p);
    //|+--+
    Line_6_A = iRSI(Symbol(),0,RSI_Period_Line_1_1,RSI_Type_Line_6,p);
    Line_6_M = iRSI(Symbol(),0,RSI_Period_Line_1_2,RSI_Type_Line_6,p);
    Line_6_L = iRSI(Symbol(),0,RSI_Period_Line_1_3,RSI_Type_Line_6,p);
    Line_6_B = iStochastic(Symbol(),0,Stochastic_Period_Line_A_6,Stochastic_Period_Line_B_6,Stochastic_Period_Line_B_6,Stohastic_MA_Metod_6,0,0,p);
    Line_6_K = iStochastic(Symbol(),0,Stochastic_Period_Line_A_6,Stochastic_Period_Line_B_6,Stochastic_Period_Line_B_6,Stohastic_MA_Metod_6,0,1,p);
    Line_6_C = iADX(Symbol(),0,ADX_Period_Line_6,ADX_Type_Price_6,0,p);
    Line_6_D = iADX(Symbol(),0,ADX_Period_Line_6,ADX_Type_Price_6,1,p);
    Line_6_I = iADX(Symbol(),0,ADX_Period_Line_6,ADX_Type_Price_6,2,p);
    Line_6_F = iRVI(Symbol(),0,RVI_Period_Line_6,ADX_Type_Price_6,p);
      //|+-----------------------------------------------------------+
      //|Level_3                                                     |
      //|+-----------------------------------------------------------+
      Buf_0[p] = price * (_N_ * (((Line_1_B + Line_1_F) / Line_1_K) - ((Line_1_D + Line_1_I) / Line_1_C) + ((Line_1_A + Line_1_M) / Line_1_L)));
      //|+--+
      Buf_1[p] = price * (_N_ * (((Line_2_B + Line_2_F) / Line_2_K) - ((Line_2_D + Line_2_I) / Line_2_C) + ((Line_2_A + Line_2_M) / Line_2_L)));
      //|+--+
      Buf_2[p] = price * (_N_ * (((Line_3_B + Line_3_F) / Line_3_K) - ((Line_3_D + Line_3_I) / Line_3_C) + ((Line_3_A + Line_3_M) / Line_3_L)));
      //|+--+
      Buf_3[p] = price * (_NN_ * (((Line_4_B + Line_4_F) / Line_4_K) - ((Line_4_D + Line_4_I) / Line_4_C) + ((Line_4_A + Line_4_M) / Line_4_L)));
      //|+--+
      Buf_4[p] = price * (_NN_ * (((Line_5_B + Line_5_F) / Line_5_K) - ((Line_5_D + Line_5_I) / Line_5_C) + ((Line_5_A + Line_5_M) / Line_5_L)));
      //|+--+
      Buf_5[p] = price * (_NN_ * (((Line_6_B + Line_6_F) / Line_6_K) - ((Line_6_D + Line_6_I) / Line_6_C) + ((Line_6_A + Line_6_M) / Line_6_L)));
        //|+---------------------------------------------------------+
        //|Level_4                                                   |
        //|+---------------------------------------------------------+
        }
        return;
        }
//|+-----------------------------------------------------------------+
//|The_end                                                           |
//|+-----------------------------------------------------------------+
.
--------------------------------------
 
evillive!

I've seen such "designs" in an MQ4 tutorial, but didn't know how to apply them. )
 
Help me cross the two indicators, I can't get them in the same window
 
и
Files:
 
I'll give it a try.
 
sIndex-v6g-uEUR.mq4 - indicator, displayed in a separate window.
Kolier_SuperTrend_Indip_1_.mq4 - indicator displayed in the main window.

To cross them, it would be enough to change the way one of them is displayed (main window or subwindow).
I see that indicators show calculations with final results in different intervals.

sIndex-v6g-uEUR.mq4 = x, (2 < x > 3 );
Kolier_SuperTrend_Indip_1_.mq4 = y, (0,5 < y > 2).

There is an option to change the formula for calculating one of them.
 
BUT!!!
 
If the calculation formula changes, then the indicator readings will change (axiom). :)

sIndex-v6g-uEUR.mq4 * B * R = L, where

B - number, equal to the price value in the current moment,
R - the number, set for balancing the indicator readings.

L - the number, equal to the final result of indicator calculations, related to the price.


Kolier_SuperTrend_Indip_1_.mq4 * T = E, where

T - number that is between 0 and 1 (performs the function of the divider).
or

Kolier_SuperTrend_Indip_1_.mq4 / T = E.

The variable T will acquire a wider range, from 1 to (+) infinity.


E is a number equal to the quotient of the price indicator Kolier_SuperTrend_Indip_1_.mq4.
 

I don't think you should change the formulas too much.

 
The calculations of the two different indicators can be equalised, but only the "RESPONSIBILITIES" must be equalised.
Reason: