Библиотеки: Symbol - страница 11

 

Вызов

CLONE(SYMBOL_FORMULA)

вызывает сомнения. Обычно кастом-символы на MQL5 сами рассчитывают бары и тики, а перенос формулы делает невозможным управлять новым символом. Идея (фича-реквест) - в построении кастом-символа от синтетика с формулой.

Сейчас закомментировал это клонирование, но хотя формула теперь не видна в свойствах, полученный кастом-символ как-будто все равно клонирует синтетические бары в каком-то искореженном виде. Пока не понимаю, что происходит.

ЗЫ. Убрал свою программу-генератор, а сгенерированный ею кастом-символ продолжает обновляться по тикам синхронно с синтетиком, на основании которого он был создан. Полтергейст. Налицо глюк терминала.

 
Stanislav Korotky #:

Вызов вызывает сомнения. Обычно кастом-символы на MQL5 сами рассчитывают бары и тики, а перенос формулы делает невозможным управлять новым символом. Идея (фича-реквест) - в построении кастом-символа от синтетика с формулой.

Возможно, действительно, не стоит делать полное клонирование.

Сейчас закомментировал это клонирование, но хотя формула теперь не видна в свойствах, полученный кастом-символ как-будто все равно клонирует синтетические бары в каком-то искореженном виде. Пока не понимаю, что происходит.

ЗЫ. Убрал свою программу-генератор, а сгенерированный ею кастом-символ продолжает обновляться по тикам синхронно с синтетиком, на основании которого он был создан. Полтергейст. Налицо глюк терминала.

Там очень много багов, к сожалению.

 

@fxsaber

Бывает после перезапуска терминала тестер перестаёт открывать позиции на кастомном символе.

Либо считает нулевую прибыль.

С чем это может быть связано ?

Файлы:
4y48yl.PNG  32 kb
y4xlvu2.PNG  35 kb
 
 

Посмотрите валюты символа ДО и ПОСЛЕ перезагрузки Терминала...

Мне когда-то пришлось писать Сервис для автоматического восстановления кастомных.

 
fxsaber #:

Посмотрите валюты символа ДО и ПОСЛЕ перезагрузки Терминала...

Мне когда-то пришлось писать Сервис для автоматического восстановления кастомных.

Теперь если даже грохнуть все созданные кастомные символы из терминала и удалить папку с кастомными базами то всё равно создается сбойный кастомный символ.

Кастомный символ создаю таким кодом

// Создание копии символа для ускорения Тестера
#property script_show_inputs

#include <Symbol.mqh>

void OnStart()
{
  const SYMBOL Symb("TESTER_" + _Symbol); // Создали символ

  if (Symb.IsExist()) // Если символ создан
  {
    Symb = _Symbol; // Скопировали с основного символа все свойства и баровую историю (+ тиковую, если кастомный) - клон

    // Сделали валюты символа валютой счета
    Symb.SetProperty(SYMBOL_CURRENCY_PROFIT, AccountInfoString(ACCOUNT_CURRENCY));
    Symb.SetProperty(SYMBOL_CURRENCY_MARGIN, AccountInfoString(ACCOUNT_CURRENCY));

    if (Symb.On()) // Включили в Обзор рынка
      ChartOpen(Symb.Name, PERIOD_CURRENT); // Открыли график нового символа
  }
}

Если ваш сервис решение проблемы - поделитесь пожалуйста

 

Сейчас поставил на новую виртуалку терминал и проблема та же.

Может в крайних билдах чего ?

 

Кажется нашлась проблема-

Если создать символ с именем

EURUSD_1

То всё хорошо

Если создать символ с именем

1_EURUSD

То происходит чЁрти что.

Файлы:
1.PNG  90 kb
2.PNG  91 kb
 
EgorKim #:

Если ваш сервис решение проблемы - поделитесь пожалуйста

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Пользовательские символы. Ошибки, баги, вопросы, предложения.

fxsaber, 2019.09.15 22:30

Решение проблемы автоматического изменения валют кастомного символа после перезагрузки Терминала.

// Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
  return(SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && 
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_BASE, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_MARGIN, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_PROFIT, Currency));
}

void CorrectSymbols( void )
{
  const string Currency = AccountInfoString(ACCOUNT_CURRENCY);
  
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
    CorrectCurrency(SymbolName(i, false), Currency);
    
  return;
}

void OnStart()
{
  CorrectSymbols();
}
 
EgorKim #:

1_EURUSD

То происходит чЁрти что.

Это если у символа маржа расчитывается как на форексе, при других вариантах расчёта маржи пользовательский символ можно обзывать как угодно.