Предлагаю функцию реверса ордеров, для сливающих советников. - страница 3

 
evillive:

Компилятор текст на иврите на захотел понять )))

Иврит не единственный пишущий справа налево! Но я имел ввиду перевернуть котировки, а не код! ;))
 
borilunad:

Иврит не единственный пишущий справа налево! Но я имел ввиду перевернуть котировки, а не код! ;))

Азъ есмь простой торговецъ, надъ котировками несть власти у меня (
 
evillive:

Азъ есмь простой торговецъ, надъ котировками несть власти у меня (

А ла славянский?! ;)
 
Dzianis:

Помню, поначалу сталкивался с вопросом, как грамотно "перевернуть" ордера с покупки на продажу и наоборот. Напишу круто сливающий советник и становится интересно: вдруг начнет зарабатывать, если сделки перевернуть? Но, и за-за Бид и Аск (спрэда) не всегда корректно сразу получалось. Ведь просто поменять местами СтопЛосс и Тейк Профит нельзя, и есть нюанс по поводу начальной цены открытия ордера.

Поэтому написал небольшой код, который поможет начинаюшим быстро проверить ваш сливающий советник на "развороте" ордеров.

Этот код меняет все ордера, включая отложенные. И как основная функция OrderSend, функция ReversOrderSend возвращает код ошибки.


Это кидаем в область внешних переменных:

extern int ReversOrder=0; // Переворот сделок 1-да; 0-нет;


Это кидаем в самый конец программы (то есть создаем новую функцию - ReversOrderSend() ):

int ReversOrderSend (string symbol,int cmd,double volume,double price,int slippage,double stoploss,double takeprofit,string comment,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int Ret=0;
double sprd=MarketInfo(symbol,MODE_SPREAD)*Point;
//Print ("----------------------------",sprd);
if (ReversOrder==0) // Открываем ордера без разворота
{
Ret=OrderSend (symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
}
if (ReversOrder==1)
{
///////////////
if (cmd==OP_SELLSTOP) // Переворачиваем ордера OP_SELLSTOP
{
Ret=OrderSend (symbol,OP_BUYLIMIT,volume,price+sprd,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUYSTOP) // Переворачиваем ордера OP_BUYSTOP
{
Ret=OrderSend (symbol,OP_SELLLIMIT,volume,price-sprd,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}
///////////////
if (cmd==OP_SELL) // Переворачиваем ордера OP_SELL
{
Ret=OrderSend (symbol,OP_BUY,volume,price+sprd,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUY) // Переворачиваем ордера OP_BUY
{
Ret=OrderSend (symbol,OP_SELL,volume,price-sprd,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}
//////////////
if (cmd==OP_SELLLIMIT) // Переворачиваем ордера OP_SELLLIMIT
{
Ret=OrderSend (symbol,OP_BUYSTOP,volume,price+sprd,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUYLIMIT) // Переворачиваем ордера OP_BUYLIMIT
{
Ret=OrderSend (symbol,OP_SELLSTOP,volume,price-sprd,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}
}
return (Ret);
}


В самой программе меняем все функции OrderSend на ReversOrderSend. (Можно автозаменой Ctrl-H) Все, что было в скобках, после функции оставляем.

Все готово. Теперь для проверки эксперта на развороте в настройках эксперта меняем значение ReversOrder с 0 на 1 и продолжаем наслаждаться сливом

Если вы еще заходите на просторы этого форума, ПОМОГИТЕ, пожалуйста. Все сделал по написанному, все скомпелировалось. Все супер. Только есть одно но...

при запуске в тестере стратегий выкидывает из МетаТрейдера4. Пробовал разных брокеров. у всех ситуация повторяется. Не пойму в чем дело! Онлайн поддержки в один голос говорят обращаться к разработчику. ТУК, ТУК...

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2018.10.07 00:36

В библиотеку добавлена возможность переворота ТС без изменения кода советника. Подробности в обновленном описании.
 
Ползай задом наперед, делай все наоборот. 
 
fxsaber:
Вааще не понял , при чем тут МТ5?
 
dostavkads:
Вааще не понял , при чем тут МТ5?

Это и MT4.

 
fxsaber:

Это и MT4.

Помоги, пожалуйста. 

***


 
dostavkads:

Помоги, пожалуйста. 

Читать описание. Там все есть.