Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 16

 
Andrey Dik:
Puoi fare in modo che il comando"Apri grafico" nella scheda "Backtest" aggiunga automaticamente tutti gli indicatori che sono stati utilizzati nell'EA con i parametri appropriati al grafico aperto dopo il test?

Non ancora.

Per ora potete salvare il modello di test visivo e applicarlo nel terminale del cliente

 
Slawa:

Non ancora.

Per ora puoi salvare un modello di test visivo e applicarlo nel terminale del cliente

E se si fa quanto segue nell'EA in OnDeinit

ChartSaveTemplate ()


con il nome tester.tpl poi dopo aver aperto il grafico usando il comando"Open Chart" otterrete quello che vi serve?

 
Andrey Dik:

E se nell'Expert Advisor in OnDeinit fate

ChartSaveTemplate ()


con il nome tester.tpl, otterrete quello che vi serve dopo aver aperto il grafico con il comando"Open Chart"?

No. ChartSaveTemplate salverà il modello nella cartella locale Files dell'agente tester

Intendevo dire di salvare manualmente il modello dal renderer tramite il menu principale.

Tester.tpl funziona solo in un modo: dal terminale client al visualizzatore

 
Slawa:

No. ChartSaveTemplate salverà il modello nella cartella locale Files dell'agente tester

Intendevo dire di salvare manualmente il modello dal visualizzatore attraverso il menu principale.

Tester.tpl funziona solo in un modo: dal terminale client al visualizzatore

No, è troppo lento, è troppo lavoro, e spesso è troppo costoso fare ogni test visivo solo per salvare il modello, specialmente quando lo si deve fare spesso...

Significa che dovrebbe essere possibile aprire un grafico dopo il test con gli indicatori.

SZY. Nel tester non funziona:

//——————————————————————————————————————————————————————————————————————————————
void OnDeinit (const int reason)
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
    
  EventKillTimer ();
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double OnTester ()
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
  return (-DBL_MAX);
}
//——————————————————————————————————————————————————————————————————————————————

risultato:

2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnTester: Template NON salvato
2017.03.07 12:22:15.422 Core 1 saldo finale 1129.18 USD
2017.03.07 12:22:15.422 Core 1 OnTester risultato -1.797693134862316e+308
2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnDeinit: Template NON salvato

 
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

Il colore dell'indicatore non può essere impostato in questo modo.

Allora perché alcune persone dicono "non è un bug, è una caratteristica"?

Tuttavia, la risposta ufficiale mi ha soddisfatto completamente:

Penseremo a come cambiare il colore e lo stile dell'indicatore dal programma MQL5.

Nel frattempo, usate le variabili di input del tipo colore per impostare il colore dell'indicatore

 
Roffild:
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

Il colore dell'indicatore non può essere impostato in questo modo.

Allora perché alcune persone dicono "non è un bug, è una caratteristica"?

Tuttavia, la risposta ufficiale è completamente soddisfacente per me:

Perché non è possibile impostare le proprietà di visualizzazione (parte del disegno) attraverso la maniglia dell'indicatore (parte del calcolo). Un bug è quando qualcosa è scritto in un modo e funziona in un altro modo.

Qui è necessario un approccio diverso. Accesso all'indicatore per nome breve, come nel gruppo di funzioni ChartIndicatorXXX. Qualcosa come ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)

Ci abbiamo già pensato, ma non l'abbiamo ancora fatto.

 

Perché avete bisogno di impostare qualcosa attraverso una maniglia? Il colore è impostato nell'indicatore stesso attraverso la proprietà PLOT_LINE_COLOR.

L'indicatore_coloreN imposta solo il colore originale che viene cambiato attraverso PLOT_LINE_COLOR.

indicator_colorN non è diverso dall'input quando un indicatore è chiamato e poi impostato attraverso PLOT_LINE_COLOR.

Non dovreste assolutamente permettere di cambiare tali proprietà tramite l'handle.

Ed è il momento di permettere l'impostazione di indicator_buffers dinamicamente.

 
Roffild:

Perché avete bisogno di impostare qualcosa attraverso una maniglia? Il colore è impostato nell'indicatore stesso attraverso la proprietà PLOT_LINE_COLOR.

L'indicatore_coloreN imposta solo il colore originale che viene cambiato attraverso PLOT_LINE_COLOR.

indicator_colorN non è diverso dall'input quando un indicatore è chiamato e poi impostato attraverso PLOT_LINE_COLOR.

Tali proprietà non possono assolutamente essere cambiate tramite l'handle.

Ed è il momento di permettere l'impostazione di indicator_buffers dinamicamente.

Non menzionare la maniglia. Mi sono detto che la maniglia non può essere usata per impostare le proprietà del disegno. E ho spiegato il perché.

Non dimenticate che oltre agli indicatori personalizzati ci sono anche indicatori incorporati, che devono anche cambiare colore dopo averli aggiunti al grafico.

 

Suggerisco solo di estendere le funzioni della chiamata dell'indicatore:

iCustom(... inputs, PRICE_CLOSE,
         [color color1, int width1, int style1]... );

iAlligator(... params, PRICE_CLOSE,
         [color color1, int width1, int style1]... );
Non c'è bisogno di aggiungere altro.
 
Roffild:

Suggerisco solo di estendere le funzioni della chiamata dell'indicatore:

Ehm, perché quando non si può vedere comunque?
Motivazione: