Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1140

 
Artyom Trishkin:

Ho mostrato sopra cosa fare. Perché fare tanti problemi quando c'è un metodo raccomandato dagli sviluppatori?

Si trattava di selezionare su quali timeframes visualizzare l'oggetto e su quali no?

Diciamo che c'è un pannello di trading sul grafico. Poi costruisco manualmente gli oggetti (livelli di scambio, linee verticali, rettangoli).

Tutto ciò che costruisco manualmente sarà applicato al pannello di trading. Tutti gli oggetti sono sullo stesso orizzonte temporale.

E come aiuta il "metodo raccomandato dagli sviluppatori" in questo caso?

 
Aliaksei Karalkou:
Salve.

Voglio trasferire l'indicatore ATP al grafico dei prezzi. Ma non so come fare. Voglio che mostri il movimento massimo di volatilità dalla linea mediana dello stesso periodo. Se qualcuno ha il codice, grazie per la condivisione.

https://www.mql5.com/ru/code/23304

Multi_ATR_Bands
Multi_ATR_Bands
  • www.mql5.com
Индикатор Three ATR Bands with multiple selection
 
Artyom Trishkin:

Proprietà OBJPROP_TIMEFRAMES:

OBJ_NO_PERIODS - non visibile su tutti i periodi,

OBJ_ALL_PERIODS - visibile su tutti i periodi

Grazie.

Il metodo ha davvero funzionato ed è molto compatto.

L'oggetto ora rimane visivamente al di sopra di tutti gli altri.

 
Maksym Mudrakov:

Si trattava di scegliere su quali timeframes visualizzare l'oggetto e su quali no?

Diciamo che c'è un pannello di trading sul grafico. Poi costruisco manualmente gli oggetti (livelli di scambio, linee verticali, rettangoli).

Tutto ciò che costruisco manualmente sarà applicato al pannello di trading. Tutti gli oggetti sono sullo stesso orizzonte temporale.

E come aiuta il "metodo raccomandato dagli sviluppatori" in questo caso?

Ho preso nota del tuo suggerimento, ma avevo uno sfarfallio quando cancellavo e ridisegnavo un oggetto.

Il metodo suggeritoda Artyom Trishkin funziona davvero!

Ora non c'è nessun ridisegno e sfarfallio dell'oggetto e rimane visivamente al di sopra di tutto.

A proposito, nel mio caso si trattava anche di un pannello di trading che era bloccato da frecce di compravendite aperte e chiuse.

Come ho risolto il problema:

// Глобальное объявление
int last_tick_objects = 0;                // количество объектов на прошлом тике
// имена графических объектов:
string tp_rctngl = "TP Rectangle";
string sl_rctngl = "SL Rectangle";
string vol_rctngl = "Volume Rectangle";

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   long cid = ChartID();
   if(ObjectsTotal() != last_tick_objects)  // количество объектов поменялось
     {
      last_tick_objects = ObjectsTotal();   // запоминаем новое количество объектов
      // выводим на передний план объекты: tp_rctngl, sl_rctngl, vol_rctngl
      if(ObjectFind(cid, tp_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, sl_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, vol_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS); // делаем невидимым на всех таймах
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);// делаем видимым на всех таймах
        }
      ChartRedraw(cid);// перерисовка графика для применения изменений
     }
  }
//+------------------------------------------------------------------+
 

Sto scrivendo un EA che di tanto in tanto ha bisogno di eseguire diversi cicli lunghi di diversi ricalcoli (ad esempio ogni 12, 24, 48 ore). Ogni ricalcolo richiede 1,5-2 ore su un core (cioè in un thread) - e naturalmente questo ferma l'elaborazione di nuovi tick e il trading con questo EA

... Tali calcoli possono essere delegati a un altro EA in un altro thread e i dati finali possono essere trasferiti tra gli EA usandola funzione EventChartCustom e il gestore di eventi OnChartEvent


Ma ho bisogno di essere in grado di pubblicare l'EA nel mercato - quindi delegare i ricalcoli e i calcoli nello stesso thread non è adatto. C'è un analogo della libreria thread di C++ o qualche altra versione per implementare un EA così specifico in MQL5? (Ho inserito la parola "thread" con il filtro "documentation" nel motore di ricerca del sito e non c'è niente).

 
Oleg Remizov:

Ho preso nota del tuo suggerimento, ma ho avuto uno sfarfallio quando cancellavo e ridisegnavo un oggetto.

Il metodo suggeritoda Artyom Trishkin funziona davvero!

Ora non c'è nessun ridisegno e sfarfallio dell'oggetto e rimane visivamente al di sopra di tutto.

A proposito, nel mio caso si tratta anche di un pannello di trading, che è stato bloccato dalle frecce dei trade aperti e chiusi.

Come ho risolto il problema:

Il punto è che lo sfarfallio è dovuto al fatto che la cancellazione e il rendering avvengono molto spesso, basta catturare la comparsa di nuovi oggetti. Se il metodo funziona, ovviamente lo prenderò anche io, ma dato che la documentazione non menziona una proprietà così utile, non ci ho mai fatto caso.

Anche se la questione rimane se si utilizza il proprio pannello di trading in combinazione con un indicatore di terze parti che costruisce anche oggetti.

 
Maksym Mudrakov:

Si trattava di scegliere su quali timeframes visualizzare l'oggetto e su quali no?

Diciamo che c'è un pannello di trading sul grafico. Poi costruisco manualmente gli oggetti (livelli di scambio, linee verticali, rettangoli).

Tutto ciò che costruisco manualmente sarà applicato al pannello di trading. Tutti gli oggetti sono sulla stessa linea temporale.

E come aiuta il "metodo raccomandato dagli sviluppatori" in questo caso?

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei neofiti su MQL4 e MQL5, aiuto e discussione su algoritmi e codici

Oleg Remizov, 2020.04.26 14:44

Grazie.

Il metodo si è davvero dimostrato efficace e molto compatto.

Ora l'oggetto è visivamente più alto di tutti gli altri.


 
Maksym Mudrakov:

Il punto è che lo sfarfallio è dovuto al fatto che la cancellazione e il rendering avvengono molto spesso, basta catturare la comparsa di nuovi oggetti. Se il metodo funziona, ovviamente lo adotterò anch'io, ma dato che la documentazione non menziona una proprietà così utile, non ci ho mai fatto caso.

Anche se la questione rimane se si utilizza il proprio pannello di trading in combinazione con un indicatore di terze parti che costruisce anche oggetti.

Il metodo raccomandato da Slava era l'unico accettabile. Puoi cercare i suoi post - è nel suo profilo - pubblicazioni/tutti i post.

E, sì, come aiuta il tuo metodo di ricreare tutti gli oggetti nella stessa situazione?

 
Artyom Trishkin:

Slava ha raccomandato il metodo come l'unico più adatto. Puoi cercare i suoi post - è nel suo profilo - pubblicazioni/tutti i post.

E, sì, come aiuterebbe il tuo metodo di ricreare tutti gli oggetti nella stessa situazione?

Io farei quanto segue, con un indicatore di terze parti è necessario tracciare ObjectsTotal(), e se l'indice più grande del mio oggetto pannello è inferiore a ObjectsTotal()-1, allora ricreare il pannello. Ho bisogno di provare prima il tuo metodo in tutti i tipi di situazioni, ma finora non vedo più libertà nell'uso di Objects Visibility.
 
Artyom Trishkin:

Non posso costruire Meta Trader 5