Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ордера закрываются серией, но если условий для закрытия нет, то ордера собираются день-два и т.д.
Ну если закрывается серия практически за один цикл, ну, допустим, за время жизни одного бара, то и критерий серии тогда можно взять по времени закрытия плюс один бар. То есть все ордера, время закрытия которых меньше, отбрасывать.
Правда, есть опасения, что работать это будет только в тестере, любое вмешательство ручной торговлей - и профит будет вычислен неправильно (будет учтён только профит советника, а наторгованное вручную - нет) .
Ну если закрывается серия практически за один цикл, ну, допустим, за время жизни одного бара, то и критерий серии тогда можно взять по времени закрытия плюс один бар. То есть все ордера, время закрытия которых меньше, отбрасывать.
Т.е.
(t==OrderCloseTime() || t==OrderCloseTime()+60) ?
Т.е.
+60 ?
PeriodSeconds() правильней будет. Или собираетесь только на М1 работать?
Как-то вот так:
{
double lastlos=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
{
if(cnt==0) time=OrderCloseTime();
op=OrderProfit()+OrderSwap()+OrderCommission();
if(OrderCloseTime()+PeriodSeconds()<time && op>0.0) break;
lastlos+=op;
if(cnt!=0) cnt++;
}
}
}
return(lastlos);
}
Как-то вот так:
А ещё можно нумеровать ордера в комментарии, для тех ДЦ, которые не затирают комментарий. И при переборе вычленять номер из комментария, как только номер не по порядку - серия всё.
Пример: ордера серии № 1,2,3,4,5. Закрыты в порядке 5,4,3,2,1 - цикл видит 1 и прерывается. Закрытие в порядке 1,2,3,4,5 и 1 (номер ордера предыдущей серии) - цикл видит разницу 5-1>1 и прерывается. Надо подумать, как это в код перевести )))
Так прибавляется новое значение к предыдущему. А надо каждое новое закрытие, новое значение профита.
ну не знаю, у меня не прибавляется.
Вы поставьте себе инфо и сразу увидите что прибавляется
if(lastloss()<0) ProfitColor=Red;
if(lastloss()>0) ProfitColor=LimeGreen;
if(lastloss()==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(lastloss(),2)),10,"Arial",ProfitColor);
Вы поставьте себе инфо и сразу увидите что прибавляется
Хмм, да, действительно... Будем думать дальше )))
Мне тоже казалось что всё считает как надо.
Не надо было мне ставить это инфо в код и жить было бы легче))
А теперь покоя не даёт, как это всё это время функция работала не правильно!!