Errori, bug, domande - pagina 378

 

Perché l'espressione "if(ichi.TenkanSen(i)< ichi.KijunSen(i))" SEMPRE (su tutte le candele) restituisce falso, anche quando "if(ichi.TenkanSen(i)> ichi.KijunSen(i))"? Sembra un difetto della libreria standard. Il codice completo è nel file.

Comment(DoubleToString(ichi.TenkanSen(0),5));

Su euro-dollaro esce

File:
Ich_1.mq5  3 kb
 
Graff:

Perché l'espressione "if(ichi.TenkanSen(i)< ichi.KijunSen(i))" SEMPRE (su tutte le candele) restituisce falso, anche quando "if(ichi.TenkanSen(i)> ichi.KijunSen(i))"? Sembra un difetto della libreria standard. Codice completo nel file

Primo, TerminalInfoInteger(TERMINAL_MAXBARS) - non puoi farlo.

sostituire con tassi_totale


In secondo luogo, sì, c'è un errore che m_data_totale tutto il tempo =0. Perciò non abbiamo valori.

 
sergeev:

in primo luogo TerminalInfoInteger(TERMINAL_MAXBARS) - non potete farlo.

sostituire con tassi_totale

L'ho sostituito con for(int i=0; i<=rates_total-1; i++) in sostanza, non è cambiato nulla.
 
In secondo luogo, sì, c'è un errore, m_data_total =0 per tutto il tempo. Ecco perché non ci sono valori.
 
sergeev:

In secondo luogo, sì, c'è un errore, m_data_total =0 per tutto il tempo. Perciò non ci sono valori.
Ho provato a cambiare i valori in Comment(DoubleToString(ichi.TenkanSen(3),5)); su 1,2,3 in Comment è costantemente lo stesso. Forse richiedere quel tweak per farlo funzionare, e la correzione ufficiale non aspettare nessuna opportunità.
 
Graff:
Ho provato a cambiare i valori in Comment(DoubleToString(ichi.TenkanSen(3),5)); a 1,2,3 in Comment visualizza costantemente la stessa cosa. Puoi suggerire quel tweak per farlo funzionare, poi il fix ufficiale aspetta che non ci sia occasione.
Non usare questa classe. Prendete la solita maniglia.
 
sergeev:
Non usare questa classe. Prendete la maniglia normale.

Non sei molto a tuo agio nell'usarlo...

OK, grazie per l'attenzione, in attesa della correzione.

 
Graff:

Non è molto comodo da usare...

OK, grazie per l'attenzione, in attesa della correzione.

non pensi che sia comodo? :)

int ich;

//+------------------------------------------------------------------+
int OnInit()
  {
   ich=iIchimoku(_Symbol,_Period, TenkanSen, KijunSen, SenkoSpan);
   return(0);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    IndicatorRelease(ich);
  }
//+------------------------------------------------------------------+
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 ten[]; CopyBuffer(ich, 0, 0, rates_total, ten);
   double kij[]; CopyBuffer(ich, 1, 0, rates_total, kij);
   for(int i=0; i<rates_total; i++)
     {
      if(ten[i]<kij[i]) { up.Create(0,"Tenkan>Kijun"+IntegerToString(i),0,time[i],low[i]); up.Color(clrLimeGreen); }
      else { down.Create(0,"Tenkan<Kijun"+IntegerToString(i),0,time[i],high[i]); down.Color(clrTomato); }
     }
   return(rates_total);
  }
 
sergeev:

non è comodo? :)


Non sono un programmatore e non sono molto a mio agio con questa disposizione.

Ha senso cambiare

CopyBuffer(ich, 1, 0, rates_total, kij);

Sostituire rates_total con BarsCalculated(ich)?

PS: E da quale città vieni, se non da un segreto?

 
Graff:


OK, grazie per l'attenzione, in attesa della correzione.

A proposito, sei sicuro di non aver bisogno di chiamare qualche funzione aggiuntiva?

La libreria ha sia Refresh che BufferResize. Mi sembra che siano necessari per un funzionamento normale.