Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 31

 

Per favore consigliatemi, ho fatto un indicatore basato sul movimento di diverse coppie di valute, ma capita che si ricalcoli. Niente di cosmico - si riferisce ai parametri delle candele. Forse, si incasina perché

le candele iniziano ad aprirsi solo al momento del primo tick di una certa candela e se una nuova candela per uno strumento è già iniziata, non si è formata per il secondo. Credo che il problema sia proprio questo.

Sai, forse c'è un modo per farlo calcolare solo quando tutte le nuove candele si sono formate? Forse iTime(symbol1,,1)==iTime(symbol2,,1)?

 

Buon pomeriggio colleghi!

Per favore consigliatemi se la logica del codice è corretta.

Il succo del codice è la formula:

TRIN = (Coppie in crescita/coppie in diminuzione)/ (Volume delle coppie in crescita/coppie in diminuzione)

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

Questo è quello che è venuto fuori:

TRIN

Grazie!

 

Potresti per favore consigliare

1 Expert Advisor può aggiungere fondi al bilancio

2 se il trader ha la % di fondi liberi - come può essere implementato nel tester o funziona così com'è?

 

1. Se per scopi di test, è più facile impostare una buona quantità iniziale e costruire la MM sulla base della giusta quantità.

2. Ai fini dei test non è assolutamente necessario. Lo spread è più importante.

 
splxgf:

1. Se per scopi di test, è più facile impostare una buona quantità iniziale e costruire la MM sulla base della giusta quantità.

2. Ai fini dei test non è assolutamente necessario. Lo spread è più importante.


e 1 e 2 sai come e cosa provo e perché ne ho bisogno? vedi il mio esperto? mi dirai meglio di cosa ho bisogno?

E per uno spuntino, la diffusione non è importante per me, ma lo swap è fondamentale ))))

 
sdm:


e 1 e 2 sai come e cosa provo e perché ne ho bisogno? vedi il mio esperto? mi dici cosa faccio meglio?

e un'altra cosa per un morso, non mi interessa lo spread, ma mi interessa lo swap )))) ci sono diversi tipi di esperti


Oppure sei da questa parte. O non hai imparato a fare domande?
 
sdm:


e 1 e 2 sai come e cosa provo e perché ne ho bisogno? vedi il mio esperto? mi dirai meglio di cosa ho bisogno?

e per uno spuntino, non mi interessa lo spread, ma mi interessa lo scambio ))))


Beh, cosa c'è da sapere, se gli interessi vengono addebitati, è meglio che mi astenga dal commentare... Per quanto riguarda gli swap, i miei ordini sono fluttuanti per un anno e gli swap non mi disturbano affatto.

I tassi d 'interesse hanno il tempo di cambiare in questo periodo o avete tutto programmato con proiezioni per il futuro?

 
Vinin:

Oppure è così. O forse non hai imparato a fare domande.
Queste domande sono retoriche e non sono destinate a tutti, ma solo come parte di un commento e il tuo link è inappropriato.
 
sdm:
Queste domande sono retoriche e non sono destinate a tutti ma come parte di un commento e il tuo link è inappropriato.

Un'altra bravata e sei nella cuccia del cane. Per aver trattato gli altri membri del forum in modo improprio facendo domande lunghe
 
splxgf:


Beh, cosa c'è da sapere, se gli interessi stanno maturando, preferisco astenermi dal commentare... Per quanto riguarda gli swap, ho ordini da un anno, gli swap non mi disturbano affatto.

I tassi d'interesse hanno il tempo di cambiare in questo periodo o avete tutto programmato con proiezioni per il futuro?

Ripeto tutti gli esperti (sistemi) sono diversi, io ho swap mangiato via tutto il mio profitto dopo un anno (su alcuni affari) e ottengo una buona crescita del bilancio con pochi fondi liberi e non importa che tipo di profitto ottengo, non faccio previsioni, cerco di usare tutto quello che ho.
Motivazione: