Никак не могу написать код по управлению капиталом... :-(

 

У меня в истории сделок есть как OP_SELL OP_BUY так и OP_SELLSTOP OP_BUYSTOP, рыночные ордера открываются только по лимитным ордерам.

Мне нужно, чтобы при двух прибыльных сделках подяд: лот=0.1

При двух убыточных сделках лот=1

Начинаю:

Сканирую историю с конца бесконечным циклом:

for(cnt=OrdersHistoryTotal();cnt<=OrdersHistoryTotal();cnt--)

Выбираю ордер

{ OrderSelect(cnt, SELECT_BY_POS,MODE_HISTORY);

Проверяю,если профит ордера положительный, то ищу следующий рыночный ордер в истории и проверяю...

if (OrderType==OP_BUY && OrderProfit()>0 || OrderType==OP_SELL && OrderProfit()>0) {

for(i=cnt-1;i<=OrdersHistoryTotal();i--) {

OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);

Если профит второго ордера положительный то лот=0.1 и выходим из второго цикла...

если другое то лот не меняем и выходим из второго цикла

if (OrderType==OP_BUY && OrderProfit()>0 || OrderType==OP_SELL && OrderProfit()>0) {Lots=0.1; break;} else break;

}

}

Теперь работаем в первом цикле.. и если первые условия не подошли значит

профит ордера отрицательный, проверям также как и в примере выше только для ордера с отрицательным профитом,

Песли второй ордер с отрицательным профитом то лот =1 и выход, если нет то просто выход

Если ни одно словие не сработало то просто выходим из первого цикла

ПРОБЛЕМА В ТОМ ЧТО ЭТА СХЕМА НЕ РАБОТАЕТ У МЕНЯ..... :-( МОЖЕТ Я ЧТО_ТО НЕ ТАК ДЕЛАЮ???

 
А если третья сделка на 1лот убыточна что будеш делать
 
lovova:
А если третья сделка на 1лот убыточна что будеш делать

По статистике у меня два лося два профита всреднем, возможно 3 сделка убыточна с объемом в 1 лот, но вцелом прибыльность при тесте должна увеличиться...
 
Sladoeg писал (а): По статистике у меня два лося два профита всреднем, возможно 3 сделка убыточна с объемом в 1 лот, но вцелом прибыльность при тесте должна увеличиться...
А если эти две убыточные сделки не открывать вообще? Представляешь как возрастет прибыльность! И ММ будет не нужен - все сделки будешь делать 1 лотом. 
Это не шутка, я абсолютно серьезно.

 
Из того, что вы написали,трудно понять чего вы добиваетесь. Задачу поиска в истории двух последних рыночных ордеров и проверки их прибыльности не стоит начинать с бесконечного цикла. Найдите два рыночных ордера, которые были недавно закрыты в простом цикле. Их OrderCloseTime() будет ближе всего к текущему времени. Их и проверьте.
 
Vita:

Из того, что вы написали,трудно понять чего вы добиваетесь. Задачу поиска в истории двух последних рыночных ордеров и проверки их прибыльности не стоит начинать с бесконечного цикла. Найдите два рыночных ордера, которые были недавно закрыты в простом цикле. Их OrderCloseTime() будет ближе всего к текущему времени. Их и проверьте.

Да Вы правы, хороший вариант с функцией OrderCloseTime() , спасибо попробую. ...
Причина обращения: