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

 
PapaYozh:

PrezzoDelta = Punto * 30;

Confronto tra numeri reali


Grazie ancora tanto

ps anche se continuo a non capire perché non si possono confrontare i doppi

 

Buona giornata! Ecco quello che non capisco. Ha acceso il tester. Sono passati circa quarantacinque minuti e in realtà più di un'ora, ho spento internet, temporale.

Non riesco a capire se c'è qualcosa o un glitch ???? Sembra che ci sia qualcosa che non va, non oso spegnerlo.

 
sdm:


Grazie mille ancora

ps anche se continuo a non capire perché non si possono confrontare i numeri doppi

Puoi ancora confrontare le costanti, ma non puoi confrontare i numeri dopo averli calcolati. Per esempio, dopo il calcolo, si possono ottenere due numeri identici con valori diversi. Questo non è un paradosso se si considera la precisione impostata in EPSILON.
 
sdm ! Il punto è che il numero può facilmente essere 1000.00001 e 1000.000001, e sono numeri diversi. Nel programma potrebbe essere facilmente, ma non si vede a prima vista. Naturalmente si possono confrontare i numeri in anticipo, ma è meglio essere prudenti.
 
Allora, cosa c'è con il tester, per favore!? Che non ci sono affatto numeri sopra la barra, il solito 3\64668 o altro?
 
Dimka-novitsek:
E il tester, per favore? Che non ci sono affatto numeri sopra la barra, il solito 3\64668 o altro?

Finché il primo passaggio non è completato, non ci saranno numeri. :(

È meglio scrivere sul CD.

 

Grazie!!! Capito.

Cos'è SD?

 
Dimka-novitsek:

Grazie!!! Capito.

Cos'è SD?

"Service Desk"
 

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!

 

È possibile determinare dal codice in quale finestra/sottofinestra è stato creato l'oggetto?