Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 31

 

J'ai créé un indicateur basé sur le mouvement de plusieurs paires de devises, mais il arrive qu'il se recalcule. Rien de cosmique - il s'agit des paramètres des chandeliers. Peut-être qu'il se plante parce que

les chandeliers ne commencent à s'ouvrir qu'au moment du premier tick pour un certain chandelier et si un nouveau chandelier pour un instrument a déjà commencé, il ne s'est pas formé pour le second. Je pense que c'est là que réside le problème.

Savez-vous s'il existe un moyen de faire en sorte que le calcul ne soit effectué que lorsque toutes les nouvelles bougies se sont formées ? Peut-être que iTime(symbol1,,1)==iTime(symbol2,,1) ?

 

Bonjour, chers collègues !

Veuillez me dire si la logique du code est correcte.

L'essentiel du code est la formule :

TRIN = (paires croissantes/décroissantes)/(Volume de paires croissantes/décroissantes)

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);
}

C'est ce qui est sorti :

TRIN

Merci !

 

Pourriez-vous me conseiller

1 Le conseiller expert peut ajouter des fonds au solde

2 si le trader dispose de % de fonds libres - comment cela peut-il être implémenté dans le testeur ou cela fonctionne-t-il tel quel ?

 

1. Si c'est à des fins de test, il est plus facile de fixer un bon montant initial et de construire le MM sur la base du bon montant.

2. Pour les tests, c'est absolument inutile. L'écart est plus important.

 
splxgf:

1. Si c'est à des fins de test, il est plus facile de fixer un bon montant initial et de construire le MM sur la base du bon montant.

2. Pour les tests, c'est absolument inutile. L'écart est plus important.


et 1 et 2 savez-vous comment et ce que je teste et pourquoi j'en ai besoin ? voyez-vous mon expert ? allez-vous mieux me dire ce dont j'ai besoin ?

Et pour une collation, la tartinade n'est pas importante pour moi, mais l'échange est essentiel )))).

 
sdm:


et 1 et 2 savez-vous comment et ce que je teste et pourquoi j'en ai besoin ? voyez-vous mon expert ? allez-vous me dire ce que je fais le mieux ?

et encore une chose pour une morsure, je ne me soucie pas du spread, mais je me soucie du swap )))) il y a différents types d'experts.


Ou vous êtes comme ça. Ou vous n'avez pas appris à poser des questions ?
 
sdm:


et 1 et 2 savez-vous comment et ce que je teste et pourquoi j'en ai besoin ? voyez-vous mon expert ? allez-vous mieux me dire ce dont j'ai besoin ?

et pour le goûter, je ne me soucie pas de la pâte à tartiner, mais je me soucie de l'échange ))))


Eh bien, qu'y a-t-il à savoir, si des intérêts sont facturés, je ferais mieux de m'abstenir de tout commentaire... En ce qui concerne les échanges, mes commandes sont flottantes pendant un an et les échanges ne me dérangent pas du tout.

Les taux d'intérêt ont-ils le temps de changer pendant cette période ou avez-vous tout prévu avec des projections pour l'avenir ?

 
Vinin:

Ou alors c'est comme ça. Ou peut-être n'avez-vous pas appris à poser des questions.
Ces questions sont rhétoriques et ne s'adressent pas à tout le monde, mais uniquement dans le cadre d'un commentaire et votre lien est inapproprié.
 
sdm:
Ces questions sont rhétoriques et ne sont pas destinées à tout le monde mais dans le cadre d'un commentaire et votre lien est inapproprié.

Une autre cascade et vous êtes dans la niche. Pour avoir traité d'autres membres du forum de manière inappropriée en posant des questions interminables
 
splxgf:


Eh bien, qu'y a-t-il à savoir, si les intérêts s'accumulent, je préfère m'abstenir de tout commentaire... Quant aux échanges, j'ai des commandes depuis un an, les échanges ne me dérangent pas du tout.

Les taux d'intérêt ont-ils le temps de changer pendant cette période ou avez-vous tout prévu avec des projections pour l'avenir ?

Je répète que tous les experts (systèmes) sont différents, j'ai mangé tout mon profit après un an (sur certaines transactions) et j'obtiens une bonne croissance de l'équilibre avec de faibles fonds libres et cela n'a pas d'importance quel type de profit j'obtiens, je ne fais pas de prédictions, j'essaie d'utiliser tout ce que j'ai.