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

 

Да, этого советника, Trade Arbitrage можно изменять и компилировать в процессе его работы....Хмм.

 

Добрый вечер всем!
Автору благодарность и уважение за очень интересную идею и большую проделанную работу.

Две недели тестирую советник на двух терминалах на Альпари-Демо:
MinPips=3; SlipPage=0; Lock=true; Lots=1; MaxLot=20; MinLot=0.1; Monitoring=false
MinPips=5; SlipPage=0; Lock=true; Lots=1; MaxLot=20; MinLot=0.1; Monitoring=false
Размер депозита $10000 на обоих, плечо 1:500.
Набор инструментов разный, на каждом счёте по 5 строчек.
С запуском советника и сбором статистики проблем не было.
Запустил советников в торговлю 7.12.2009 (3pips) и 11.12.2009 (5 pips) и не выключаю до сих пор.
Результат на текущий момент:
MinPips=3 (с 7.12.2009): 340 закрытых сделок, 14 открытых; Balance: 8081,59, Equity: 6188,26
MinPips=5 (с 11.12.2009): 35 закрытых сделок, 9 открытых; Balance: 12559,74, Equity: 9535,56
Т.е. результат отрицательный, идёт медленный слив по Equity, баланс скачет туда-сюда. Причина одна - проскальзывание, ордера открываются не по тем ценам, которые просчитал советник. Например:

07:56:19 Trade-Arbitrage EURUSD,H1: Variant1 = EURSEK / EURUSD (Bid = 7.121622), Variant2 = GBPSEK / GBPUSD (Ask = 7.121118), Difference = 5.0 pips
07:56:19 Trade-Arbitrage EURUSD,H1: ; BUY EURUSD(1.36) = 1.46618 Ask; SELL EURSEK(-1.36) = 10.44158 Bid; SELL GBPUSD(-1.23) = 1.62858 Bid; BUY GBPSEK(1.23) = 11.59731 Ask
07:56:19 Trade-Arbitrage EURUSD,H1: open #61946513 buy 1.36 EURUSD at 1.46618 ok
07:56:19 Trade-Arbitrage EURUSD,H1: 61946513 = OrderSend(EURUSD, OP_BUY, 1.36, 1.46618, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.36
07:56:20 Trade-Arbitrage EURUSD,H1: open #61946515 sell 1.36 EURSEK at 10.44306 ok
07:56:20 Trade-Arbitrage EURUSD,H1: 61946515 = OrderSend(EURSEK, OP_SELL, 1.36, 10.44306, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.36
07:56:21 Trade-Arbitrage EURUSD,H1: open #61946517 sell 1.23 GBPUSD at 1.62867 ok
07:56:21 Trade-Arbitrage EURUSD,H1: 61946517 = OrderSend(GBPUSD, OP_SELL, 1.23, 1.62867, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.23
07:56:22 Trade-Arbitrage EURUSD,H1: open #61946520 buy 1.23 GBPSEK at 11.59731 ok
07:56:22 Trade-Arbitrage EURUSD,H1: 61946520 = OrderSend(GBPSEK, OP_BUY, 1.23, 11.59731, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.23

В этом примере две позиции из четырёх открылись по другим ценам. Не было ни одного случая, чтоб все позиции открылись по правильным ценам.
Проскальзывание бывает и положительным, но редко. Т.е. имеет место элемент "везения", что считаю неприемлемым для успешной работы по этой теории, т.к. планируемый профит составляет 3-5 пунктов, а проскальзывание может быть и -10 и больше.
В остальном - фиксация арбитража, определение пар и расчёт объёмов, схлопывание локов - всё безупречно.
Поэтому сейчас раздумываю о возможности торговли на нескольких терминалах на одном счёте, чтобы с одного терминала по одной арбитражной ситуации отправлялся только один торговый запрос по одной соответствующей паре. Возможно ли это и как это реализовать - пока не представляю. Никто об этом не думал?
А так же собираюсь провести анализ проскальзывания по своим логам на разных валютных парах. Возможно это даст улучшение результата.
Ну и ещё планирую провести подобные тесты у других брокеров, особенно кричащих в рекламе о торговле без проскальзывания. Но даже у них возможность одновременного открытия четырёх сделок с одного терминала не представляется мне возможной.

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

Но тема черезвычайно интересна и пока не теряю надежды найти решение описанных проблем.

 
korolev:

Добрый вечер всем!
Автору благодарность и уважение за очень интересную идею и большую проделанную работу.

Две недели тестирую советник на двух терминалах на Альпари-Демо:
MinPips=3; SlipPage=0; Lock=true; Lots=1; MaxLot=20; MinLot=0.1; Monitoring=false
MinPips=5; SlipPage=0; Lock=true; Lots=1; MaxLot=20; MinLot=0.1; Monitoring=false
Размер депозита $10000 на обоих, плечо 1:500.
Набор инструментов разный, на каждом счёте по 5 строчек.
С запуском советника и сбором статистики проблем не было.
Запустил советников в торговлю 7.12.2009 (3pips) и 11.12.2009 (5 pips) и не выключаю до сих пор.
Результат на текущий момент:
MinPips=3 (с 7.12.2009): 340 закрытых сделок, 14 открытых; Balance: 8081,59, Equity: 6188,26
MinPips=5 (с 11.12.2009): 35 закрытых сделок, 9 открытых; Balance: 12559,74, Equity: 9535,56
Т.е. результат отрицательный, идёт медленный слив по Equity, баланс скачет туда-сюда. Причина одна - проскальзывание, ордера открываются не по тем ценам, которые просчитал советник. Например:

07:56:19 Trade-Arbitrage EURUSD,H1: Variant1 = EURSEK / EURUSD (Bid = 7.121622), Variant2 = GBPSEK / GBPUSD (Ask = 7.121118), Difference = 5.0 pips
07:56:19 Trade-Arbitrage EURUSD,H1: ; BUY EURUSD(1.36) = 1.46618 Ask; SELL EURSEK(-1.36) = 10.44158 Bid; SELL GBPUSD(-1.23) = 1.62858 Bid; BUY GBPSEK(1.23) = 11.59731 Ask
07:56:19 Trade-Arbitrage EURUSD,H1: open #61946513 buy 1.36 EURUSD at 1.46618 ok
07:56:19 Trade-Arbitrage EURUSD,H1: 61946513 = OrderSend(EURUSD, OP_BUY, 1.36, 1.46618, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.36
07:56:20 Trade-Arbitrage EURUSD,H1: open #61946515 sell 1.36 EURSEK at 10.44306 ok
07:56:20 Trade-Arbitrage EURUSD,H1: 61946515 = OrderSend(EURSEK, OP_SELL, 1.36, 10.44306, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.36
07:56:21 Trade-Arbitrage EURUSD,H1: open #61946517 sell 1.23 GBPUSD at 1.62867 ok
07:56:21 Trade-Arbitrage EURUSD,H1: 61946517 = OrderSend(GBPUSD, OP_SELL, 1.23, 1.62867, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.23
07:56:22 Trade-Arbitrage EURUSD,H1: open #61946520 buy 1.23 GBPSEK at 11.59731 ok
07:56:22 Trade-Arbitrage EURUSD,H1: 61946520 = OrderSend(GBPSEK, OP_BUY, 1.23, 11.59731, 0, 0, 0) - no error, SlipPage = 0, Lots = 1.23

В этом примере две позиции из четырёх открылись по другим ценам. Не было ни одного случая, чтоб все позиции открылись по правильным ценам.
Проскальзывание бывает и положительным, но редко. Т.е. имеет место элемент "везения", что считаю неприемлемым для успешной работы по этой теории, т.к. планируемый профит составляет 3-5 пунктов, а проскальзывание может быть и -10 и больше.
В остальном - фиксация арбитража, определение пар и расчёт объёмов, схлопывание локов - всё безупречно.
Поэтому сейчас раздумываю о возможности торговли на нескольких терминалах на одном счёте, чтобы с одного терминала по одной арбитражной ситуации отправлялся только один торговый запрос по одной соответствующей паре. Возможно ли это и как это реализовать - пока не представляю. Никто об этом не думал?
А так же собираюсь провести анализ проскальзывания по своим логам на разных валютных парах. Возможно это даст улучшение результата.
Ну и ещё планирую провести подобные тесты у других брокеров, особенно кричащих в рекламе о торговле без проскальзывания. Но даже у них возможность одновременного открытия четырёх сделок с одного терминала не представляется мне возможной.

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

Но тема черезвычайно интересна и пока не теряю надежды найти решение описанных проблем.

про гэпы в понедельник я писал и считаю что разрешать торговлю надо через 15-20 минут после открытия торгов.именно по этой причине на реале было открыто несколько убыточных сделок.проскальзывание на реале тоже неслабое и реквотит 50\50,но у меня прописано около 30 строк и просадка максимум была 15%,но балланс поко поднял на 4% и открытых сделок 29

 

Может автор ответит на загадку.

Начальные условия:

extern double MinPips = 5.0;
extern int SlipPage = 0;
extern bool Lock = FALSE;
extern double Lots = 1;
extern double MaxLot = 0.05;
extern double MinLot = 0.01;
extern bool Monitoring = TRUE;
extern int TimeToWrite = 2;

Торговля идёт нормально. Позиции открываются, но, открываются с максимальным лотом 0.05 Объём позиции ни разу не был в пределе от 0.01 до 0.05, тем более 0.01.

Типа если средств на счёте достаточно для открытия объёма в 0.05, то этот объём и открывается. Но ведьэто максимальный объём! В чём может быть причина?

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

Недостаточно средств для открытия позиции.

Прошу прокомментировать эту ситуацию. Всётаки склоняюсь к мысли, что необходимо поставить разграничитель между средствами, находящимися в обороте, и находящиеся в свободном виде, ну примерно как 40/60. Может кто подскажет, в какой части кода указывать эту проверку?

 
Sashulya:

1000 "выиграл"на демосчете с балансом 6600$, с 9 веч, но "деление на ноль" было в 12 ночи, советник успокоился и утром набралось 15 ордеров. Пришлось закрыть..

20:54:54 Trade-Arbitrage NZDCAD,M1 inputs: Currencies="AUD, EUR, USD, CHF, JPY, NZD, GBP, CAD"; MinPips=3; SlipPage=0; Lock=false; Lots=0.1; MaxLot=1; MinLot=0.1; Monitoring=false; TimeToWrite=5;

AUDJPY / USDJPY && AUDCAD / USDCAD

EURJPY / AUDJPY && EURCAD / AUDCAD

USDJPY / AUDJPY && USDCAD / AUDCAD

GBPJPY / AUDJPY && GBPCAD / AUDCAD

AUDJPY / AUDCAD && USDJPY / USDCAD

1 / EURUSD && 1 / (GBPUSD * EURGBP)

1 / GBPUSD && EURGBP / EURUSD

EURUSD / EURGBP && GBPUSD

EURAUD && EURUSD / AUDUSD

EURUSD / AUDUSD && EURCHF / AUDCHF

GBPUSD && EURUSD / EURGBP

EURUSD && EURGBP * GBPUSD

1 / EURGBP && GBPUSD / EURUSD

GBPUSD && GBPJPY / USDJPY

GBPJPY && GBPUSD * USDJPY

EURUSD / AUDUSD && EURJPY / AUDJPY

EURUSD && EURJPY / USDJPY

EURJPY && EURUSD * USDJPY

EURUSD / NZDUSD && EURJPY / NZDJPY

EURGBP && EURUSD / GBPUSD

GBPUSD / NZDUSD && GBPJPY / NZDJPY

USDCAD && EURCAD / EURUSD

GBPAUD && GBPUSD / AUDUSD

1 / USDCAD && EURUSD / EURCAD

EURUSD && EURCAD / USDCAD

EURCAD && EURUSD * USDCAD

На реале можно в 10 раз меьшить "все лоты"
 

Для sezon:

Да, у меня так же все..

 

Привет Всем.

Объясните мне почему в ситуации EURUSD && EURAUD * AUDUSD

2954385 2009.12.17 18:35 buy 0.16 audusd 0.8875 0.0000 0.0000 2009.12.17 18:36 0.8872 0.00 0.00 0.00 -4.80
2954388 2009.12.17 18:35 buy 0.10 euraud 1.6170 0.0000 0.0000 2009.12.17 18:36 1.6163 0.00 0.00 0.00 -6.21
2954389 2009.12.17 18:35 sell 0.10 eurusd 1.4343 0.0000 0.0000 2009.12.17 18:36 1.4348 0.00 0.00 0.00 -5.00


AUDUSD открылось 0,16 лотом, а не 0,09 ???

 
korolev:

О проблемах предупреждается в "Возможные проблемы". Способы их решения предлагаются в "Возможные улучшения".

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

Будут гораздо лучше результаты (на реале), если модифицируете Trade-Arbitrage на одновременную работу с несколькими ДЦ, как об этом мною было написано в одном из первых комментариев к советнику.

 
sezon:


extern double MaxLot = 0.05;

В описании есть пояснения к каждому входному параметру. Там написано все четко, "без воды". При MaxLot = 0.05 советник в случае необходимости открыть объем 1 lot, откроет 20 позиций объемом 0.05! При этом будет совершено 20 торговых запросов. Читайте внимательно описание.

 
GST1979:

Объясните мне почему в ситуации EURUSD && EURAUD * AUDUSD

2954385 2009.12.17 18:35 buy 0.16 audusd 0.8875 0.0000 0.0000 2009.12.17 18:36 0.8872 0.00 0.00 0.00 -4.80
2954388 2009.12.17 18:35 buy 0.10 euraud 1.6170 0.0000 0.0000 2009.12.17 18:36 1.6163 0.00 0.00 0.00 -6.21
2954389 2009.12.17 18:35 sell 0.10 eurusd 1.4343 0.0000 0.0000 2009.12.17 18:36 1.4348 0.00 0.00 0.00 -5.00


AUDUSD открылось 0,16 лотом, а не 0,09 ???

Уже говорил, что самое интересное в советнике - его реализация. Там сплошные нестандартные подходы. Некоторые из них:

  • При расчете объемов реальных символов используется количество каждой валюты в торговом инструменте с учетом необходимости мультивалютного (не мультисимвольного) хэджа.
  • В логике советника все торговые инструменты виртуальные, с ними он работает, как будто они есть. Поэтому, в частности, добавить межброкерный арбитраж просто.
  • В логике советника все позиции виртуальные. Перевод их в торговлю осуществляется на последнем этапе расчетов. Это позволяет учитывать почти любые правила торговли брокеров.

Опять же говорил, при написании данного советника очень многие вещи, связанные с торговлей, стал иначе интерпретировать.