Здравствуйте. Здесь в файлах МТ5 есть советник «Треугольный арбитраж». Он в корне неправильно сделан. Я исправил как смог, в соответствии с концепцией треугольного арбитража, пары треугольника ровняются друг с другом. К примеру EURUSD/GBPUSD — EURGBP, чистая разница за минусом издержек на совокупный спред торгуется.
Сделал, функция Synt работает, выводит разницу синтетика и реального актива. Но почему-то он никак не хочет открывать сделки. Андрей, посмотрите пожалуйста, помогите исправить!
P.S. Всех любителей арбитража предупреждаю, что брокеры будут блокировать вам счета и загонять в минус. Даже гендиректор Альпари по личному знакомству через людей не одобрил эту тему. Арбитраж только для своих у большинства брокеров.Они будут рады т только вашим сливам, но не вашим заработкам.
TRISS.rar (1 Kb)
Комментарии (6)
опять куролесный код?
35 AM2 Сообщений: 16665 - Андрей
24 igrun Сообщений: 1808 - igrun
www.opentraders.ru/downloads/3587/
35 AM2 Сообщений: 16665 - Андрей
9 Shtenco Автор Сообщений: 238
5 V888V Сообщений: 27
<code> void OnTick() { double Ask1=SymbolInfoDouble(Symb1,SYMBOL_ASK); double Ask2=SymbolInfoDouble(Symb2,SYMBOL_ASK); double Ask3=SymbolInfoDouble(Symb3,SYMBOL_ASK); double Bid1=SymbolInfoDouble(Symb1,SYMBOL_BID); double Bid2=SymbolInfoDouble(Symb2,SYMBOL_BID); double Bid3=SymbolInfoDouble(Symb3,SYMBOL_BID); double Synt=((Ask1/Bid2)-Ask3)/_Point; double Spread1=Ask1-Bid1*_Point; double Spread2=Ask2-Bid2*_Point; double Spread3=Ask3-Bid3*_Point; if(AllProfit()>Profit || AllProfit()<-Loss) CloseAll(); if(PositionsTotal()<1) { if((Synt)<-Delta) { trade.PositionOpen(Symb1,1,Lot,Bid1,0,0); trade.PositionOpen(Symb2,1,Lot,Bid2,0,0); trade.PositionOpen(Symb3,0,Lot,Ask3,0,0); } if((Synt)>Delta) { trade.PositionOpen(Symb1,0,Lot,Ask1,0,0); trade.PositionOpen(Symb2,0,Lot,Ask2,0,0); trade.PositionOpen(Symb3,1,Lot,Bid3,0,0); } } Comment("\n Прибыль : ",AllProfit(), "\n Синтетик : ",(Synt)); } </code>Вычисляется искуственный Аск двух пар = (Ask1/Bid2);
Затем находится разность искуственного Аск и реального Аск третьей пары .
Это значение и сравнивается с контрольным Delta.
В зависимости от ситуации и принимается решение.
<code> if(PositionsTotal()<1) { if((Synt)<-Delta) { trade.PositionOpen(Symb1,1,Lot,Bid1,0,0); trade.PositionOpen(Symb2,1,Lot,Bid2,0,0); trade.PositionOpen(Symb3,0,Lot,Ask3,0,0); } if((Synt)>Delta) { trade.PositionOpen(Symb1,0,Lot,Ask1,0,0); trade.PositionOpen(Symb2,0,Lot,Ask2,0,0); trade.PositionOpen(Symb3,1,Lot,Bid3,0,0); } } </code>Редактирован: 9 мая 2023, 10:33
16 ssg Сообщений: 817
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий