Тот который в истории - зачем ???
Мне нужен тот который в работе.... нужно только максимальное значение, когда просадка начнет уменьшаться - это фиксировать не нужно...
Помогите или может уже есть готовый вариант решения...
Нужно в советник добавить функцию которая будет сохранять в отдельном файле информацию по открытым позициям.
Информация нужна следующая:
1 - тикет ордера
2 - максимальная (в пунктах) просадка которая был у ордера
3 - "koment" ордера
СПАСИБО ЗА ПОМОЩЬ !!!!
//+------------------------------------------------------------------+ //| renoshnik.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int Ticket,Shift,OpenTime,Drawdown,handle; string symbol,comment; double OpenPrice,Price,Spread; //---- FileDelete("renoshnik.csv"); handle=FileOpen("renoshnik.csv", FILE_CSV|FILE_READ|FILE_WRITE,';'); FileWrite(handle,"Тикет","Просадка","Комментарий"); //---- for(int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS); { if(OrderType()<2) { Ticket=OrderTicket(); comment=OrderComment(); symbol=OrderSymbol(); OpenPrice=OrderOpenPrice(); OpenTime=60*MathRound(OrderOpenTime()/60); Shift=iBarShift(symbol,PERIOD_M1,OpenTime); if(OrderType()==OP_BUY) Price=iLow(symbol,PERIOD_M1,iLowest(symbol,PERIOD_M1,MODE_LOW,Shift+1,0)); Drawdown=MathRound((OpenPrice-Price)/MarketInfo(symbol,MODE_POINT)); if(OrderType()==OP_SELL) { Spread=MarketInfo(symbol,MODE_SPREAD); Price=iHigh(symbol,PERIOD_M1,iHighest(symbol,PERIOD_M1,MODE_HIGH,Shift+1,0)); Drawdown=MathRound((Price-OpenPrice)/MarketInfo(symbol,MODE_POINT)+Spread); } } //---- FileSeek(handle,0,SEEK_END); FileWrite(handle,Ticket,Drawdown,comment); } } FileClose(handle); //---- return(0); } //+------------------------------------------------------------------+
Вопрос, для чего это нужно?
Если поставить ряд ограничений, то задача сильно упрощается.
Например:
- данные нужны с некоторой периодичностью, допустим, минута;
- вы согласны с тем, что если советник использует данные, записываемые в файл, то вы не сможете прогнать его на тестере;
- данные того минутного бара, на котором был открыт ордер не участвуют в расчете просадки;
- точная величина просадки неизвестна, из-за плавающего спреда, для коротких позиций.
Тогда, вам нужна не функция, а индикатор, который вешается на минутах. Индикатор отрабатывает только на начале нового бара.
И, несложно вывести в файл информацию:
тикет ордера; символ; тип ордера Buy/Sell; максимальная просадка; максимальный профит; "komment" ордера
Swanпредложил скрипт, из которого легко сделать индикатор по предложенному ТЗ
Приблизительно, в виде скрипта, как-то так:
Огромное спасибо за скрипт, но насколько я понимаю в файл будут писаться данные каждую минуту (если ордер в просадке больше часа, то соответственно и для одного тикета будет до 60 записей).
А возможноли, чтобы скрипт писал в файл только одно значение, например когда ордер сработал по ТР скрипт определял на истории максимальную просадку и заносил эти данные в историю.
Данные файла в работе советника не используются, это нужно для анализа работы после прогонки советника в тестере с разными настройками. Хочу немножко усовершенствовать свою работу на "откатах" https://www.mql5.com/ru/forum/126665
Огромное спасибо за скрипт, но насколько я понимаю в файл будут писаться данные каждую минуту (если ордер в просадке больше часа, то соответственно и для одного тикета будет до 60 записей).
А возможноли, чтобы скрипт писал в файл только одно значение, например когда ордер сработал по ТР скрипт определял на истории максимальную просадку и заносил эти данные в историю.
Данные файла в работе советника не используются, это нужно для анализа работы после прогонки советника в тестере с разными настройками. Хочу немножко усовершенствовать свою работу на "откатах" https://www.mql5.com/ru/forum/126665
скрипт исполняется один раз, при повторном вызове файл полностью перезаписывается.
Возможно. только этот код придется сурово обработать напильником :)
максимальную просадку ордера в истории узнать довольно легко - зная время открытия и закрытия, и тип ордера ищем максимальное / минимальное значение цены за этот период высчитываем стоимость пункта, умножаем на лот ордера плюс свопы - спреды. ну и пишем все это в файл. если важен плавающий спред, тогда нужно на каждом тике проверять ордер профит для каждого открытого ордера и писать их в массив например, а по закрытию ордера писать в файл...
Хм, странно, дал же выше нормальный универсальный способ. Туда надо добавить массив-свойство OrdМахDrawdown[]. И на каждом тике для каждого ордера писать в этот массив их максимальные просадки. Когда понадобится новая характеристика (а наверняка же понадобится), добавить массив и для неё, и.т.д.
Массив нужен оттого, что одновременно может быть открыто несколько ордеров.
Хм, странно, дал же выше нормальный универсальный способ. Туда надо добавить массив-свойство OrdМахDrawdown[]. И на каждом тике для каждого ордера писать в этот массив их максимальные просадки. Когда понадобится новая характеристика (а наверняка же понадобится), добавить массив и для неё, и.т.д.
Массив нужен оттого, что одновременно может быть открыто несколько ордеров.
Что произойдет?,
- если какой-либо ордер закроется;
- откроется новый ордер;
- на некоторое время пропадет связь;
- компьютер перезагрузится
- .....................
Универсальных способов не бывает
Что произойдет?,
- если какой-либо ордер закроется;
- откроется новый ордер;
- на некоторое время пропадет связь;
- компьютер перезагрузится
- .....................
Универсальных способов не бывает
пп. 1 и 2 предусмотрены, вы невнимательно смотрели код примера.
п3. несложно обработать, нужно просто регулярно сверять количество ордеров в структуре с количеством реальных орлеров и добавлять "лишние" в структуру. В примере этого нет потому что он был ориентирован на работу с тестером.
п.4 несложно обработать, достаточно регулярно записывать состояние квазиструктуры в файл, этого нет по причине, указанной в предыдущем пункте.
п5 и следуюшие несложно обработать по аналогичным схемам. Просто нужно понять основную идею, эти квазиструктуры следуют за реальным списком ордеров, при любом сбое сразу после его получения соответствие можно легко восстановить.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите или может уже есть готовый вариант решения...
Нужно в советник добавить функцию которая будет сохранять в отдельном файле информацию по открытым позициям.
Информация нужна следующая:
1 - тикет ордера
2 - максимальная (в пунктах) просадка которая был у ордера
3 - "koment" ордера
СПАСИБО ЗА ПОМОЩЬ !!!!