Скачать MetaTrader 5

Как выбирать открытые ордера по всем инструментам сразу? - страница 5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
bestseich
80
bestseich  
Sepulca:

Есть готовая функция ClosePosBySizeProfitInCurrency - Закрытие тех позиций, у которых профит в валюте депозита некоторое значение

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

Набросал, но не тестировал. Я бы так сделал.


Красиво! Попробую
Yuriy Zaytsev
16510
Yuriy Zaytsev  
bestseich:

Копаю и мне нравится...

+ наш парень

тут всем "ЭТО" нравится ... Перевожу "ЭТО" - это "секс" в хорошем смысле, с MQL4/MQL5, ЗАКАЗЧИКОМ, ТЕРМИНАЛОМ, ДИЛИНГОМ, АППАРАТУРОЙ ... и т п

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

Проблема в общем то не сложная - вы просите закрыть позицию другим инструментом что бы перекрыть убыток... и оставить в рост прибыльную позицию

где то у меня был код - мултивалютника - но он в этой точке закрывал все отрытые ордера и не оставлял ни одного

Итак Вам похоже надо подрезать убыток и оставить в рост прибыльную сделку - ВЕРНО ?

bestseich
80
bestseich  
Sepulca:

Есть готовая функция ClosePosBySizeProfitInCurrency - Закрытие тех позиций, у которых профит в валюте депозита некоторое значение

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

Набросал, но не тестировал. Я бы так сделал.

А вот так результат будет похожим на Ваш? По одному инструменту открывается лишь один ордер
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderProfit()>0)
{
double pr=OrderProfit();
int tik=OrderTicket();
for(i=0;i<total;i++)//total=OrdersTotal()
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderProfit()<(-5)*Lots)//Lots=OrderLots()
{
if((OrderProfit()+pr-Lots)>0)
{
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
OrderClose(tik,OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
OrderClose(tik,OrderLots(),Ask,3,White);
break;
}}}}}}
if(B+Lots*test<S)//это когда прибавляются свободные средства
//В - баланс, S - cвободные средства,Lots*test - общий профит
{
if(OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
Comment(tik," ",OrderTicket());
}}
Vitalie Postolache
12441
Vitalie Postolache  
Интересно, а .bestseich. в курсе, что OrderProfit() измеряется в валюте депозита, а OrderLots() - это обьём сделки и итоговое сравнение
OrderProfit()<(-5)*OrderLots() - это сравнение круглого с тёплым?
Mikhail Kozhemyako
1283
Mikhail Kozhemyako  

if(B+Lots*test<S)//это когда прибавляются свободные средства
//В - баланс, S - cвободные средства,Lots*test - общий профит

Когда выполнится это условие, это значит дядя Коля у Вас давно в гостях)))))

bestseich
80
bestseich  
evillive:
Интересно, а .bestseich. в курсе, что OrderProfit() измеряется в валюте депозита, а OrderLots() - это обьём сделки и итоговое сравнение

Я в курсе . Но дело в том, что OrderLots() одного ордера мало отличается от другого OrderLots(), ну так децл...
bestseich
80
bestseich  
YuraZ:

+ наш парень

тут всем "ЭТО" нравится ... Перевожу "ЭТО" - это "секс" в хорошем смысле, с MQL4/MQL5, ЗАКАЗЧИКОМ, ТЕРМИНАЛОМ, ДИЛИНГОМ, АППАРАТУРОЙ ... и т п

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

Проблема в общем то не сложная - вы просите закрыть позицию другим инструментом что бы перекрыть убыток... и оставить в рост прибыльную позицию

где то у меня был код - мултивалютника - но он в этой точке закрывал все отрытые ордера и не оставлял ни одного

Итак Вам похоже надо подрезать убыток и оставить в рост прибыльную сделку - ВЕРНО ?


Да
bestseich
80
bestseich  
Sepulca:

if(B+Lots*test<S)//это когда прибавляются свободные средства
//В - баланс, S - cвободные средства,Lots*test - общий профит

Когда выполнится это условие, это значит дядя Коля у Вас давно в гостях)))))


Я тоже поначалу так думал, но наблюдая в реальном времени... В принципе я так выбрал чёб не заморачиваться на перебор свободных средств за какой нить период с определением максимального значения, т.е. чёб не только баланс рос, но и реальные средства которые в любой момент можно снять, а пока у меня получается что растет лишь баланс, а свободные средства плавают, то децл +, то децл -, остальное просадка
bestseich
80
bestseich  
evillive:
Интересно, а .bestseich. в курсе, что OrderProfit() измеряется в валюте депозита, а OrderLots() - это обьём сделки и итоговое сравнение

Значит вместо OrderProfit()<(-5)*OrderLots(), OrderProfit()<(-5)*Point? Иль иначе? Я, просто ,  новичок
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий