Simboli personalizzati. Errori, bug, domande, suggerimenti. - pagina 2

 
fxsaber:
I simboli personalizzati sul reale sono solo a scopo informativo, non per il trading. Possono essere usati solo per il commercio nel tester.

Isimboli personalizzati su real possono essere utilizzati come indicatore di apertura o chiusura su strumenti reali.

 
Aidas Geguzis:

I simboli personalizzati possono essere utilizzati come indicatore di apertura o chiusura su strumenti reali.

Tu efxsaber :grazie, e non una parola su questo nella documentazione. La ragione di questo, come sempre, è che le informazioni dovrebbero essere raccolte sul forum e tramite il passaparola. Quando ho guardato il disegno ho pensato che avessero implementato una sorta di raddoppio o di trading n-tool per mezzo del terminale e mi sono anche chiesto come avessero fissato la molteplicità dei lotti. Ora capisco che probabilmente è inutile per me.

 

Bug 05.

Bug CustomTicksAdd.

template <typename T>
T MyPrint( const T Value, const string Str, const bool DebugFlag = false ) { Print(Str + " = " + (string)Value); return(Value); }
#define _P(A) MyPrint(A, __FUNCSIG__ ", Line = " + (string)__LINE__ + ": " + #A)                    // Макрос для удобного и наглядного вывода значений

void OnStart()
{
  const string Name = "TEMP9";                                                                      // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                                 // Имя оригинального символа

  MqlTick Ticks[];
  const int Size = _P(CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)D'2019.01.01' * 1000)); // Считали EURUSD-тики за 2019 год.
    
  if ((Size > 0) && _P(CustomSymbolCreate(Name, NULL, SymbOrig)) && _P(SymbolSelect(Name, true)))   // Создали символ на основе EURUSD.
  {            
    _P(CustomTicksAdd(Name, Ticks));                                                                // Поместили в него историю EURUSD через CustomTicksAdd
  
    MqlTick AddTicks[1];
    AddTicks[0] = Ticks[Size - 1];                                                                  // Взяли последний тик
       
    AddTicks[0].time += 3600;                                                                       // И к его времени добавили час
    AddTicks[0].time_msc = (long)AddTicks[0].time * 1000;                                           
    
    _P(CustomTicksDelete(Name, (ulong)D'2019.02.01 00:00' * 1000, LONG_MAX));                       // Удалили все тики, оставив только данные за январь 2019.
    _P(CopyTicksRange(Name, Ticks));                                                                // Посмотрели, сколько тиков осталось.
    
    _P(CustomTicksAdd(Name, AddTicks));                                                             // Пробросили один тик.
    
    _P(CopyTicksRange(Name, Ticks));                                                                // Увидели, что добавился не один тик, а 129.
    _P(CustomTicksDelete(Name, (ulong)D'2019.02.01 00:00' * 1000, LONG_MAX));                       // Делаем повторное удаление - да, 129!

    _P(SymbolSelect(Name, false));                                                                  // Удалили символ из Обзора рынка.
    _P(CustomSymbolDelete(Name));                                                                   // Удалили символ.         
  }
}


Risultato

void OnStart(), Line = 11: CopyTicksRange(SymbOrig,Ticks,COPY_TICKS_ALL,(long)D'2019.01.01'*1000) = 3316638
void OnStart(), Line = 13: CustomSymbolCreate(Name,NULL,SymbOrig) = true
void OnStart(), Line = 13: SymbolSelect(Name,true) = true
void OnStart(), Line = 15: CustomTicksAdd(Name,Ticks) = 3316638
void OnStart(), Line = 23: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 1158959
void OnStart(), Line = 24: CopyTicksRange(Name,Ticks) = 2157552
void OnStart(), Line = 26: CustomTicksAdd(Name,AddTicks) = 1
void OnStart(), Line = 28: CopyTicksRange(Name,Ticks) = 2157681
void OnStart(), Line = 29: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 129
void OnStart(), Line = 31: SymbolSelect(Name,false) = true
void OnStart(), Line = 32: CustomSymbolDelete(Name) = true


Vengono aggiunte più zecche di quelle specificate.

 

Qualcosa sui sintetici sta mangiando la memoria e rallentando l 'avvio del terminale. Ho fatto due sintetici ieri, ho aperto una tabella per ognuno di loro. Oggi il terminale è partito tre minuti(!!!), il consumo di RAM da Task Manager era di 1,88 Gb. Rimosso questi grafici, nascosto i sintetici, avvio 20 sec. come prima, consumo RAM 490 MB. Bild 2006, Max bar in finestra - Illimitato.

Sul primo sintetico aveva formula da aiuto:

1

Sul secondo una semplice formula:

0,5 * (chiedere(EURUSD) + chiedere(USDCAD))

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 
Alexey Volchanskiy:

Qualcosa sui sintetici sta mangiando la memoria e rallentando l 'avvio del terminale. Ho fatto due sintetici ieri, ho aperto un grafico per ognuno di loro. Oggi il terminale è partito tre minuti(!!!), il consumo di RAM da Task Manager era di 1,88 Gb. Rimosso questi grafici, nascosto i sintetici, avvio 20 sec. come prima, consumo RAM 490 MB. Bild 2006, Max bar in finestra - Illimitato.

Sul primo sintetico aveva formula da aiuto:

Sul secondo una semplice formula:

0,5 * (chiedere(EURUSD) + chiedere(USDCAD))

Quando è in esecuzione sintetica, mangia un sacco di risorse del disco SSD. Se il disco SSD è lento, l'avvio del terminale può richiedere 10 minuti se ci sono diversi sintetici.

Non parlo nemmeno dell'uso di HDD per il terminale con i sintetici.

Quando ho messo il disco veloce (Samsung 970 Pro) tutti i problemi con l'avvio del terminale e le sintesi si sono fermati.

La RAM è di circa 12 Gb all'avvio del terminale, viene utilizzato un processore i7-6700K.

 
fxsaber:

Bug 05.

Bug CustomTicksAdd.

Vengono aggiunte più zecche di quelle specificate.

2007 - è andata ancora peggio. CustomTicksAdd aggiunge 63969 tick invece di uno.

void OnStart(), Line = 24: CopyTicksRange(Name,Ticks) = 2157552
void OnStart(), Line = 26: CustomTicksAdd(Name,AddTicks) = 1
void OnStart(), Line = 28: CopyTicksRange(Name,Ticks) = 2221521
void OnStart(), Line = 29: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 63969


SZY 2007 - tutti i bug sono reali.

 
fxsaber:

Bug 02.

anche ChartRedraw non dà un effetto visivo.

Solo se si fa scorrere il grafico con il mouse, torna normale. Potresti sistemare la visualizzazione di ChartRedraw?

Consiglia un modo per aggiornare il grafico dopo CustomRatesUpdate, in modo che disegni forzatamente le barre aggiornate, e non solo quando decide di farlo da solo.

 
Per qualche ragione, un simbolo personalizzato può essere rimosso dal Market Watch anche quando il suo grafico è aperto.
 

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

Nuova versione di MetaTrader 5 build 2007: Calendario economico, servizi MQL5 e API per R

fxsaber, 2019.02.22 12:40

È corretto che dopo RatesUpdate in OnCalculate resetta sempre prev_calculated a zero?

Dopo tutto, se aggiorno una nuova barra, per esempio, non ho bisogno di ricalcolare l'intero indicatore.

 

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

Nuova versione di MetaTrader 5 build 2007: Calendario economico, servizi MQL5 e API per R

fxsaber, 2019.02.22 12:14

Una grande richiesta, se non c'è nessun simbolo, ma ci sono i suoi file tkc, cancellali.

Di fronte a una situazione che anormalmente il terminale si è schiantato.

Entro e vedo che il mio simbolo non c'è. Basta creare un simbolo con lo stesso nome e mostrarlo con la storia di tkc. Sembra un errore.