-¡Tortas calientes, tortitas, tortitas! - En sentido figurado, por supuesto. Discutir y criticar los nuevos indicadores. - página 5

 

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

Mantener mi promesa corrigiendo un error lógico creado durante la programación.
Resulta que había más de uno.


Error (1). Con este error el indicador mostraba "la fuerza de una determinada dirección". Consistía en una descripción de la variable errónea. Sin ella, empezó a mostrar la "fuerza relativa de la dirección definitiva del movimiento".

Error (2). Con este error, el indicador ha mostrado la "fuerza relativa de la dirección exacta del movimiento". Consistió en un error cometido durante el AJUSTE DE LA FÓRMULA. Sin ella, empezó a mostrar
"la fuerza relativa de la dirección exacta del movimiento del precio".


Hasta aquí el código "saludable":

//|+-----------------------------------------------------------------+
//|Название : 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                                                           |
//|+-----------------------------------------------------------------+
.
--------------------------------------
 
¡evillante!

He visto esas "construcciones" en el tutorial de MQ4, pero no sabía cómo aplicarlas. )
 
Ayúdame a cruzar los dos indicadores, no puedo ponerlos en la misma ventana
Archivos adjuntos:
 
и
Archivos adjuntos:
 
Lo intentaré.
 
sIndex-v6g-uEUR.mq4 - indicador, mostrado en una ventana separada.
Kolier_SuperTrend_Indip_1_.mq4 - indicador mostrado en la ventana principal.

Para cruzarlas, bastaría con cambiar la forma en que se muestra una de ellas (ventana principal o subventana).
Veo que los indicadores muestran cálculos con resultados finales en diferentes intervalos.

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

Hay una opción para cambiar la fórmula de cálculo de uno de ellos.
 
¡¡¡PERO!!!
 
Si la fórmula de cálculo cambia, entonces las lecturas del indicador cambiarán (axioma). :)

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

B - número, igual al valor del precio en el momento actual,
R - el número, establecido para equilibrar las lecturas del indicador.

L - el número, igual al resultado final de los cálculos del indicador, relacionado con el precio.


Kolier_SuperTrend_Indip_1_.mq4 * T = E, donde

T - número que está entre 0 y 1 (realiza la función de divisor).
o

Kolier_SuperTrend_Indip_1_.mq4 / T = E.

La variable T adquirirá un rango más amplio, de 1 a (+) infinito.


E es un número igual al cociente del indicador de precios Kolier_SuperTrend_Indip_1_.mq4.
 

No creo que haya que cambiar demasiado las fórmulas.

 
Los cálculos de los dos indicadores diferentes pueden igualarse, pero sólo deben igualarse las "RESPONSABILIDADES".