OneBillionUSD:
Можно в функции OnDeinit
Добрый день!
Возникла необходимость отследить убыточную сделку при окончании тестирования. Как можно это сделать?
Благодарю, разобрался!
Теперь встал вопрос как отличить убыточную сделку от StopOut?
OneBillionUSD:
Теперь встал вопрос как отличить убыточную сделку от StopOut?
В смысле? Как отличить одну убыточную сделку от другой?
Теперь встал вопрос как отличить убыточную сделку от StopOut?
Yedelkin:
В смысле? Как отличить одну убыточную сделку от другой?
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
В смысле? Как отличить одну убыточную сделку от другой?
OneBillionUSD:
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
А при Стопаут есть какой-нибудь комментарий в последней сделке?Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
tol64:
А при Стопаут есть какой-нибудь комментарий в последней сделке?
А при Стопаут есть какой-нибудь комментарий в последней сделке?
Да присутствует.
Как вариант смотреть комментарий можно. А существует еще какой-либо способ?
Может как то использовать TesterStatistics?
Нашел примерно следующее решение проблемы:
if(TesterStatistics(STAT_MIN_MARGINLEVEL)<MathMax(AccountInfo.MarginStopOut(),AccountInfo.MarginCall())) { Print("Стопаут"); }
Cпасибо.
OneBillionUSD:
Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Нашел примерно следующее решение проблемы:
Cпасибо.
Cmu4:
Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Совершенно верно данный эксперт не использует стоп уровни. Задача стояла отслеживать убыточные позиции при завершении тестирования во время оптимизации. Вот примерно что у меня получилось:
double OnTester() { double ret=0.0; HistorySelect(0,TimeCurrent()+86400); int total=HistoryDealsTotal(); ulong Ticket=0; for(uint i=total;i>0;i--) { Ticket=HistoryDealGetTicket(i); if(HistoryDealGetInteger(Ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT && HistoryDealGetDouble(Ticket,DEAL_PROFIT)<0) { if(TesterStatistics(STAT_MIN_MARGINLEVEL) >MathMax(AccountInfo.MarginStopOut(),AccountInfo.MarginCall())) { ret=NormalizeDouble(MathAbs(HistoryDealGetDouble(Ticket,DEAL_PROFIT))+ TesterStatistics(STAT_PROFIT),2); } break; } } return(ret); }Еще к сожалению оптимизацией не занимался но думаю ход мыслей у меня верный)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день!
Возникла необходимость отследить убыточную сделку при окончании тестирования. Как можно это сделать?