Errori, bug, domande - pagina 1396

 
Ilya Malev:
Ho fatto MathRand nell'esempio solo per dimostrare come funziona la scala. Nell'originale c'era il calcolo dei livelli numerici usando la metodologia di qualche autore di trader. All'inizio volevamo farli da 1 a 5, ma anche MT4 non è riuscito a raggiungere la scala adeguata anche con tali valori nel buffer con DRAW_NONE. Dopo averli resi negativi e aver fissato il minimo a 0, il problema è stato risolto. Durante il porting dell'indicatore su MT5 sembrava che anche questa soluzione non avrebbe funzionato. Ho dovuto moltiplicare per Punto come ha detto Voldemar.

A proposito, mi sono completamente dimenticato. ))

Prova così:

   SetIndexBuffer(0,buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer2,INDICATOR_CALCULATIONS);

CALCOLI_INDICATORI >>>.

 
Karputov Vladimir:
Il tuo esempio è storto e non vuoi aggiustarlo. Lo controllerò quando lo sistemerete.

Lo sistemerei se fosse un codice per un uso reale. Ma questo codice è stato creato solo per dimostrare il problema, cosa che ha fatto con successo. È una perdita di tempo pulirla, perché non influenzerà il risultato.

 
Anatoli Kazharski:

A proposito, mi sono completamente dimenticato. ))

Prova così:

Provato sia con indicator_plots=1 che conINDICATOR_CALCULATIONS

la seconda lettura del buffer scompare dalla finestra dei dati indipendentemente da PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);

 
Anatoli Kazharski:

Puoi provare a segnalare l'errore a servicedesk e aspettare una risposta lì.

L'ho fatto. Se rispondono, vi farò sapere). Dubito però che sia un errore. È così che lo scoprirete.
 
Ilya Malev:

Provato entrambi con indicator_plots=1 eINDICATOR_CALCULATIONS

le letture del secondo buffer scompaiono dalla finestra dei dati, indipendentemente dalla specificazione di PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);

Ma il problema del ridimensionamento è risolto in questo modo. Quindi, è possibile creare una richiesta a servicedesk, che aggiunge solo la capacità di visualizzare tali buffer nella finestra dei dati.

E si può anche provare a fare così:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,      // идентификатор события
                  const long   &lparam, // параметр события типа long
                  const double &dparam, // параметр события типа double
                  const string &sparam) // параметр события типа string
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      int      subwin =WRONG_VALUE; // Номер окна, в котором находится курсор
      datetime time   =NULL;        // Время соответствующее координате X
      double   level  =0.0;         // Уровень (цена) соответствующий координате Y
      //---
      if(ChartXYToTimePrice(0,(int)lparam,int(dparam),subwin,time,level))
        {
         int bars_total=Bars(Symbol(),Period(),time,TimeCurrent());
         //---
         Comment("x: ",lparam,"; y: ",(int)dparam,"; subwin: ",subwin,"; time: ",time,"; level: ",level,"\n",
                 "indicator value: ",buffer2[bars_total]);
        }
     }
  }

//---

In OnInit() dovete aggiungere:

void OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
  }
 
Anatoli Kazharski:

Quindi puoi creare una richiesta a servicedesk per aggiungere semplicemente la capacità di visualizzare tali buffer nella finestra dei dati.

Ho appena descritto il problema, la logica dei valori del buffer DRAW_NONE è per definizione diversa dalla logica dei valori renderizzati, non sono valori grafici, e quindi scalare con loro in mente non è logico. Come vogliono risolvere il problema, o se vogliono lasciarlo così com'è, non sono affari miei.

 
Ilya Malev:

Ho appena descritto il problema, la logica dei valori del buffer DRAW_NONE è per definizione diversa dalla logica dei valori renderizzati, non sono valori grafici e quindi scalare con loro in mente non è logico. E come vogliono risolvere questo problema o vogliono lasciarlo così com'è non sono affari miei.

L'opzione del post precedente non è appropriata? Nel caso in cui tutto sia lasciato com'è. )

File:
Test.mq5  4 kb
 
Anatoli Kazharski:

L'opzione del post precedente non è appropriata? Nel caso in cui tutto rimanga così com'è. )

Naturalmente grazie per il consiglio, se volessi inventare una specie di stampella mi inventerei qualcosa anch'io, ma prima di tutto siamo a nostro agio a guardare i valori nella finestra dei dati. In secondo luogo, dovremmo usare questo valore del buffer dell'indicatore in altri indicatori ed Expert Advisors, e qualcosa mi dice che se facciamo un buffer per i calcoli, sarà impossibile ottenere i suoi valori attraverso iCustom.

Di conseguenza, abbiamo risolto il problema moltiplicando il secondo valore del buffer per Point

 
Ilya Malev:

Ho appena descritto il problema, la logica dei valori del buffer DRAW_NONE è per definizione diversa dalla logica dei valori renderizzati, non sono valori grafici e quindi scalare con loro in mente non è logico. Come vogliono risolvere questo problema, o se vogliono lasciarlo così com'è, non sono affari miei.

Tutto dipende da dove volete che i valori siano visualizzati. Se si imposta la visualizzazione in una finestra separata, non importa se i valori del buffer calcolati non sono visibili. Tutti i valori cadranno comunque in questa finestra. Di conseguenza, la bilancia può rompersi.

Non è logico - sono d'accordo, ma è improbabile che venga risolto.

 
Ilya Malev:

Naturalmente grazie per il consiglio, se volessi fare qualche stampella, penserei anch'io a qualcosa, ma prima di tutto siamo comodi a guardare i valori nella finestra dei dati. E in secondo luogo, abbiamo bisogno di utilizzare questo valore del buffer dell'indicatore in altri indicatori ed Expert Advisors, e qualcosa mi dice che se facciamo un buffer per i calcoli, sarà impossibile ottenere i suoi valori attraverso iCustom.

Provate, è possibile ottenere i valori dal buffer dei colori. Quindi, è possibile farlo uscire anche dal buffer di calcolo. Dopo tutto, ha un indice, cioè è teoricamente possibile riferirsi ad esso.