[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 83

 

Você pode me dizer como deve ser o código com as seguintes condições: se a cor do indicador mudar de vermelho para azul, colocar uma ordem de compra pendente, se ao contrário, a cor do indicador mudou de azul para vermelho, então vendetop?

 
Se você colocar uma ordem sempre que mudar de cor, isso não seria muito?
 
Notter:

É aceitável o uso de condições complexas de compostos



Muito permissível
 
MikeM:
Se definirmos uma ordem pendente toda vez que mudarmos de cor, teremos muitas ordens pendentes?

O indicador é um indicador de tendência, ele não muda de cor a cada barra. Estou interessado na condição de verificar a mudança de cor das barras e estabelecer uma ordem pendente com base nela. Por exemplo, se um novo bar é aberto e o anterior é azul e o anterior era vermelho, isso significa que as cores mudaram e devemos colocar um pedido pendente.

 
Qual é a maneira correta de anexar um indicador a outro através do iCustom()?
Tenho um indicador no qual todas as 8 matrizes de indicadores estão ocupadas. Como criar o segundo corretamente, para que ele desenhe a curva a partir do primeiro indicador em 1 matriz de indicadores?
Ambos os indicadores # janela_do_cartão_indicador de propriedade.
A explicação mais óbvia é o analógico na forma do código dos dois indicadores ligados.

Agradecemos antecipadamente!

//+------------------------------------------------------------------+
//|                                                   __proba_MA.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 LightSeaGreen
//---- buffers
double MovingBuffer[];
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MovingBuffer);
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iCustom(NULL,0,"moving averages", 0, i); 
   return(0);
  }
Isto funciona.
 

Isto não está funcionando.

//+------------------------------------------------------------------+
//|                                                      ___ORSE.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window       // Индикатор рисуется в основном окне
#property indicator_buffers 8          // Количество буферов
#property indicator_color1 Black       // Цвет линии 0 буфера опорной    МАO
#property indicator_color2 Black       // Цвет линии 1 буфера опорной    МАO сглаженной
#property indicator_color3 Blue        // Цвет линии 2 буфера расчётной  МАR
#property indicator_color4 Blue        // Цвет линии 3 буфера расчётной  МАR  сглаженной
#property indicator_color5 LimeGreen   // Цвет линии 4 буфера скоростной МАS
#property indicator_color6 LimeGreen   // Цвет линии 5 буфера скоростной МАS  сглаженной
#property indicator_color7 Red         // Цвет линии 6 буфера импульсной МАE
#property indicator_color8 Red         // Цвет линии 7 буфера импульсной МАE  сглаженной


 double TF             =   1;    // Тайм Фрэйм
//-----------------
 int    Period_O       =  13;    // Период опорной O
 int    Aver_Bars_O    =   5;    // Колич. баров для сглаживания опорной O

 int    Period_R       =  21;    // Период расчётной R
 int    Aver_Bars_R    =   5;    // Колич. баров для сглаживания расчётной R

 int    Bars_V_S       =   5;    // Колич.баров для расчёта скоростной S
 double K_V_S          = 2.1;    // Коэффициент усиления разности значений скоростной S
 int    Aver_Bars_S    =   5;    // Колич. баров для сглаживания скоростной S

 int    Bars_V_E       =   5;    // Колич.баров для расчёта импульсной E
 double K_V_E          = 2.1;    // Коэффициент усиления разности значений импульсной E
 int    Aver_Bars_E    =   5;    // Колич. баров для сглаживания импульсной E
//-----------------
int     Ma_method      =   3;    // MODE_LWMA       3  Линейно-взвешенное скользящее среднее  
int     Applied_price  =   5;    // PRICE_TYPICAL   5  Типичная цена (High+Low+Close)/3

//--------------------------------------------------------------------
                   // Расчитываемые величины
double Line_0[];                       // Инидикаторн. массив опорной    O            Black
double Line_1[];                       // Инидикаторн. массив опорной    O сглаженный Black
double Line_2[];                       // Инидикаторн. массив расчётной  R            Blue
double Line_3[];                       // Инидикаторн. массив расчётной  R сглаженный Blue
double Line_4[];                       // Инидикаторн. массив скоростной S            Green
double Line_5[];                       // Инидикаторн. массив скоростной S сглаженный Green
double Line_6[];                       // Инидикаторн. массив импульсной E            Red
double Line_7[];                       // Инидикаторн. массив импульсной E сглаженный Red

int    Calc_Period_O;                  // Расчитываемый период опорной   O
int    Calc_Period_R;                  // Расчитываемый период расчётной R
double Bars_S;                         // Вычисленное количество баров (период) для измерения скорости  S
double Bars_E;                         // Вычисленное количество баров (период) для измерения импульса Е

//--------------------------------------------------------------------
int init()
   {
    SetIndexBuffer(0,Line_0);          // Назначение массива буферу опорной    O            Black
    SetIndexBuffer(1,Line_1);          // Назначение массива буферу опорной    O сглаженный Black 
    SetIndexBuffer(2,Line_2);          // Назначение массива буферу расчётной  R            Blue
    SetIndexBuffer(3,Line_3);          // Назначение массива буферу расчётной  R сглаженный Blue
    SetIndexBuffer(4,Line_4);          // Назначение массива буферу скоростной S            Green
    SetIndexBuffer(5,Line_5);          // Назначение массива буферу скоростной S сглаженный Green
    SetIndexBuffer(6,Line_6);          // Назначение массива буферу импульсной E            Red
    SetIndexBuffer(7,Line_7);          // Назначение массива буферу импульсной E сглаженный Red

    SetIndexStyle (0,DRAW_NONE,STYLE_SOLID,1);   // Стиль линии, толщина опорной    O            Black
    SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);   // Стиль линии, толщина опорной    O сглаженный Black
    SetIndexStyle (2,DRAW_NONE,STYLE_SOLID,1);   // Стиль линии, толщина расчётной  R            Blue
    SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,2);   // Стиль линии, толщина расчётной  R сглаженный Blue
    SetIndexStyle (4,DRAW_NONE,STYLE_SOLID,1);   // Стиль линии, толщина скоростной S            Green
    SetIndexStyle (5,DRAW_LINE,STYLE_SOLID,2);   // Стиль линии, толщина скоростной S сглаженный Green
    SetIndexStyle (6,DRAW_NONE,STYLE_SOLID,1);   // Стиль линии, толщина импульсной E            Red
    SetIndexStyle (7,DRAW_LINE,STYLE_SOLID,2);   // Стиль линии, толщина импульсной E сглаженный Red

    Calc_Period_O = TF * Period_O;     // Вычисленный период O
    Calc_Period_R = TF * Period_R;     // Вычисленный период R для S и Е

    Bars_S        = TF * Bars_V_S;     // Вычисленное количество баров (период) для измерения скорости S
    Bars_E        = TF * Bars_V_E;     // Вычисленное количество баров (период) для измерения импульса Е

    return;
   }
//--------------------------------------------------------------------
int deinit()
   {
    return(0);
   }
//--------------------------------------------------------------------
int start()
   {
    //----------------------------------------------------------------
    int i,n,s,e,Counted_bars;
    double MAO,MAR,MAR_c,MAR_p,MAS,MAS_c,MAS_p,MAE,Sum;
    //----------------------------------------------------------------
    Counted_bars=IndicatorCounted();   // Количество просчитанных баров 
    i=Bars-Counted_bars-1;             // Индекс первого непосчитанного
    //----------------------------------------------------------------
    while(i>=0)
        {
         //--------------------------------------------------------------
                             // ОПОРНАЯ
         MAO=iMA(NULL, 0, Calc_Period_O, 0, Ma_method, Applied_price, i);      // Значение опорной МАO
         Line_0[i]=MAO;                                                        // Индик. массив опорной O
         //--------------------------------------------------------------
         if (Aver_Bars_O<0)                      // Если неверно задано сглаживание
              Aver_Bars_O=0;                     // .. то не меньше нуля
         Sum=0;                                  // Технический приём
         for(n=i; n<=i+Aver_Bars_O; n++)         // Суммироваение последних значен.
              Sum=Sum + Line_0[n];               // Накопление суммы последн. знач.
         Line_1[i]= Sum/(Aver_Bars_O+1);         // Индик. массив сглаженной линии Black

         //--------------------------------------------------------------
                             // РАСЧЁТНАЯ
         MAR=iMA(NULL, 0, Calc_Period_R, 0, Ma_method, Applied_price, i);      // Значение расчётной МАR
         Line_2[i]=MAR;                                                        // Индик. массив расчётной R
         //--------------------------------------------------------------
         if (Aver_Bars_R<0)                      // Если неверно задано сглаживание
              Aver_Bars_R=0;                     // .. то не меньше нуля
         Sum=0;                                  // Технический приём
         for(n=i; n<=i+Aver_Bars_R; n++)         // Суммироваение последних значен.
              Sum=Sum + Line_2[n];               // Накопление суммы последн. знач.
         Line_3[i]= Sum/(Aver_Bars_R+1);         // Индик. массив сглаженной линии Blue

         //--------------------------------------------------------------
                             // СКОРОСТНАЯ
         MAR_c=Line_2[i];
         s=i+Bars_S;
         MAR_p=Line_2[s];
         MAS= MAO+K_V_S*(MAR_c-MAR_p);                                         // Значение скоростной MAS
         Line_4[i]= MAS;                                                       // Индик. массив скоростной S
         //--------------------------------------------------------------
         if (Aver_Bars_S<0)                      // Если неверно задано сглаживание
              Aver_Bars_S=0;                     // .. то не меньше нуля
         Sum=0;                                  // Технический приём
         for(n=i; n<=i+Aver_Bars_S; n++)         // Суммироваение последних значен.
              Sum=Sum + Line_4[n];               // Накопление суммы последн. знач.
         Line_5[i]= Sum/(Aver_Bars_S+1);         // Индик. массив сглаженной линии LimeGreen

         //--------------------------------------------------------------
                             // ИМПУЛЬСНАЯ
         MAS_c=Line_5[i];
         e=i+Bars_E;
         MAS_p=Line_5[e];
         MAE= MAO+0.001*K_V_E*(MAS_c-MAS_p)*Volume[i];                         // Значение импульсной MAE
         Line_6[i]= MAE;                                                       // Индик. массив импульсной Е
         //--------------------------------------------------------------
         if (Aver_Bars_E<0)                      // Если неверно задано сглаживание
              Aver_Bars_E=0;                     // .. то не меньше нуля
         Sum=0;                                  // Технический приём
         for(n=i; n<=i+Aver_Bars_E; n++)         // Суммироваение последних значен.
              Sum=Sum + Line_6[n];               // Накопление суммы последн. знач.
         Line_7[i]= Sum/(Aver_Bars_E+1);         // Индик. массив сглаженной линии Red
         i--;                                    // Расчёт индекса следующего бара
     }
   return;
  }
//+------------------------------------------------------------------+
//|                                                 __proba_ORSE.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 LightSeaGreen
//---- buffers
double MovingBuffer[];
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MovingBuffer);
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iCustom(NULL,0,"___ORSE", 0, i); 
   return(0);
  }

O terminal fica pendurado. Ora, eu não entendo.

 
ZahvatkiN:

O indicador é um indicador de tendência, ele não muda de cor a cada barra. Estou interessado na própria condição para verificar se a cor das barras está mudando e para estabelecer uma ordem pendente com base nisso.

O computador não distingue a cor, mas apenas os números 0 e 1. Portanto, devemos especificar o motivo das mudanças de cor no indicador. Por exemplo, mudança na direção do preço e como essa mudança é significativa!
 
Pessoal, alguém tem uma função para determinar quanto tempo (segundos) já passou desde o início do dia?
 
TimeCurrent() % 86400
 
MikeM:
TimeCurrent() % 86400

????
Razão: