Торговля спредами в Meta Trader-е - страница 32

 

Вот сейчас прогнал советник (лот=0.1)  поочередно на графиках пар (доллариены+евроиены) C 29/12/2009 по сей день. На глазок, зарядил параметры: отклонение Дельта=20, закрытие суммарно задал = +10 пипсов.

Видно, что суммарно - имеем неплохой профит, - более 200 пипсов(баксов).

Только не пойму, почему число сделок разное. Видимо,  на одной паре на графике пропущены бары. Либо на гэпах сбой был. И механизм советника "сглючил". Буду разбираться.

Но ведь заметно - что, в основном,  работа советника с виртуальной имитацией - правильная. Графики  симметричны, - как и положено при работе "хеджа" !

А сделки 11 и 15 на графиках - ну точно,  на одном  гэпе закрылись.

EURRJPY



USDJPY


 
Уважаемые господа, кто знает как считается коинтеграция? Может кто помочь?
 
al982 >>:
Уважаемые господа, кто знает как считается коинтеграция? Может кто помочь?

Тут.

 
Конечно спасиб, а на рсуском не знаешь ресурсов ?
 
al982 >>:
Конечно спасиб, а на рсуском не знаешь ресурсов ?

Гугл тебе в помощь.

Кратко, коинтеграция не считается, для неё нет числового показателя. Можно только попытаться оценить её наличие/отсутствие. Простейший вариант для двух ассетов: регрессия одного ряда Х на другой ряд У, получаем слоп B и интерсепт A. Строим спред процес типа Z = Y - X*B - A. Тестируем полученный процесс на стационарность. Если Z стационарен, то можно считать, что Х и У коинтегрированные, а процесс Z можно успешно торговать.

Более продвинутый вариант - найти айген-вектор соответствующий минимальному айген-значению для варианс-матрицы. Процесс получается красивше и может учитывать неаграниченное число ассетов.

Проблема с определением стационарности. Стационарный процесс должен быть стационарен на всей длине уходящей в бесконечность, но у нас всегда конечный ряд, т.е. обмануться очень легко.

 
rid >>:

Вот сейчас прогнал советник (лот=0.1) ......Только не пойму, почему число сделок разное. Видимо,  на одной паре на графике пропущены бары. 


Всем привет. Действительно, число баров разное на графиках, хотя история тестирования задана одинаковая.

Видимо нужно определить, с какой даты(с какой глубины)  начинается корректная история котировок по обоим инструментам.

В функции :

/---------------------------------------------------------------------------+
//ФУНКЦИЯ РАСЧЕТА СРЕДНЕСТАТИСТИЧЕСКОГО СПРЕДА                               |
//---------------------------------------------------------------------------+               
  double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{ int k;   double N = 0;   double Sum = 0;
   for(k = 0; k < iBars(Symbol_1,Timeframe); k++)  {
      if(N == NBars)         break;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }   }   double avarageSpread = Sum / N;   return(avarageSpread);}

заявлено -

int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)      {

Что это означает ? Правильно я расшифровываю формулировку этого условия ? - 

"Если на одном из инструментов пропущен бар, то на втором инструменте - этот же присутствующий бар пропускаем (не учитываем)" ?

А как здесь можно получить - номер ближайшего пропущенного бара - на любом из инструментов? Всё равно на каком ?

Пож., подскажите...

.

 
rid >>:

Всем привет. Действительно, число баров разное на графиках, хотя история тестирования задана одинаковая.

Видимо нужно определить, с какой даты(с какой глубины) начинается корректная история котировок по обоим инструментам.

Не нужно. Это -- частое явление для инструментов, у которых бывают периоды пониженной ликвидности. За минуту просто не пришел ни один тик, бар пропущен.

Что это означает ? Правильно я расшифровываю формулировку этого условия ? -

"Если на одном из инструментов пропущен бар, то на втором инструменте - этот же присутствующий бар пропускем (не учитываем)" ?

Да.

А как здесь можно получить - номер ближайшего пропущенного бара - на любом из инструментов? Всё равно на каком ?

Пож., подскажите...

https://docs.mql4.com/ru/series/iBarShift

true поменять на false

 
wise >>:

Не нужно. Это -- частое явление для инструментов, у которых бывают периоды пониженной ликвидности. За минуту просто не пришел ни один тик, бар пропущен.

Да.

https://docs.mql4.com/ru/series/iBarShift

true поменять на false


Благодарю. Да,  действительно. Перешел на тф=м5 и результаты в большинстве случаев (тестов) гораздо более корректные. Сделки на обоих инстр., практически,  совпадают по числу.
 

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

Почему:

1. По ценам открытия. Открылся бар по первому инструменту. Открылся бар по второму. За это время по первому инструменту могут быть еще тики, и исходя из этого, высчитанный спред может быть некорректным.

2. По ценам закрытия. Можно быть уверенным, что в момент закрытия бара мы имеем актуальные котировки, поэтому высчитанный спред точно будет корректным.

 

Возможно, неплохой тандем могут составить инструменты (EURUSD+GOLD).

Сегодня, - вручную  по сигналам индюков на тф=м5 попробовал - поэкспериментировал.

Вот такой результат обнаружился:

//--------------------------------------------------

19934111 2010.01.11 09:53 sell 0.30 eurusd 1.4516 0.0000 0.0000 2010.01.11 11:27 1.4508 + 24.00
19934099 2010.01.11 09:53 buy 0.30 gcg0 1157.1 0.0 0.0               2010.01.11 11:27 1157.0    -3.00


19937919 2010.01.11 12:18 buy 0.30 gcg0             1158.1 0.0 0.0 2010.01.11 12:34 1159.7    +48.00
19937915 2010.01.11 12:17 sell 0.30 eurusd 1.4537 0.0000 0.0000 2010.01.11 12:34 1.4543 -18.00
//----------------------------------------------------------
И  сейчас открыт текущий "хедж" (с_евро+б_золото)

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