Бета-версия платформы MetaTrader 5 build 1700: Проекты в MetaEditor и синтетические инструменты - страница 24

 
fxsaber:

Вы можете сформировать бары и делать тест по ценам открытия. Там все виды отложек исполняются по своей цене.

Это будет менее точно, чем O-H(bid)-L(ask)-C. Но лучше, чем ничего, спасибо.

 
Andrey Khatimlianskii:

Это будет менее точно, чем O-H(bid)-L(ask)-C. Но лучше, чем ничего, спасибо.

Будет такая же точность.

 
fxsaber:

Будет такая же точность.

Это если ничего внутри бара не делать.

Но в любом случае попробую. Спред писать тот, который был в момент L(ask)?

 
Andrey Khatimlianskii:

Это если ничего внутри бара не делать.

Но в любом случае попробую. Спред писать тот, который был в момент L(ask)?

Под пятерку не пробовал, надо смотреть.

 
В тестере не хватает кнопки "Изменить" (переход на исходник) и снятия этого ограничения

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

По какой цене срабатывает тейкпрофит для ордера на продажу на ММВБ (forts)?

fxsaber, 2017.12.06 13:36

на бэктест за сегодняшние тики стоит специально выставленный запрет. Его можно обойти через касмтоные символы, поэтому сам запрет выглядит не соответствующим текущим возможностям платформы.

 
Реально не хватает
// Возвращает количество тиков в БД Терминала - в имеющихся tkc-файлах
int TicksTotal( const string SymbolName );
 

Первому тику кастомного символа предлагаю иметь флаг 0xFF, иначе такая ерунда

template <typename T>
T MyPrint( const T Value, const string Str )
{
  static const bool IsDebug = MQLInfoInteger(MQL_DEBUG);

//  if (IsDebug)
  {
//    DebugBreak(); // если хочется посмотреть средствами дебага

    Print(Str + " = " + (string)Value);
  }
  
  return(Value);
}

#define _P(A) MyPrint(A, __FUNCSIG__ ", Line = " + (string)__LINE__ + ": " + #A)

void OnStart()
{
  const string Name = "A1234";
  
  CustomSymbolDelete(Name);
  
  if (CustomSymbolCreate(Name))
  {
    MqlTick Ticks[] = {0};
    
    Ticks[0].ask = 2;
    Ticks[0].bid = 1;
    Ticks[0].flags = TICK_FLAG_BID; // | TICK_FLAG_ASK;

    _P(CustomTicksReplace(Name, 0, LONG_MAX, Ticks));
    
    MqlTick Ticks2[];
    
    _P(CopyTicksRange(Name, Ticks2, COPY_TICKS_INFO));
    
    _P(Ticks2[0].ask);
  }    
}


Результат

void OnStart(), Line = 32: CustomTicksReplace(Name,0,LONG_MAX,Ticks) = 1
void OnStart(), Line = 36: CopyTicksRange(Name,Ticks2,COPY_TICKS_INFO) = 1
void OnStart(), Line = 38: Ticks2[0].ask = 0.0
 
1709 - похоже, детские болезни кастомных тиков победили!
 
CustomTicksDelete(Symb, 0, LONG_MAX);

Удаляет значительно больше тиков, чем можно получить через

CopyTicksRange(Symb, Ticks);
 

Писал в СД, получил ответ в духе "ничего не знаем, мы тут ни при чем". Суть проблемы:

Размещаю свой эксперт, генерирующий бары и тики кастом-символа, на таймфрейме M1 рабочего символа. Тики приходят часто и вброс их на кастом-символ фактически совпадает с исходным символом.

Размещаю тот же эксперт на таймфрейме H1 рабочего символа. И тики начинаю заметно пропадать, т.е. OnTick в эксперт приходит гораздо реже и соответственно вброс тиков на кастом-символ совсем не похож на реалтайм: может не тикать по несколько секунд, несмотря на то, что на исходном символе, где стоит эксперт, тики приходят регулярно по несколько за секунду (согласно обзору рынка).

У кого-нибудь наблюдается похожая странность с интенсивностью тиков в зависимости от таймфреймов? Билд 1709.

Причина обращения: