Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 31

 

Por favor, aconsejadme, he hecho un indicador basado en el movimiento de varios pares de divisas, pero resulta que se recalcula. Nada cósmico - se refiere a los parámetros de las velas. Tal vez, se estropea porque

las velas comienzan a abrirse sólo en el momento del primer tick para una determinada vela y si una nueva vela para un instrumento ya ha comenzado, no se ha formado para el segundo. Creo que aquí es donde radica el problema.

¿Sabe usted, tal vez hay una manera de hacer que se calcule sólo cuando todas las nuevas velas se han formado? Tal vez iTime(símbolo1,,1)==iTime(símbolo2,,1)?

 

¡Buenas tardes colegas!

Por favor, indique si la lógica del código es correcta.

La esencia del código es la fórmula:

TRIN = (Pares que crecen/pares que disminuyen)/ (Volumen de pares que crecen/pares que disminuyen)

double Index[];
double instr_up, instr_dn, vol_dn, vol_up;
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer(0,Index);
   SetIndexStyle(0,DRAW_LINE);   
   string Tf;
   if(Period()==1) Tf="M1";
   if(Period()==5) Tf="M5";
   if(Period()==15) Tf="M15";
   if(Period()==30) Tf="M30";
   if(Period()==60) Tf="H1";
   if(Period()==240) Tf="H4";
   if(Period()==1440) Tf="D1";
   if(Period()==10080) Tf="W1";
   if(Period()==43200) Tf="MN";         
        string short_name="TRIN("+Depth+","+Tf+")";
        IndicatorShortName(short_name);
   IndicatorDigits(0);
   return(0);
}

//---- функция проверки цены закрытия на максимум Доллара США за период Depth
int newh(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);
                
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {

               int j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }       
            }
         else
            {
               j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }             
            }
         return(nh);      
      }

//---- функция проверки цены закрытия на минимум Доллара США за период Depth
int newl(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);      
      
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {
               int j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }       
            }
         else
            {
               j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }             
            }
         return(nl);      
      }
//+------------------------------------------------------------------+
int start()
{
   int limit=Bars-IndicatorCounted();
   for(int i=1; i<limit; i++)
          {       
            if (newh("EURUSD",i) > 0                              //-- Если пара росла, то
             {instr_up=instr_up+1;vol_up+=iVolume("EURUSD",0,i);}   //-- instr_up - увеличиваем на 1 и vol_up - увеличиваем на Volume по этой паре   
           else //if (newl("EURUSD",i) > 0)                         //-- иначе
              {instr_dn=instr_dn+1;vol_dn+=iVolume("EURUSD",0,i);}  //-- instr_dn - увеличиваем на 1 и vol_dn - увеличиваем на Volume по этой паре
              
            if (newh("GBPUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("GBPUSD",0,i);}
           else //if (newl("GBPUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("GBPUSD",0,i);}
            
            if (newh("USDCHF",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCHF",0,i);}
           else //if (newl("USDCHF",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCHF",0,i);}
            
            if (newh("USDJPY",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDJPY",0,i);}
           else if (newl("USDJPY",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDJPY",0,i);}
            
            if (newh("AUDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("AUDUSD",0,i);}
           else //if (newl("AUDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("AUDUSD",0,i);}
            
            if (newh("USDCAD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCAD",0,i);}
           else //if (newl("USDCAD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCAD",0,i);}
            
            if (newh("NZDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("NZDUSD",0,i);}
           else //if (newl("NZDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("NZDUSD",0,i);}   
     
     if (instr_dn == 0)instr_dn=EMPTY;  // -- Если 
     if (vol_dn == 0)vol_dn=EMPTY;      // -- значения
     if (instr_up == 0)instr_up=EMPTY;  // -- нулевые
     if (vol_up == 0)vol_up=EMPTY;
     
     Index[i]=(instr_up/instr_dn)/(vol_up/vol_dn);  // -- TRIN
     
     instr_up=0;instr_dn=0;vol_up=0;vol_dn=0;  // -- Обнуление
     }
     
        return(0);
}

Esto es lo que surgió:

TRIN

Gracias.

 

¿Podría aconsejarnos?

1 El Asesor Experto puede añadir fondos al balance

2 si el comerciante tiene % de fondos libres - ¿cómo se puede implementar esto en el probador o funciona como es?

 

1. Si es para hacer pruebas, es más fácil establecer una buena cantidad inicial y construir el MM en base a la cantidad correcta.

2. Para las pruebas es absolutamente innecesario. El diferencial es más importante.

 
splxgf:

1. Si es para hacer pruebas, es más fácil establecer una buena cantidad inicial y construir el MM en base a la cantidad correcta.

2. Para las pruebas es absolutamente innecesario. El diferencial es más importante.


y 1 y 2 ¿sabes cómo y qué pruebo y por qué lo necesito? ¿ves a mi experto? ¿me vas a decir qué necesito mejor?

Y para una merienda, la extensión no es importante para mí, pero el intercambio es fundamental ))))

 
sdm:


y 1 y 2 ¿sabes cómo y qué pruebo y por qué lo necesito? ¿ves a mi experto? ¿vas a decirme lo que hago mejor?

y una cosa más para picar, no me importa el spread, pero sí el swap )))) hay diferentes expertos


O tú eres así. ¿O no has aprendido a hacer preguntas?
 
sdm:


y 1 y 2 ¿sabes cómo y qué pruebo y por qué lo necesito? ¿ves a mi experto? ¿me vas a decir qué necesito mejor?

y para un aperitivo, no me importa la extensión, pero sí el intercambio ))))


Bueno, qué hay que saber, si se cobran intereses, mejor me abstengo de comentar... En cuanto a los canjes tengo pedidos flotando desde hace un año y los canjes no me molestan en absoluto.

¿Los tipos de interés tienen tiempo de cambiar durante este tiempo o lo tienen todo programado con proyecciones para el futuro?

 
Vinin:

O es de esta manera. O tal vez no has aprendido a hacer preguntas.
Estas preguntas son retóricas y no van dirigidas a todo el mundo, sino sólo como parte de un comentario y su enlace es inapropiado.
 
sdm:
Estas preguntas son retóricas y no van dirigidas a todo el mundo, sino como parte de un comentario y su enlace es inapropiado.

Un truco más y estarás en la caseta del perro. Por tratar indebidamente a otros miembros del foro haciendo preguntas extensas
 
splxgf:


Bueno, qué hay que saber, si los intereses se acumulan, prefiero abstenerme de comentar... En cuanto a los canjes tengo pedidos desde hace un año, los canjes no me molestan en absoluto.

¿Los tipos de interés tienen tiempo para cambiar durante este tiempo o lo tienen todo programado con proyecciones para el futuro?

Repito todos los expertos (sistemas) son diferentes, yo me he comido todo mi beneficio después de un año (en algunas operaciones) y consigo un buen crecimiento del saldo con pocos fondos libres y no importa el beneficio que obtenga, no hago predicciones, intento utilizar todo lo que tengo.