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

 
вот скрипт который сразу выводит на экран нужную информацию по инструменту для ручного расчета коэффициента, теперь написать код автоматического подсчета это дело пяти минут
Файлы:
dvcg.mq4  1 kb
 
forex-k >>:

спасибо!

я считаю так:

Стоимость пункта ( Инструмент1 ) = Размер минимального изменения цены инструмента в валюте депозита / ( Минимальный шаг изменения цены инструмента в валюте котировки /Размер пункта в валюте котировки)

Стоимость пункта ( Инструмент2 ) = Размер минимального изменения цены инструмента в валюте депозита / ( Минимальный шаг изменения цены инструмента в валюте котировки /Размер пункта в валюте котировки)


далее смотрим стоимость пункта какого инструмента больше, допустим Инструмент1


коф= Стоимость пункта Инструмент1/ Стоимость пункта Инструмент2


lot1( Инструмент1 )=lot базовый

lot2( Инструмент2 )=lot базовый*коф

допустим имеем золото и серебро


lot базовый=0.1;


Стоимость пункта ( GCG0 ) =10/(0.1/0.1)=10;

Стоимость пункта ( SIH0 ) =25/(0.005/0.001)=5;


коф= 10/5=2;


lot1( GCG0 )=0.1;

lot2( SIH0 )=0.1*2=0.2;

 

Ок. Спсб. Будем разбираться.

Ещё вопрос ко всем, кто сможет ответить.

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

Работает нормально, но встала проблема с отображением коммента.

При включении коммента начинаются проблемы.


Иногда все работает нормально.

Но чаще журнал (при включении коммента) начинает выдавать деление на нуль - ZERO DIVIDЕ

После разбора удалось обнаружить, что появляется это из-за деления 

на  /POINT_1 и /POINT_2, в нескольких местах кода коммента где

double POINT_1 = MarketInfo(Symbol_1,MODE_POINT); 
double POINT_2 = MarketInfo(Symbol_2,MODE_POINT); 
Я не могу обойтись без этих действий, т.к. иначе мне не удасться в пунктах получить текущий профит/убыток виртуальных сделок по второму инструменту.

Кто-ниб. сталкивался с такой проблемой? 

Как тут мне устранить ZERO DIVIDЕ  ?

 

Я заинтересовался темой, и перед тем, как приступить к практической реализации идеи, позволю себе пару-тройку теоретических соображений:


  • корреляция инструментов - штука не постоянная, это надо понимать. Даже в такой паре как свинина и говядина может наступить событие, которое обратит корреляцию до -1 (например при вспышке свиного грипа, свинина подешевеет, а говядина как конкурент подорожает) при этом мы можем получить неограниченные убытки, так как войдем против тренда по спреду, в надежде что будет сокращаться. Это можно решить, составив портфель из множества некоррелированных пар и продумать контроль убытков (не пересиживать).
  • как верно подсказал нам timbo, нужно оценить стационарность спреда. Грубо говоря оценить динамику МА и СКО от спреда. Они должны быть постоянными (+\-) на всей истории.Или как вариант можно строить распределение значений спреда - в идеале должна получиться гауссиана с вершиной в 0. Это все нужно для автоматизации/ускорения отбора пар в портфель.
  • Я не совсем уверен что подход forex-k верен в плане построения спреда (вычитание мувинга из цены). Конечно это позволяет привести цены к общему знаменателю, но не учитывает вес пункта. Например изменение на 5% для одного инструмента составит 300 пунктов, а для другого - 600. В этом случае мы получим здоровенный спред, но ожидаемого возврата к 0 не будет (т.к. в % изменились одинаково). На мой взгляд интереснее строить спред от Close[i]/Close[i+n], тогда мы сможем оценивать спред в относительных (%) изменениях.
  • По поводу рассчета лота - нужно учитывать не только стоимость пункта, но и волатильность инструментов, чтобы уравнять движения, одинаковые в %.
Простите за многобуков, но перед тем как ринуться с шашкой в бой, предпочитаю немного подумать :-)
 
neoclassic >>:

Я заинтересовался темой, и перед тем, как приступить к практической реализации идеи, позволю себе пару-тройку теоретических соображений:


  • Я не совсем уверен что подход forex-k верен в плане построения спреда (вычитание мувинга из цены). Конечно это позволяет привести цены к общему знаменателю, но не учитывает вес пункта. Например изменение на 5% для одного инструмента составит 300 пунктов, а для другого - 600. В этом случае мы получим здоровенный спред, но ожидаемого возврата к 0 не будет (т.к. в % изменились одинаково). На мой взгляд интереснее строить спред от Close[i]/Close[i+n], тогда мы сможем оценивать спред в относительных (%) изменениях.

я учел этот момент в новых версиях индикатора, также использую уравнивающие коэффициенты

 
neoclassic >>:

корреляция инструментов - штука не постоянная, это надо понимать. Даже в такой паре как свинина и говядина может наступить событие, которое обратит корреляцию до -1....

Кстати, любопытная ситуация сейчас имеет место на рынке зерновых!

Пшеница, кукуруза, бобы ... -

Вялотекущий тренд вниз. Интересно, что линии торгуемых инструментов сошлись практически в одной точке!
Что бы это могло значить с фундаментальной точки зрения ?
ZC+ZW+ZS+ZM
Нечасто так бывает на истории.
 

 
rid писал(а) >>

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

Работает нормально, но встала проблема с отображением коммента.

Кто-ниб. сталкивался с такой проблемой?

Как тут мне устранить ZERO DIVIDЕ ?

В ТЕСТЕРЕ по чужому символу МаркетИнфо далеко не всегда выводит то что надо, только в онлайне нормально работает.

 

Нашёл официальный комментарий:

Модератор
5084
stringo 25.03.2009 10:19

Сколько можно повторять и писать? MarketInfo в тестере не работает! За исключением только нескольких запросов.

 

Я всё-таки предполагаю, что именно этот глюк не связан с МаркетИнфо.

Вот сейчас - сделал - как описано здесь: 

Ошибка "zero divide".......... кто дурак????

и вроде пока (тьфу-тьфу) - работает.

 

Да, - видно эти функции Маркет инфо 

double Ask_1 = MarketInfo(Symbol_1,MODE_ASK);
double Bid_1 = MarketInfo(Symbol_1,MODE_BID);
double Ask_2 = MarketInfo(Symbol_2,MODE_ASK);
double Bid_2 = MarketInfo(Symbol_2,MODE_BID);
double POINT_1 = MarketInfo(Symbol_1,MODE_POINT);
double POINT_2 = MarketInfo(Symbol_2,MODE_POINT);
    как раз те, - которые могут работать в тестере.  Вот так у меня отображается сейчас работа "арбитражника" при визуальном  тестерном прогоне:

(в работе - открыт второй "хедж" : бай BRN +  селл CL, - и текущий ход сделок - отображается - как по отдельности, - так и суммарно :  -112+101=-11)

Осталась  синхронизировать по барам работу советника. Т.к. оба этих инструмента торгуются, зачастую, - с разного времени.


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