Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 19

 

Hola.

Por favor, aconsejar cómo resolver este problema: hacer un Asesor Experto para los siguientes parámetros

  1. Analizar una determinada vela en un determinado marco temporal (alcista/bajista),
  2. hacer un trato a partir del nivel de precio de apertura de la vela en un determinado periodo de tiempo.
Por ejemplo: Una vela de 12 horas es bajista en el H1. El precio de apertura es 1,2000.

Gracias.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 

Chicos, estoy preparando un código para el campeonato. Si eres bueno con los indies, compruébalo, por favor. Hay un problema con los índices. En la 4, todo funciona bien, en la 5, no dibuja nada. Se trata de un indicador sobre diferencias de MA de diferentes pares multiplicado por coeficientes y sumado por valores de apertura, alta, baja y cierre. Escribí el primer post, toda la información no está incluida en uno - la pantalla salió volando y eso es todo.

Lo hago en dos. Lo pongo en el gráfico de Eurobucks y allí y allí, en H1, no dibuja nada en un punto.

La interpretación - cruce de cero desde abajo - comprar, cruce opuesto - vender - esta es la primera opción. La segunda - entrada en las curvas - si el extremo está por debajo de cero - comprar, si está por encima de cero - vender. Todavía estoy trabajando en la formalización de las condiciones de entrada al mercado.

En el 4 - ¡todo es normal! Utilicé materiales de este artículo, entre otros, al traducir el código del indicador a cinco.

Había cometido un error en el código en alguna parte.


En 5 - silencio...



 

Los códigos indicativos en el tráiler - no se incluyen aquí.

Aquí está el código del gusano - todo funciona bien:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Green

extern int M=56;
extern int F=9;
extern double kUSD=1;
extern double kGBP=1;
extern double kJPY=1;
extern double kEUR=1;
  
double pair[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION,Yellow);
   SetIndexBuffer(0,pair);
   IndicatorShortName(Symbol() + "(" + Period() + "): ");
   SetIndexLabel(0, Symbol()); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     
     int limit;
     int counted_bars=IndicatorCounted();
     double OPEN,HIGH,LOW,CLOSE;

     if(counted_bars<0) return(-1);
  //---- последний посчитанный бар будет пересчитан
     if(counted_bars>0) counted_bars--;
     limit=Bars-counted_bars;
  //---- основной цикл
     int Price=6; 
     int Mode=3;
     int per1,per2;
     per1=M;per2=F; 
     for(int i=0; i<limit; i++)
       {
         if (Symbol() == "EURUSD"){
               OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-USD(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-USD(Mode,PRICE_HIGH,i,per1,per2);
               LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-USD(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-USD(Mode,PRICE_CLOSE,i,per1,per2);
         }
         if (Symbol() == "EURGBP"){
               OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-GBP(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-GBP(Mode,PRICE_HIGH,i,per1,per2);
               LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-GBP(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-GBP(Mode,PRICE_CLOSE,i,per1,per2);
         }
        
         if (Symbol() == "EURJPY"){
               OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-JPY(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-JPY(Mode,PRICE_HIGH,i,per1,per2);
               LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-JPY(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-JPY(Mode,PRICE_CLOSE,i,per1,per2);
         }
         if (Symbol() == "GBPUSD"){
               OPEN=GBP(Mode,PRICE_OPEN,i,per1,per2)-USD(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=GBP(Mode,PRICE_HIGH,i,per1,per2)-USD(Mode,PRICE_HIGH,i,per1,per2);
               LOW=GBP(Mode,PRICE_LOW,i,per1,per2)-USD(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=GBP(Mode,PRICE_CLOSE,i,per1,per2)-USD(Mode,PRICE_CLOSE,i,per1,per2);
         }
        
         if (Symbol() == "GBPJPY"){
               OPEN=GBP(Mode,PRICE_OPEN,i,per1,per2)-JPY(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=GBP(Mode,PRICE_HIGH,i,per1,per2)-JPY(Mode,PRICE_HIGH,i,per1,per2);
               LOW=GBP(Mode,PRICE_LOW,i,per1,per2)-JPY(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=GBP(Mode,PRICE_CLOSE,i,per1,per2)-JPY(Mode,PRICE_CLOSE,i,per1,per2);
         }
         
         if (Symbol() == "USDJPY"){
               OPEN=USD(Mode,PRICE_OPEN,i,per1,per2)-JPY(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=USD(Mode,PRICE_HIGH,i,per1,per2)-JPY(Mode,PRICE_HIGH,i,per1,per2);
               LOW=USD(Mode,PRICE_LOW,i,per1,per2)-JPY(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=USD(Mode,PRICE_CLOSE,i,per1,per2)-JPY(Mode,PRICE_CLOSE,i,per1,per2);
         }
         
        pair[i]=(OPEN+HIGH+LOW+CLOSE)/4;
       }
   
//----
   return(0);
  }

//+------------------------------------------------------------------+

double USD(int Mode, int Price, int i, int per1, int per2){
   return(
            (iMA("EURUSD",0,per1,0,Mode,Price,i)-
            iMA("EURUSD",0,per2,0,Mode,Price,i))*10000*kEUR
            +
            (iMA("GBPUSD",0,per1,0,Mode,Price,i)-
            iMA("GBPUSD",0,per2,0,Mode,Price,i))*10000*kGBP
            +
            (iMA("USDJPY",0,per2,0,Mode,Price,i)-
            iMA("USDJPY",0,per1,0,Mode,Price,i))*100*kJPY
          );
   
}   

double EUR(int Mode, int Price, int i, int per1, int per2){
   return(
            (iMA("EURUSD",0,per2,0,Mode,Price,i)-
            iMA("EURUSD",0,per1,0,Mode,Price,i))*10000*kUSD
            +
            (iMA("EURGBP",0,per2,0,Mode,Price,i)-
            iMA("EURGBP",0,per1,0,Mode,Price,i))*10000*kGBP
            +
            (iMA("EURJPY",0,per2,0,Mode,Price,i)-
            iMA("EURJPY",0,per1,0,Mode,Price,i))*100*kJPY
          ); 
   
}   

double GBP(int Mode, int Price, int i, int per1, int per2){
   return(
            (iMA("GBPUSD",0,per2,0,Mode,Price,i)-
            iMA("GBPUSD",0,per1,0,Mode,Price,i))*10000*kUSD
            +
            (iMA("EURGBP",0,per1,0,Mode,Price,i)-
            iMA("EURGBP",0,per2,0,Mode,Price,i))*10000*kEUR
            +
            (iMA("GBPJPY",0,per2,0,Mode,Price,i)-
            iMA("GBPJPY",0,per1,0,Mode,Price,i))*100*kJPY
          );
   
}      
   

double JPY(int Mode, int Price, int i, int per1, int per2){
   return(
            (iMA("USDJPY",0,per1,0,Mode,Price,i)-
            iMA("USDJPY",0,per2,0,Mode,Price,i))*100*kUSD
            +
            (iMA("EURJPY",0,per1,0,Mode,Price,i)-
            iMA("EURJPY",0,per2,0,Mode,Price,i))*100*kEUR
            +
            (iMA("GBPJPY",0,per1,0,Mode,Price,i)-
            iMA("GBPJPY",0,per2,0,Mode,Price,i))*100*kGBP           
           
          );
   
}   
//+------------------------------------------------------------------+
Archivos adjuntos:
 

El código está en los cinco primeros, a quién descargar chatarra ... y quién arrastra, incluso en indicadores.

Gracias por los comentarios:

 #property copyright "2009, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "2.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//#property indicator_applied_price PRICE_TYPICAL
//--- подключим функции усреднения из файла MovingAverages.mqh
#include <MovingAverages.mqh>
//---- plot TSI
#property indicator_label1   "Complex2"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Green
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
//--- input parameters
input int MA_Slow= 56 ;                         //MA_Slow
input ENUM_TIMEFRAMES MA_Slow_TF = PERIOD_H1 ; //MA_Slow_TF
input int MA_Fast= 9 ;                           //MA_Fast
input ENUM_TIMEFRAMES MA_Fast_TF = PERIOD_H1 ; //MA_Fast_TF

input double kUSD= 1 ;
input double kGBP= 1 ;
input double kCAD= 1 ;
input double kJPY= 1 ;
input double kEUR= 1 ;
//--- indicator buffers
double pair[];
//--------------------------ХЭНДЛЫ ИНДИКАТОРОВ ПО ВАЛЮТНЫМ ПАРАМ------------------
int hMA_OPEN_S_EURUSD, hMA_HIGH_S_EURUSD, hMA_LOW_S_EURUSD, hMA_CLOSE_S_EURUSD,
    hMA_OPEN_F_EURUSD, hMA_HIGH_F_EURUSD, hMA_LOW_F_EURUSD, hMA_CLOSE_F_EURUSD;
    
int hMA_OPEN_S_GBPUSD, hMA_HIGH_S_GBPUSD, hMA_LOW_S_GBPUSD, hMA_CLOSE_S_GBPUSD,
    hMA_OPEN_F_GBPUSD, hMA_HIGH_F_GBPUSD, hMA_LOW_F_GBPUSD, hMA_CLOSE_F_GBPUSD;    
   
int hMA_OPEN_S_USDJPY, hMA_HIGH_S_USDJPY, hMA_LOW_S_USDJPY, hMA_CLOSE_S_USDJPY,
    hMA_OPEN_F_USDJPY, hMA_HIGH_F_USDJPY, hMA_LOW_F_USDJPY, hMA_CLOSE_F_USDJPY;
  
int hMA_OPEN_S_EURGBP, hMA_HIGH_S_EURGBP, hMA_LOW_S_EURGBP, hMA_CLOSE_S_EURGBP,
    hMA_OPEN_F_EURGBP, hMA_HIGH_F_EURGBP, hMA_LOW_F_EURGBP, hMA_CLOSE_F_EURGBP;
    
int hMA_OPEN_S_EURJPY, hMA_HIGH_S_EURJPY, hMA_LOW_S_EURJPY, hMA_CLOSE_S_EURJPY,
    hMA_OPEN_F_EURJPY, hMA_HIGH_F_EURJPY, hMA_LOW_F_EURJPY, hMA_CLOSE_F_EURJPY;
                
int hMA_OPEN_S_GBPJPY, hMA_HIGH_S_GBPJPY, hMA_LOW_S_GBPJPY, hMA_CLOSE_S_GBPJPY,
    hMA_OPEN_F_GBPJPY, hMA_HIGH_F_GBPJPY, hMA_LOW_F_GBPJPY, hMA_CLOSE_F_GBPJPY;
    

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,pair, INDICATOR_DATA );      
   /*
   SetIndexBuffer(1,OPEN_S,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,HIGH_S,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LOW_S,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,CLOSE_S,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,OPEN_F,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,HIGH_F,INDICATOR_CALCULATIONS);
   SetIndexBuffer(7,LOW_F,INDICATOR_CALCULATIONS);
   SetIndexBuffer(8,CLOSE_F,INDICATOR_CALCULATIONS);   
  */ 
   
   //hMA1=iMA(NULL,MA_Slow_TF,MA_Slow,0,MODE_LWMA,PRICE_WEIGHTED);
   //hMA2=iMA(NULL,MA_Fast_TF,MA_Fast,0,MODE_LWMA,PRICE_WEIGHTED);  
//---------------------------   
   hMA_OPEN_S_EURUSD= iMA ( "EURUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_EURUSD= iMA ( "EURUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_EURUSD= iMA ( "EURUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_EURUSD= iMA ( "EURUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_EURUSD= iMA ( "EURUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_EURUSD= iMA ( "EURUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_EURUSD= iMA ( "EURUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_EURUSD= iMA ( "EURUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );
//---------------------------   
   hMA_OPEN_S_GBPUSD= iMA ( "GBPUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_GBPUSD= iMA ( "GBPUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_GBPUSD= iMA ( "GBPUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_GBPUSD= iMA ( "GBPUSD" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_GBPUSD= iMA ( "GBPUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_GBPUSD= iMA ( "GBPUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_GBPUSD= iMA ( "GBPUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_GBPUSD= iMA ( "GBPUSD" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );
//----------------------------   
   hMA_OPEN_S_USDJPY= iMA ( "USDJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_USDJPY= iMA ( "USDJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_USDJPY= iMA ( "USDJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_USDJPY= iMA ( "USDJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_USDJPY= iMA ( "USDJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_USDJPY= iMA ( "USDJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_USDJPY= iMA ( "USDJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_USDJPY= iMA ( "USDJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );
//---------------------------   
   hMA_OPEN_S_EURGBP= iMA ( "EURGBP" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_EURGBP= iMA ( "EURGBP" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_EURGBP= iMA ( "EURGBP" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_EURGBP= iMA ( "EURGBP" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_EURGBP= iMA ( "EURGBP" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_EURGBP= iMA ( "EURGBP" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_EURGBP= iMA ( "EURGBP" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_EURGBP= iMA ( "EURGBP" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );   
//----------------------------      
   hMA_OPEN_S_EURJPY= iMA ( "EURJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_EURJPY= iMA ( "EURJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_EURJPY= iMA ( "EURJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_EURJPY= iMA ( "EURJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_EURJPY= iMA ( "EURJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_EURJPY= iMA ( "EURJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_EURJPY= iMA ( "EURJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_EURJPY= iMA ( "EURJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );   
//----------------------------      
   hMA_OPEN_S_GBPJPY= iMA ( "GBPJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_S_GBPJPY= iMA ( "GBPJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_S_GBPJPY= iMA ( "GBPJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_S_GBPJPY= iMA ( "GBPJPY" ,MA_Slow_TF,MA_Slow, 0 , MODE_LWMA , PRICE_CLOSE );  
   
   hMA_OPEN_F_GBPJPY= iMA ( "GBPJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_OPEN );
   hMA_HIGH_F_GBPJPY= iMA ( "GBPJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_HIGH );  
   hMA_LOW_F_GBPJPY= iMA ( "GBPJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_LOW );
   hMA_CLOSE_F_GBPJPY= iMA ( "GBPJPY" ,MA_Fast_TF,MA_Fast, 0 , MODE_LWMA , PRICE_CLOSE );   
//----------------------------      
           
   
       
   
//--- с какого бара начнет отрисовываться индикатор
//   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,r+s-1);
   string shortname;
   StringConcatenate (shortname, "Complex(" ,MA_Slow, "," ,MA_Fast, ")" );
//--- установим метку для отображения в DataWindow
   PlotIndexSetString ( 0 , PLOT_LABEL ,shortname);   
//--- установим имя для показа в отдельном подокне и во всплывающей подсказке
   IndicatorSetString ( INDICATOR_SHORTNAME ,shortname);
//--- укажем точность отображения значений индикатора
   IndicatorSetInteger ( INDICATOR_DIGITS , 5 );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[])

  {
   double OPEN_S_EURUSD[],HIGH_S_EURUSD[],LOW_S_EURUSD[],CLOSE_S_EURUSD[];
   double OPEN_F_EURUSD[],HIGH_F_EURUSD[],LOW_F_EURUSD[],CLOSE_F_EURUSD[];   
//-------------------------------
   double OPEN_S_GBPUSD[],HIGH_S_GBPUSD[],LOW_S_GBPUSD[],CLOSE_S_GBPUSD[];
   double OPEN_F_GBPUSD[],HIGH_F_GBPUSD[],LOW_F_GBPUSD[],CLOSE_F_GBPUSD[];
//-------------------------------
   double OPEN_S_EURGBP[],HIGH_S_EURGBP[],LOW_S_EURGBP[],CLOSE_S_EURGBP[];
   double OPEN_F_EURGBP[],HIGH_F_EURGBP[],LOW_F_EURGBP[],CLOSE_F_EURGBP[];   
//-------------------------------
   double OPEN_S_EURJPY[],HIGH_S_EURJPY[],LOW_S_EURJPY[],CLOSE_S_EURJPY[];
   double OPEN_F_EURJPY[],HIGH_F_EURJPY[],LOW_F_EURJPY[],CLOSE_F_EURJPY[];
//-------------------------------
   double OPEN_S_USDJPY[],HIGH_S_USDJPY[],LOW_S_USDJPY[],CLOSE_S_USDJPY[];
   double OPEN_F_USDJPY[],HIGH_F_USDJPY[],LOW_F_USDJPY[],CLOSE_F_USDJPY[];
//-------------------------------
   double OPEN_S_GBPJPY[],HIGH_S_GBPJPY[],LOW_S_GBPJPY[],CLOSE_S_GBPJPY[];
   double OPEN_F_GBPJPY[],HIGH_F_GBPJPY[],LOW_F_GBPJPY[],CLOSE_F_GBPJPY[];
 
//-------------------------------

   
   

   double OPEN,HIGH,LOW,CLOSE;
   int i;  

   CopyBuffer ( hMA_OPEN_S_EURUSD, 0 , 0 , 1000 ,OPEN_S_EURUSD); 
   CopyBuffer ( hMA_HIGH_S_EURUSD, 0 , 0 , 1000 ,HIGH_S_EURUSD);
   CopyBuffer ( hMA_LOW_S_EURUSD, 0 , 0 , 1000 ,LOW_S_EURUSD);
   CopyBuffer ( hMA_CLOSE_S_EURUSD, 0 , 0 , 1000 ,CLOSE_S_EURUSD);
   
   CopyBuffer ( hMA_OPEN_F_EURUSD, 0 , 0 , 1000 ,OPEN_F_EURUSD);
   CopyBuffer ( hMA_HIGH_F_EURUSD, 0 , 0 , 1000 ,HIGH_F_EURUSD);
   CopyBuffer ( hMA_LOW_F_EURUSD, 0 , 0 , 1000 ,LOW_F_EURUSD);
   CopyBuffer ( hMA_CLOSE_F_EURUSD, 0 , 0 , 1000 ,CLOSE_F_EURUSD);  
//-----------------------------------------------    
   
   CopyBuffer ( hMA_OPEN_S_GBPUSD, 0 , 0 , 1000 ,OPEN_S_GBPUSD); 
   CopyBuffer ( hMA_HIGH_S_GBPUSD, 0 , 0 , 1000 ,HIGH_S_GBPUSD);
   CopyBuffer ( hMA_LOW_S_GBPUSD, 0 , 0 , 1000 ,LOW_S_GBPUSD);
   CopyBuffer ( hMA_CLOSE_S_GBPUSD, 0 , 0 , 1000 ,CLOSE_S_GBPUSD);
   
   CopyBuffer ( hMA_OPEN_F_GBPUSD, 0 , 0 , 1000 ,OPEN_F_GBPUSD);
   CopyBuffer ( hMA_HIGH_F_GBPUSD, 0 , 0 , 1000 ,HIGH_F_GBPUSD);
   CopyBuffer ( hMA_LOW_F_GBPUSD, 0 , 0 , 1000 ,LOW_F_GBPUSD);
   CopyBuffer ( hMA_CLOSE_F_GBPUSD, 0 , 0 , 1000 ,CLOSE_F_GBPUSD);  
//-----------------------------------------------   
   
   CopyBuffer ( hMA_OPEN_S_EURGBP, 0 , 0 , 1000 ,OPEN_S_EURGBP); 
   CopyBuffer ( hMA_HIGH_S_EURGBP, 0 , 0 , 1000 ,HIGH_S_EURGBP);
   CopyBuffer ( hMA_LOW_S_EURGBP, 0 , 0 , 1000 ,LOW_S_EURGBP);
   CopyBuffer ( hMA_CLOSE_S_EURGBP, 0 , 0 , 1000 ,CLOSE_S_EURGBP);
   
   CopyBuffer ( hMA_OPEN_F_EURGBP, 0 , 0 , 1000 ,OPEN_F_EURGBP);
   CopyBuffer ( hMA_HIGH_F_EURGBP, 0 , 0 , 1000 ,HIGH_F_EURGBP);
   CopyBuffer ( hMA_LOW_F_EURGBP, 0 , 0 , 1000 ,LOW_F_EURGBP);
   CopyBuffer ( hMA_CLOSE_F_EURGBP, 0 , 0 , 1000 ,CLOSE_F_EURGBP);  
//----------------------------------------------   
   
   CopyBuffer ( hMA_OPEN_S_EURJPY, 0 , 0 , 1000 ,OPEN_S_EURJPY); 
   CopyBuffer ( hMA_HIGH_S_EURJPY, 0 , 0 , 1000 ,HIGH_S_EURJPY);
   CopyBuffer ( hMA_LOW_S_EURJPY, 0 , 0 , 1000 ,LOW_S_EURJPY);
   CopyBuffer ( hMA_CLOSE_S_EURJPY, 0 , 0 , 1000 ,CLOSE_S_EURJPY);
   
   CopyBuffer ( hMA_OPEN_F_EURJPY, 0 , 0 , 1000 ,OPEN_F_EURJPY);
   CopyBuffer ( hMA_HIGH_F_EURJPY, 0 , 0 , 1000 ,HIGH_F_EURJPY);
   CopyBuffer ( hMA_LOW_F_EURJPY, 0 , 0 , 1000 ,LOW_F_EURJPY);
   CopyBuffer ( hMA_CLOSE_F_EURJPY, 0 , 0 , 1000 ,CLOSE_F_EURJPY);  
//---------------------------------------------------------   
   
   CopyBuffer ( hMA_OPEN_S_USDJPY, 0 , 0 , 1000 ,OPEN_S_USDJPY); 
   CopyBuffer ( hMA_HIGH_S_USDJPY, 0 , 0 , 1000 ,HIGH_S_USDJPY);
   CopyBuffer ( hMA_LOW_S_USDJPY, 0 , 0 , 1000 ,LOW_S_USDJPY);
   CopyBuffer ( hMA_CLOSE_S_USDJPY, 0 , 0 , 1000 ,CLOSE_S_USDJPY);
   
   CopyBuffer ( hMA_OPEN_F_USDJPY, 0 , 0 , 1000 ,OPEN_F_USDJPY);
   CopyBuffer ( hMA_HIGH_F_USDJPY, 0 , 0 , 1000 ,HIGH_F_USDJPY);
   CopyBuffer ( hMA_LOW_F_USDJPY, 0 , 0 , 1000 ,LOW_F_USDJPY);
   CopyBuffer ( hMA_CLOSE_F_USDJPY, 0 , 0 , 1000 ,CLOSE_F_USDJPY);
//----------------------------------------------------------
  
   CopyBuffer ( hMA_OPEN_S_GBPJPY, 0 , 0 , 1000 ,OPEN_S_GBPJPY); 
   CopyBuffer ( hMA_HIGH_S_GBPJPY, 0 , 0 , 1000 ,HIGH_S_GBPJPY);
   CopyBuffer ( hMA_LOW_S_GBPJPY, 0 , 0 , 1000 ,LOW_S_GBPJPY);
   CopyBuffer ( hMA_CLOSE_S_GBPJPY, 0 , 0 , 1000 ,CLOSE_S_GBPJPY);
   
   CopyBuffer ( hMA_OPEN_F_GBPJPY, 0 , 0 , 1000 ,OPEN_F_GBPJPY);
   CopyBuffer ( hMA_HIGH_F_GBPJPY, 0 , 0 , 1000 ,HIGH_F_GBPJPY);
   CopyBuffer ( hMA_LOW_F_GBPJPY, 0 , 0 , 1000 ,LOW_F_GBPJPY);
   CopyBuffer ( hMA_CLOSE_F_GBPJPY, 0 , 0 , 1000 ,CLOSE_F_GBPJPY); 
//----------------------------------------------------------       
     
   ArraySetAsSeries (OPEN_S_EURUSD, true );
   ArraySetAsSeries (HIGH_S_EURUSD, true );
   ArraySetAsSeries (LOW_S_EURUSD, true );
   ArraySetAsSeries (CLOSE_S_EURUSD, true );
   ArraySetAsSeries (OPEN_F_EURUSD, true );
   ArraySetAsSeries (HIGH_F_EURUSD, true );
   ArraySetAsSeries (LOW_F_EURUSD, true );
   ArraySetAsSeries (CLOSE_F_EURUSD, true );       
       
     
   ArraySetAsSeries (OPEN_S_GBPUSD, true );
   ArraySetAsSeries (HIGH_S_GBPUSD, true );
   ArraySetAsSeries (LOW_S_GBPUSD, true );
   ArraySetAsSeries (CLOSE_S_GBPUSD, true );
   ArraySetAsSeries (OPEN_F_GBPUSD, true );
   ArraySetAsSeries (HIGH_F_GBPUSD, true );
   ArraySetAsSeries (LOW_F_GBPUSD, true );
   ArraySetAsSeries (CLOSE_F_GBPUSD, true );    
          
     
   ArraySetAsSeries (OPEN_S_EURGBP, true );
   ArraySetAsSeries (HIGH_S_EURGBP, true );
   ArraySetAsSeries (LOW_S_EURGBP, true );
   ArraySetAsSeries (CLOSE_S_EURGBP, true );
   ArraySetAsSeries (OPEN_F_EURGBP, true );
   ArraySetAsSeries (HIGH_F_EURGBP, true );
   ArraySetAsSeries (LOW_F_EURGBP, true );
   ArraySetAsSeries (CLOSE_F_EURGBP, true );     
       
     
   ArraySetAsSeries (OPEN_S_EURJPY, true );
   ArraySetAsSeries (HIGH_S_EURJPY, true );
   ArraySetAsSeries (LOW_S_EURJPY, true );
   ArraySetAsSeries (CLOSE_S_EURJPY, true );
   ArraySetAsSeries (OPEN_F_EURJPY, true );
   ArraySetAsSeries (HIGH_F_EURJPY, true );
   ArraySetAsSeries (LOW_F_EURJPY, true );
   ArraySetAsSeries (CLOSE_F_EURJPY, true );     
       
     
   ArraySetAsSeries (OPEN_S_GBPJPY, true );
   ArraySetAsSeries (HIGH_S_GBPJPY, true );
   ArraySetAsSeries (LOW_S_GBPJPY, true );
   ArraySetAsSeries (CLOSE_S_GBPJPY, true );
   ArraySetAsSeries (OPEN_F_GBPJPY, true );
   ArraySetAsSeries (HIGH_F_GBPJPY, true );
   ArraySetAsSeries (LOW_F_GBPJPY, true );
   ArraySetAsSeries (CLOSE_F_GBPJPY, true );         
     
   ArraySetAsSeries (OPEN_S_USDJPY, true );
   ArraySetAsSeries (HIGH_S_USDJPY, true );
   ArraySetAsSeries (LOW_S_USDJPY, true );
   ArraySetAsSeries (CLOSE_S_USDJPY, true );
   ArraySetAsSeries (OPEN_F_USDJPY, true );
   ArraySetAsSeries (HIGH_F_USDJPY, true );
   ArraySetAsSeries (LOW_F_USDJPY, true );
   ArraySetAsSeries (CLOSE_F_USDJPY, true );        
   
   for (i=prev_calculated;i<rates_total;i++)
     {          
       if ( Symbol () == "EURUSD" )
        {     
// ----  OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-USD(Mode,PRICE_OPEN,i,per1,per2);          
         OPEN=((OPEN_F_EURUSD[i]-OPEN_S_EURUSD[i])* 10000 *kUSD+(OPEN_F_EURGBP[i]-OPEN_S_EURGBP[i])* 10000 *kGBP+(OPEN_F_EURJPY[i]-OPEN_S_EURJPY[i])* 100 *kJPY -
               (OPEN_S_EURUSD[i]-OPEN_F_EURUSD[i])* 10000 *kEUR+(OPEN_S_GBPUSD[i]-OPEN_F_GBPUSD[i])* 10000 *kGBP+(OPEN_F_USDJPY[i]-OPEN_S_USDJPY[i])* 100 *kJPY);
               
// ----  HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-USD(Mode,PRICE_HIGH,i,per1,per2);              
         HIGH=((HIGH_F_EURUSD[i]-HIGH_S_EURUSD[i])* 10000 *kUSD+(HIGH_F_EURGBP[i]-HIGH_S_EURGBP[i])* 10000 *kGBP+(HIGH_F_EURJPY[i]-HIGH_S_EURJPY[i])* 100 *kJPY -
               (HIGH_S_EURUSD[i]-HIGH_F_EURUSD[i])* 10000 *kEUR+(HIGH_S_GBPUSD[i]-HIGH_F_GBPUSD[i])* 10000 *kGBP+(HIGH_F_USDJPY[i]-HIGH_S_USDJPY[i])* 100 *kJPY);
               
// ----  LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-USD(Mode,PRICE_LOW,i,per1,per2);
         LOW=((LOW_F_EURUSD[i]-LOW_S_EURUSD[i])* 10000 *kUSD+(LOW_F_EURGBP[i]-LOW_S_EURGBP[i])* 10000 *kGBP+(LOW_F_EURJPY[i]-LOW_S_EURJPY[i])* 100 *kJPY -
               (LOW_S_EURUSD[i]-LOW_F_EURUSD[i])* 10000 *kEUR+(LOW_S_GBPUSD[i]-LOW_F_GBPUSD[i])* 10000 *kGBP+(LOW_F_USDJPY[i]-LOW_S_USDJPY[i])* 100 *kJPY);
               
// ---   CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-USD(Mode,PRICE_CLOSE,i,per1,per2);
         CLOSE=((CLOSE_F_EURUSD[i]-CLOSE_S_EURUSD[i])* 10000 *kUSD+(CLOSE_F_EURGBP[i]-CLOSE_S_EURGBP[i])* 10000 *kGBP+(CLOSE_F_EURJPY[i]-CLOSE_S_EURJPY[i])* 100 *kJPY -
               (CLOSE_S_EURUSD[i]-CLOSE_F_EURUSD[i])* 10000 *kEUR+(CLOSE_S_GBPUSD[i]-CLOSE_F_GBPUSD[i])* 10000 *kGBP+(CLOSE_F_USDJPY[i]-CLOSE_S_USDJPY[i])* 100 *kJPY);
         }
      
      pair[i]=(OPEN+HIGH+LOW+CLOSE)/ 4 ;      
     
     } // Конец цикла for
   return (rates_total);
  }

void OnDeinit ( const int reason) 
  {
   IndicatorRelease (hMA_OPEN_S_EURUSD); IndicatorRelease (hMA_HIGH_S_EURUSD); IndicatorRelease (hMA_LOW_S_EURUSD); IndicatorRelease (hMA_CLOSE_S_EURUSD);
   IndicatorRelease (hMA_OPEN_F_EURUSD); IndicatorRelease (hMA_HIGH_F_EURUSD); IndicatorRelease (hMA_LOW_F_EURUSD); IndicatorRelease (hMA_CLOSE_F_EURUSD);
 
   IndicatorRelease (hMA_OPEN_S_GBPUSD); IndicatorRelease (hMA_HIGH_S_GBPUSD); IndicatorRelease (hMA_LOW_S_GBPUSD); IndicatorRelease (hMA_CLOSE_S_GBPUSD);
   IndicatorRelease (hMA_OPEN_F_GBPUSD); IndicatorRelease (hMA_HIGH_F_GBPUSD); IndicatorRelease (hMA_LOW_F_GBPUSD); IndicatorRelease (hMA_CLOSE_F_GBPUSD);
   
   IndicatorRelease (hMA_OPEN_S_EURGBP); IndicatorRelease (hMA_HIGH_S_EURGBP); IndicatorRelease (hMA_LOW_S_EURGBP); IndicatorRelease (hMA_CLOSE_S_EURGBP);
   IndicatorRelease (hMA_OPEN_F_EURGBP); IndicatorRelease (hMA_HIGH_F_EURGBP); IndicatorRelease (hMA_LOW_F_EURGBP); IndicatorRelease (hMA_CLOSE_F_EURGBP);
   
   IndicatorRelease (hMA_OPEN_S_EURJPY); IndicatorRelease (hMA_HIGH_S_EURJPY); IndicatorRelease (hMA_LOW_S_EURJPY); IndicatorRelease (hMA_CLOSE_S_EURJPY);
   IndicatorRelease (hMA_OPEN_F_EURJPY); IndicatorRelease (hMA_HIGH_F_EURJPY); IndicatorRelease (hMA_LOW_F_EURJPY); IndicatorRelease (hMA_CLOSE_F_EURJPY);
   
   IndicatorRelease (hMA_OPEN_S_USDJPY); IndicatorRelease (hMA_HIGH_S_USDJPY); IndicatorRelease (hMA_LOW_S_USDJPY); IndicatorRelease (hMA_CLOSE_S_USDJPY);
   IndicatorRelease (hMA_OPEN_F_USDJPY); IndicatorRelease (hMA_HIGH_F_USDJPY); IndicatorRelease (hMA_LOW_F_USDJPY); IndicatorRelease (hMA_CLOSE_F_USDJPY);
   
   IndicatorRelease (hMA_OPEN_S_GBPJPY); IndicatorRelease (hMA_HIGH_S_GBPJPY); IndicatorRelease (hMA_LOW_S_GBPJPY); IndicatorRelease (hMA_CLOSE_S_GBPJPY);
   IndicatorRelease (hMA_OPEN_F_GBPJPY); IndicatorRelease (hMA_HIGH_F_GBPJPY); IndicatorRelease (hMA_LOW_F_GBPJPY); IndicatorRelease (hMA_CLOSE_F_GBPJPY);   
   
  }
 

¡Chicos, parece que se está dibujando algo! :-)

Hice girar la rueda del ratón hasta el principio de la historia y al principio de la historia desde 71 parece dibujar las primeras 1000 barras (más allá - silencio), como está escrito en el código de arriba. Cómo puedo dibujar el indicador en toda la extensión del historial del instrumento para poder probar el EA usando este indicador. Gracias.


He hecho algunos cambios, no se dibuja.

Por favor, mira el trailer:

Archivos adjuntos:
Complex2.mq5  23 kb
 
R0MAN:

¡Chicos, parece que se está dibujando algo! :-)

Hice girar la rueda del ratón hasta el principio de la historia y al principio de la historia desde 71 parece dibujar las primeras 1000 barras (más allá - silencio), como está escrito en el código de arriba. Cómo puedo dibujar el indicador en toda la extensión del historial del instrumento para poder probar el EA utilizando este indicador. Gracias.


ArraySetAsSeries put
 
sergeev:
ArraySetAsSeries put

Set. ver trailer...

Archivos adjuntos:
Complex2.mq5  23 kb
 
R0MAN:

Lo hice. Ver trailer...


Tengo que hacer lo mismo en todas las matrices usadas que llegan a OnCalcul

Su código da un error

no se puede cargar el indicador'Media Móvil' [4302]


No he encontrado dicho indicador en el paquete del terminal

 

Ayuda para cambiar de mql4 a mql5 Aquí está el indicador Bubbles&Drops.mq4MathRound((Open[length]-Close[length])*divider);

 

la gente tiene la manía de poner orden en la página abiertamente.

Tienes que girar la rueda hasta el final.


Quien quiera descargarlo y mirarlo de todos modos, y quien no lo necesite, no le importa el código abierto del puesto.

Razón de la queja: