//+------------------------------------------------------------------+ //| Модифицирует выбранную по тикету позицию | //+------------------------------------------------------------------+ bool PositionModifyByTicket(const string symbol_name,const ulong magic_number,const ulong ticket,const double sl,const double tp) { //--- check stopped if(IsStopped()) return(false); //--- clean ZeroMemory(g_request); ZeroMemory(g_result); //--- setting request g_request.action =TRADE_ACTION_SLTP; g_request.position=ticket; g_request.symbol =symbol_name; g_request.magic =magic_number; g_request.sl =sl; g_request.tp =tp; //--- action and return the result return(OrderSend(g_request,g_result)); }
Лишнее.
//+------------------------------------------------------------------+ //| Функция трейлинга | //+------------------------------------------------------------------+ void Trailing(void) { int total=PositionsTotal(); for(int i=total; i>=0; i--) { ulong ticket=PositionGetTicket(i); if(ticket==0) continue; string symbol_name=PositionGetString(POSITION_SYMBOL); ulong magic_number=(ulong)PositionGetInteger(POSITION_MAGIC); ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); if(InpPositionType>WRONG_VALUE && type!=(ENUM_POSITION_TYPE)InpPositionType) continue;
Очень дорого (особенно, string) создавать выделенные переменные до всех continue-проверок.
Представьте себе простую оптимизацию на 100 000 проходов по 10 000 000 тиков. Тогда OnTick будет вызываться один ТРИЛЛИОН раз. Любое лишнее действие вызванное триллион раз потребует доп. секунды/минуты/часы. Цените свое и чужое время.
Очень дорого (особенно, string) создавать выделенные переменные до всех continue-проверок.
Представьте себе простую оптимизацию на 100 000 проходов по 10 000 000 тиков. Тогда OnTick будет вызываться один ТРИЛЛИОН раз. Любое лишнее действие вызванное триллион раз потребует доп. секунды/минуты/часы. Цените свое и чужое время.
Это не торгующий советник. Зачем его оптимизировать? Это же просто трал. Причём странный.
Это мигрирующая Trailing-функция в учебных целях.
Это мигрирующая Trailing-функция в учебных целях.
Недостаточна для мигрирующей. Только в контексте данного кода.
Мигрирующая - когда 90% кода заимствуется.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
TrailingTakeProfit:
Данный неторгующий советник предназначен для простого трейлинга приказов тейк профит открытых позиций.
Принцип работы: при открытии новой позиции, советник проверяет ее приказ тейк профит и, если его нету, выставляет его на заданный в настройках размер. Далее начинает передвигать тейк профит позиции, если цена уходит на расстояние дальше, чем указано в настройках. Действия аналогичные простому трейлингу стоп лосс.
Имеется возможность задать тип позиции - любая/покупка/продажа, символ позиции (любой или указанный), магик (любой или указанный) или тикет позиции (любой или указанный). Также возможно указать режим трейлинга тейк профита в убыточной зоне - если режим не задан, то тейк профит не будет подтягиваться в зоне убытка, а остановится на дистанции безубытка от цены открытия позиции. Размер безубытка можно указать в настройках.
Советник имеет девять настраиваемых параметров:
Рис.1 Тест трейлинга тейк профита позиций Buy. Размер тейк профита 400 пунктов, шаг трейлинга 10, подтягивать только в прибыльной зоне.
Автор: Scriptor