Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1356

 
Vladimir Conosco la regola del confronto. Quindi non si può fare senza condizioni aggiuntive?
 
Oleg Kolesov #:
Vladimir, conosco la regola del confronto. Quindi non si può fare senza condizioni?

Quali sono gli extra?


Puoi fare ancora meglio di così, senza paragoni:

      //---------------------------------------------+
      levelcol1[i]=1.0;
      if(level1[i]>level1[i+PeriodSh])
        {
         levelcol1[i]=0.0;
         continue;
        }
      /*if(CompareDoubles(level1[i],level1[i+PeriodSh]))
        {
         levelcol1[i]=1.0;
         continue;
        }*/
      if(level1[i]<level1[i+PeriodSh])
        {
         levelcol1[i]=2.0;
         continue;
        }
     }  //--- Возвращаемое значение prev_calculated для следующего вызова
 
Grazie per il vostro aiuto.
 
Vladimir Karputov #:

Quali sono gli extra?


E si può fare ancora meglio, senza paragoni:

Lo stesso vale se si confronta a parità di condizioni senza normalizzazione.

 
La questione principale rimane irrisolta. Come colorare il buffer con due colori. >= Blu a <= Rosso.
 
Oleg Kolesov #:
La questione principale rimane irrisolta. Come colorare il buffer con due colori. >= Blu a <= Rosso.

E nel caso di uguale, come si fa a sapere se è più o uguale o meno o uguale? Questa è la sfida, no?).

 
Oleg Kolesov #:
Qual è il compito? Loop?ArrayBsearch? ArraySort? In che modo?

Silenzio degli ussari!

Questa è l'apocalisse.

La mente deve essere trattata.

 
Mi prendo una pausa. Grazie.
 

Per favore, aiutatemi a rimuovere un indicatore dalla finestra principale.

Per esempio, si collocano diversi indicatori MA personalizzati, ognuno è chiamato da iCustom(handleMA,...,...).

Così, una dozzina di medie mobili sono visualizzate sul grafico.

Allora questi indicatori devono essere ricalcolati usando un timer.

L'ordine è il seguente: il timer scatta, i vecchi indicatori vengono rimossi, il calcolo e il disegno delle nuove medie mobili hanno luogo.

Ora, il vero problema: le vecchie linee rimangono sul grafico ad ogni nuova iterazione.

Ho provato a rimuoverli in due modi:

Graph_MA[i] = iCustom(_Symbol,Timeframe,"MA", /*параметры индикатора*/);   
for(int i=0; i < kol_Lines; i++) 
     {
      res = IndicatorRelease(Graph_MA[i]);
     }

In questo caso la variabile res è uguale a True ogni volta, ma gli indicatori extra non vengono rimossi dal grafico.

Il secondo modo:

name_MA[i]=StringFormat("MA_Line # %d", i);
IndicatorSetString(INDICATOR_SHORTNAME,name_MA[i]);
res = ChartIndicatorDelete(0, 0, name_MA[i]);

Inutilmente: la res è sempre falsa.

 
qadexys #:

Per favore, aiutatemi a rimuovere un indicatore dalla finestra principale.

Per esempio, si collocano diversi indicatori MA personalizzati, ognuno è chiamato da iCustom(handleMA,...,...).

Così, una dozzina di medie mobili sono visualizzate sul grafico.

Allora questi indicatori devono essere ricalcolati usando un timer.

L'ordine è il seguente: il timer scatta, i vecchi indicatori vengono rimossi, il calcolo e il disegno delle nuove medie mobili hanno luogo.

Ora, il vero problema: le vecchie linee rimangono sul grafico ad ogni nuova iterazione.

Ho provato a rimuoverli in due modi:

In questo caso la variabile res è uguale a True ogni volta, ma gli indicatori extra non vengono rimossi dal grafico.

Il secondo modo:

Inutilmente: la res è sempre falsa.

Queste sono le caratteristiche di IndicatorRelease() - non è la cancellazione di un indicatore, ma la notifica al terminale che l'indicatore non è più necessario. Inoltre il terminale decide da solo quando rimuoverlo. Di solito lo fa dopo alcuni secondi.

Forse ci sono dei trucchi - non lo so. Magari prova a cambiare il grafico.