Котировки Срочного рынка в МТ5 - страница 10

 

Коллеги приветствую, давайте подведём итоги по поводу использования COPY_TICKS_ALL или COPY_TICKS_TRADES!!!

Как я понял из прочитаного для более корректного подсчёта дельты лучше всего использовать тики по сделкам, а не все. Правильно?

Какая разница использования того или другого. Какое влияние на результат?

 
Mihail Marchukajtes #:

Коллеги приветствую, давайте подведём итоги по поводу использования COPY_TICKS_ALL или COPY_TICKS_TRADES!!!

Как я понял из прочитаного для более корректного подсчёта дельты лучше всего использовать тики по сделкам, а не все. Правильно?

Какая разница использования того или другого. Какое влияние на результат?

Какую дельту Вы имеете ввиду?

 
Mihail Marchukajtes #:

Коллеги приветствую, давайте подведём итоги по поводу использования COPY_TICKS_ALL или COPY_TICKS_TRADES!!!

Как я понял из прочитаного для более корректного подсчёта дельты лучше всего использовать тики по сделкам, а не все. Правильно?

Какая разница использования того или другого. Какое влияние на результат?

у одного форумчанина видел в профиле ссылку на его скрины, где уже посчитано

толи ошибка у него там в расчетах, толи вообще формула ценообразования не та

не рекламирую, просто картинки посмотрите, как это выглядит

но мне кажется, что цена должна попасть в Ласт с точностью до пункта, т.е. без дельты, если все верно посчитано

биржевики сами говорят, что цену рассчитывают каждую секунду, по кр.мере на МОЕХ

не верю в полезность таких огромных расчетов, хотел как то проверить, так меня по всему стакану прокатили, какой уж тут Ласт...., вообще разочаровался и сбежал с биржи
 
prostotrader #:

Какую дельту Вы имеете ввиду?

Дельту, разницу между количеством покупателей и продавцов конкретного бара.

Приведу кусочек кода где происходит запрос тиков и расчёт дельты и объёма

   Linterest[0]=GlobalVariableGet("LLINTER");

   double delta=0;  
   double vola=0;
   int num= CopyTicksRange(Name_instrFS,tick_array,COPY_TICKS_TRADE,StartDate*1000,Start1Date*1000);
   //Print (num);
   if (num>0){
   long sumVolBuy=0;
   long sumVolSell=0;
       for (int q=0;q<num && !IsStopped();q++)
          { 
if(( tick_array[q].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY && (tick_array[q].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) // Если тик обоих направлений
      Print(__FUNCTION__,": ОШИБКА! Тик '""' неизвестного направления!");
   else if(( tick_array[q].flags&TICK_FLAG_BUY)==TICK_FLAG_BUY) // Если тик на покупку
   sumVolBuy+=(long)tick_array[q].volume;
   else if(( tick_array[q].flags&TICK_FLAG_SELL)==TICK_FLAG_SELL) // Если тик на продажу
   sumVolSell+=(long)tick_array[q].volume;
           
       if(( tick_array[q].flags&TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME)   vola+=tick_array[q].volume_real; 
          }
    delta=double(sumVolBuy-sumVolSell); 
    if (Ldelta!=delta) Ldelta=delta; else delta=0;
  }
    for (int i=0;i<5 && !IsStopped();i++)
    { 
      h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,";");
       if(h!=INVALID_HANDLE)                                                         
       {  
         
         FileSeek(h,0,SEEK_END);
         FileWrite(h,RecDate,DoubleToString(Linterest[0],0),DoubleToString(delta,0),DoubleToString(vola,0)); 
         FileClose(h); 
         Sleep(100);
         FlagOFupdate[0]= true;
        break; 
       }
    } 

Изначально в КопиРанге стоял COPY_TICKS_ALL но вчера поменял на COPY_TICKS_TRADE. Насколько это правильней будет в связи с озвученной проблемой ранее???

 
Mihail Marchukajtes #:

Дельту, разницу между количеством покупателей и продавцов конкретного бара.

Приведу кусочек кода где происходит запрос тиков и расчёт дельты и объёма

Изначально в КопиРанге стоял COPY_TICKS_ALL но вчера поменял на COPY_TICKS_TRADE. Насколько это правильней будет в связи с озвученной проблемой ранее???

В Вашей ситуации нужно брать только  COPY_TICKS_TRADE, т.к. только сделки имеют параметр объема контрактов.

Для того чтобы использовать объемы контрактов ASK и BID, нужно использовать стакан

for (int i=0;i<5 && !IsStopped();i++)
    { 
      h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,";");
       if(h!=INVALID_HANDLE)                                                         
       {  
         
         FileSeek(h,0,SEEK_END);
         FileWrite(h,RecDate,DoubleToString(Linterest[0],0),DoubleToString(delta,0),DoubleToString(vola,0)); 
         FileClose(h); 
         Sleep(100);
         FlagOFupdate[0]= true;
        break; 
       }
    } 

Это - совсем печальный код.

На каждой итерации Вы открываете и закрываете файл.

 
prostotrader #:

В Вашей ситуации нужно брать только  COPY_TICKS_TRADE, т.к. только сделки имеют параметр объема контрактов.

Для того чтобы использовать объемы контрактов ASK и BID, нужно использовать стакан

Это - совсем печальный код.

На каждой итерации Вы открываете и закрываете файл.

Если первая попытка удачная то нет, а так данные пишутся в начале минуты за предыдущий бар вполне сносно получается записать ОИ, дельту и объём!!!
 
Mihail Marchukajtes #:
Если первая попытка удачная то нет, а так данные пишутся в начале минуты за предыдущий бар вполне сносно получается записать ОИ, дельту и объём!!!

скрин покажете?

 
Renat Akhtyamov #:

скрин покажете?

Да запросто....

Вот видите все прекрасно пишется, правда узнать разницу записи всех тиков или просто торговых не представляется возможным. Заморачиватся не хочу. Ведь для НС незначительные смещения и ошибки не так важны, главное что бы после обучения данные не менялись ведь при инициализации советника с НС он должен просчитать историю правильно до текущего момента что бы следующий стартовал расчёт от текущих, правильных параметров. Если инициализация прошла НЕ корректно то текущие значения, значения последнего известного сигнала будут другими и новый сигнал стартанёт к расчёту с других позиций, что приведёт к непредсказуемому результату. Поэтому НЕ важно как записали, пусть да же с погрешностями. Главное чтоб не меняли уже после тренировки!!!!

 
Mihail Marchukajtes #:

Да запросто....

Вот видите все прекрасно пишется, правда узнать разницу записи всех тиков или просто торговых не представляется возможным. Заморачиватся не хочу. Ведь для НС незначительные смещения и ошибки не так важны, главное что бы после обучения данные не менялись ведь при инициализации советника с НС он должен просчитать историю правильно до текущего момента что бы следующий стартовал расчёт от текущих, правильных параметров. Если инициализация прошла НЕ корректно то текущие значения, значения последнего известного сигнала будут другими и новый сигнал стартанёт к расчёту с других позиций, что приведёт к непредсказуемому результату. Поэтому НЕ важно как записали, пусть да же с погрешностями. Главное чтоб не меняли уже после тренировки!!!!

В экселе ограничение на количество строк имеется. Если автомат кидает, имейте ввиду. Лучше sql. Итог расчета какой по скрину, в чем практический смысл заключается?
 
Renat Akhtyamov #:
В экселе ограничение на количество строк имеется. Если автомат кидает, имейте ввиду. Лучше sql. Итог расчета какой по скрину, в чем практический смысл заключается?

Пишется обыкновенный КСВ файл.

Сбор истории ОИ, дельты и объёма сответствепнно. Те данные которые 100% не будут изменены в истории, если не говорить уже об отсутстви истории ОИ как таковой. Код расчёта записываемых параметров я приводил выше....