Symboles personnalisés. Erreurs, bogues, questions, suggestions. - page 2

 
fxsaber:
Les symboles personnalisés sur le réel sont fournis à titre d'information uniquement, et non à des fins commerciales. Ils ne peuvent être utilisés que pour échanger le testeur.

Lessymboles personnalisés sur le réel peuvent être utilisés comme indicateur d'ouverture ou de fermeture sur les instruments réels.

 
Aidas Geguzis:

Les symboles personnalisés peuvent être utilisés comme indicateur d'ouverture ou de fermeture sur des instruments réels.

Vous etfxsaber :merci, et pas un mot à ce sujet dans la documentation. La raison en est, comme toujours, que les informations doivent être recueillies sur le forum et par le bouche à oreille. J'ai pensé qu'ils avaient mis en place une sorte de négociation par paire ou par n-tools au moyen du terminal et j'ai également pensé à la manière dont ils gèrent la multiplicité des lots. Maintenant je vois, c'est probablement inutile pour moi.

 

Bug 05.

Bogue 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));                                                                   // Удалили символ.         
  }
}


Résultat

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


Le nombre de ticks ajoutés est supérieur à celui spécifié.

 

Les synthétiques consomment de la mémoire et ralentissent le démarrage du terminal. J'ai fait deux synthétiques hier, j'ai ouvert un tableau pour chacun d'eux. Aujourd'hui, le terminal a démarré trois minutes ( !!!), la consommation de RAM par le gestionnaire des tâches était de 1,88 Go. J'ai supprimé ces graphiques, caché les synthétiques, démarrage en 20 sec. comme avant, consommation de RAM 490 MB. Bild 2006, Nombre maximum de barres dans la fenêtre - Illimité.

Le premier synthétique avait du lait maternisé de l'aide :

1

Sur le second, une formule simple :

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

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

Les synthétiques consomment de la mémoire et ralentissent le démarrage du terminal. J'ai fait deux synthétiques hier, j'ai ouvert un tableau pour chacun d'eux. Aujourd'hui, le terminal a démarré trois minutes ( !!!), la consommation de RAM par le gestionnaire des tâches était de 1,88 Go. J'ai supprimé ces graphiques, caché les synthétiques, démarrage en 20 sec. comme avant, consommation de RAM 490 MB. Bild 2006, Nombre maximum de barres dans la fenêtre - Illimité.

Le premier synthétique avait du lait maternisé de l'aide :

Sur le second, une formule simple :

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

Lorsqu'il fonctionne en mode synthétique, il consomme beaucoup de ressources du disque SSD. Si le disque SSD est lent, le démarrage du terminal peut prendre 10 minutes s'il y a plusieurs synthétiques.

Je ne parle même pas de l'utilisation du HDD pour le terminal avec les synthétiques.

Quand j'ai mis le disque rapide (Samsung 970 Pro) tous les problèmes avec le démarrage du terminal et les synthèses ont cessé.

La RAM est d'environ 12 Go au démarrage du terminal, le processeur utilisé est un i7-6700K.

 
fxsaber:

Bug 05.

Bogue CustomTicksAdd.

Le nombre de ticks ajoutés est supérieur à celui spécifié.

En 2007, la situation a encore empiré. CustomTicksAdd ajoute 63969 ticks au lieu d'un.

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 - tous les bugs sont réels.

 
fxsaber:

Bug 02.

même ChartRedraw ne donne pas d'effet visuel.

Ce n'est que si vous faites défiler le graphique avec la souris qu'il revient à la normale. Pourriez-vous corriger la visualisation par ChartRedraw ?

Recommandez un moyen de rafraîchir le graphique après CustomRatesUpdate, afin qu'il dessine de manière forcée les barres mises à jour, et pas seulement quand il décide de le faire lui-même.

 
Pour une raison quelconque, un symbole personnalisé peut être supprimé du Market Watch même lorsque son graphique est ouvert.
 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Nouvelle version de MetaTrader 5 build 2007 : calendrier économique, services MQL5 et API pour R

fxsaber, 2019.02.22 12:40

Est-il correct qu'après RatesUpdate dans OnCalculate, il remette toujours prev_calculated à zéro ?

Après tout, si je mets à jour une nouvelle barre, par exemple, je n'ai pas besoin de recalculer l'ensemble de l'indicateur.

 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Nouvelle version de MetaTrader 5 build 2007 : calendrier économique, services MQL5 et API pour R

fxsaber, 2019.02.22 12:14

Une grosse demande, s'il n'y a pas de symbole, mais qu'il y a ses fichiers tkc, supprimez-les.

Face à une situation anormale, le Terminal s'est écrasé.

J'y vais et je vois que mon symbole n'est pas là. Il suffit de créer un symbole avec le même nom et de le montrer avec l'historique de tkc. Ça ressemble à une erreur.

Raison: