Советники: Trade-Arbitrage - страница 35

 

Здравствуйте! Я прошу прощения за русский, с использованием компилятора. Программа открыл свою позицию, но не закрывает их. Пусть они идут к потере. И он уже закрыт, так что в огромной потерей. Демо счет 3000 $ -8000 $ результат. "Лот = 0,5", "MaxLot = 3", "MinLot = 0,01", "Lock = True". Что случилось?

 

Про "треугольники" - очень узкий взгляд на арбитраж на уровне рассуждений.

Посмотрите еще раз раздел "Теория". Там не имеет значение, сколько реальных торговых инструментов участвует. Советник же рассматривает все возможные арбитражные ситуации с участием от 2-х до 4-х различных реальных торговых инструментов. Большее количество не рассматривается, т.к. это имеет смысл только для условия SPREADx + SPREADy.

Условия открытия и закрытия позиций расписаны.

 

Да Вы правы, это я что то не разобрался теперь понятно стало, просто наличие трех инструментов вводило в заблуждение. Хотелось бы уточнить технический вопрос, что означает параметр SpreadKoef и нужно ли MinPips по тексту советника везде заменить на SpreadKoef. Прошу заранее прощения за назойливость но очень не хочется разбираться в ньюансах кода, чужой код - потемки :)

 

В нижеприведенном коде примера проверяется самое большое расхождение между вариантами одного и того же синтетического торгового инструмента по условию BIDy - ASKx > (SPREADx + SPREADy) * SpreadKoef. Нигде больше в советнике параметры MinPips и SpreadKoef не используются.

 

вопросы к getch и другим участникам темы. 1. А какой у Вас пинг("задержка соединения") на брокере? У меня 125 ms прим.

2. У меня 2 арбитража полностью открытых висят с minpips=4 начал. 

1 й раз на реал поставил и попался(а на демо невнимательный был).. 

Я советнику задал lots=0,01 maxlot=0,02 и он открыл 2 варианта:

вот 1-й открытый вариант:

sell 0.01 EURUSD at 1.4121 ok (сейчас 1.4090  +3.10$) 

buy 0.01 EURAUD at 1.5471 ok  (сейчас 1.5634 +14.68$) 

buy 0.02 AUDUSD at 0.9125 ok  (сейчас 0.9008 -23.40$)

0.9125*1.5471=1,4117=1,4121-0.0004 (4 пункта, которые я задавал). По какой формуле в коде он объемы (количество лотов) для открытия считает? 

Он округляет до ближайшего возможного объема (с погрешностью - minlot), тогда ошибка появляется.. Тогда придется maxlot в несколько раз больше задавать,при условии достаточного баланса, правильно? А все равно не поможет?

Что то я посчитал еще вариант, тоже не правильно объемы?..:

sell 0.52 gbpusd at 1.6180 ok           -  52000gbp*1.618=84136$,   //как эти валюты пишутся, не помню (gbp)

buy 0.52 gbpjpy at 148.52 ok            - (52000gbp..*148.52)ен/91.87=84064$    // ен - это японские ены..

sell 0.2 usdjpy at 91.87 ok                - (20000$*91.87)ен/91.87=20000$

Почему суммы не сокращаются?:  84136$ - 84064$ << 20000$. Где этот код скажите?

3. И 2-й открытый вариант:

sell 0.01 EURUSD at 1.4135 ok (сейчас 1.4098 +3.70$) 

buy 0.01 EURGBP at 0.8668 ok (сейчас 0.8697 +4.69$) 

buy 0.01 GBPUSD at 1.6303 ok(сейчас 1.6194 -10.60$) 

То есть 1.6303*0.8668=1.4131=1.4135-0.0004 (4 пункта). А сейчас 0.8697*1.6194=1,4083=1,4098-0,0015 (15пунктов)..Это что арбитраж еще не перевернулся просто?

А почему так долго 15 пунктов  разница идет, и не переворачивается?? уже 12 часов. кто ее держит эту разницу, зачем почему и с каакой целью..?


 

Неоднократно в комментариях писал про важность внимательности к входным параметрам советника. Задание Lots = 0.01 - невозможность создания мультивалютного хэджа.

В советнике все функционирует правильно. Все формулы расчета в исходном коде.

 

Не подскажите, как он объемы считает для открытия очередного варианта?Я имею в виду формулу, не могу пока найти к коде.

И еще, тут на 1 брокере(mmcis group), на демо, я задал Lots = 1.0, MaxLot = 20.0; MinLot = 0.1 (на демо с 0,1 начинается с шагом 0,01); Он начал открывать ордера и по 0.9 лота и по 6 лотов ?

На брокере fxstart задал Lots = 0.2; MaxLot = 1.4; MinLot = 0.01; Он и по 0,03 лота открывает много ордеров и по 0,68 открыл и 0,4?

  Я уже запрограммировал количество открываемых позиций, закрытие всех ордеров и работа с начала, при условии прибыли в 2 раза меньшей чем бывшая просадка, но ничего не хочу тестировать, я опять запутался, после 2 месяцев..

И это таинственное высказывание getch:"Разрешенные для торговли объемы брокеры, как правило, дают с точностью до двух знаков после запятой. Этого может быть недостаточно для мультивалютного хэджа, если указано малое значение параметра Lots." - мне тоже не совсем уже стало понятно. 

 

Уважаемый Автор хотелось бы узнать по какому принципу советник решает какой инструмент до знака && продавать а какой покупать имеется ввиду направление сделки. Может нужно стремиться к положительному свопу? Так же до конца не понятно со спредами, Вы уже отвечали на этот вопрос но всетаки, если открыты позиции по трем инструментам их прийдется закрыть и заплатить спред, даже если мы откроем противоположенные позиции. Мало того большие спреды больше MinPips < spred + проскальзывание будут приводить советник к убыткам или другими словами полученная прибыль не будет перекрывать убытки спред + проскальзывание. И последнее не могли бы Вы более алгоритмично расписать расчет объемов при открытии позиций.

 

Ответы на все теоретические вопросы содержатся в разделе "Теория".

Если BidX > AskY и предыдущее открытие позиций по паре X && Y (= Y && X) было не по такому неравенству (или вообще открытий не было), сделать SELL X, BUY Y. Объем равен Lots + LotsPrev, если по паре X && Y есть ранее открытая противоположая по направлению позиция объемом LotsPrev (BUY X, SELL Y). И, соответственно, объем равен Lots, если по паре X && Y нет ранее открытых позиций (LotsPrev = 0).

Объемы считаются исходя из последствия арбитражных сделок - мультивалютный хэдж: для каждой валюты (не пары) количество купленной равно количеству проданной. Поскольку объемы позиции ограничены заданной брокером точностью, вышеприведенное условие равенства в мультивалютном хэдже в действительности выполняется с некоторой погрешностью. Отсюда следует, что погрешность сказывается сильнее при уменьшении параметра Lots.

Мультивалютный хэдж проверяется скриптом CheckMyArbitrage - рассчитывает (из открытых позиций) количества имеющихся у трейдера валют. Эти значения должны быть близки к нулю.

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

Например, если одновременно надо открыть арбитраж между 10-ю различными парами (черещ &&) и в них участвует 6 реальных торговых инструментов. То для каждого из 6-и торговых инструментов будет рассчитан (просуммирован (без ограничений на точность) из всех 10-и арбитражей) объем и сделан один (Lock = FALSE, объем < MaxLot ) торговый запрос на открытие этого объема.

 

Я так понимаю что если открытых позиций нет вообще, и выполняется условие арбитража то по паре X && Y позиции могут быть окрыты как sell X buy Y или buy X sell Y. Интересно узнать чем это определяется? И Вы не могли бы написать математически как определить количество купленной равно количеству проданной (ТУТ ИНТЕРЕСНО РАСПРЕДЕЛЕНИЕ ОБЪЕМОВ ПО ИНСТРУМЕНТАМ)или может где то есть ссылка. И еще раз прошу прощения Вы не ответили по спреду в предыдущем вопросе? С уважением assol