for(int i=PositionsTotal()-1;i>=0;i--) if(m_position.SelectByIndex(i)) if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic) { //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции if(m_position.PositionType()==POSITION_TYPE_BUY) { //--- когда у позиции ещё нет StopLoss if(m_position.StopLoss()==0) { //--- пока StopLoss равен 0.0, TrailingStep не учитываем if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen()) { //--- модификация позиции m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0); } } //--- у позиции уже есть StopLoss else { //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss()) { //--- модификация позиции m_trade.PositionModify(m_position.Ticket(), NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0); } } } if(m_position.PositionType()==POSITION_TYPE_SELL) { //--- когда у позиции ещё нет StopLoss if(m_position.StopLoss()==0) { //--- пока StopLoss равен 0.0, TrailingStep не учитываем if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen()) { //--- модификация позиции m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0); } } //--- у позиции уже есть StopLoss else { //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss()) { //--- модификация позиции m_trade.PositionModify(m_position.Ticket(), NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0); } } } }
вот посморите как это реализовано в библиотечном файле. Перебириаются в цикле все Позиции. выбирается нужная и происходит ее изменение.
вот посморите как это реализовано в библиотечном файле. Перебириаются в цикле все Позиции. выбирается нужная и происходит ее изменение.
Спасибо Дмитрий. Это нужно попробовать в этом куске кода?
void TrailingStopTrail(ENUM_ORDER_TYPE type, double TS, double step, bool aboveBE) //set Stop Loss to "TS" if price is going your way with "step" { TS = NormalizeDouble(TS, Digits()); step = NormalizeDouble(step, Digits()); if(!PositionSelect(Symbol())) return; if(PositionGetInteger(POSITION_MAGIC) != MagicNumber || PositionGetInteger(POSITION_TYPE) != type) return; MqlTick last_tick; SymbolInfoTick(Symbol(), last_tick); double SL = PositionGetDouble(POSITION_SL); double openprice = PositionGetDouble(POSITION_PRICE_OPEN); if(type == ORDER_TYPE_BUY && (!aboveBE || last_tick.bid > openprice + TS) && (NormalizeDouble(SL, Digits()) <= 0 || last_tick.bid > SL + TS + step)) myOrderModify(ORDER_TYPE_BUY, 0, last_tick.bid - TS, 0); else if(type == ORDER_TYPE_SELL && (!aboveBE || last_tick.ask < openprice - TS) && (NormalizeDouble(SL, Digits()) <= 0 || last_tick.ask < SL - TS - step)) myOrderModify(ORDER_TYPE_SELL, 0, last_tick.ask + TS, 0); }
Спасибо Дмитрий. Это нужно попробовать в этом куске кода?
if(!PositionSelect(Symbol())) return; if(PositionGetInteger(POSITION_MAGIC) != MagicNumber || PositionGetInteger(POSITION_TYPE) != type) return;
int cntMyPos=PositionsTotal(); for(int ti=cntMyPos-1; ti>=0; ti--){ if(PositionGetSymbol(ti)!=_Symbol) continue; if(MagicNumber>0 && PositionGetInteger(POSITION_MAGIC)!=MagicNumber || PositionGetInteger(POSITION_TYPE) != type) continue;
может что то так . - попробуйте вдруг получится. я когда химичу всё перепробоваю
может что то так . - попробуйте вдруг получится. я когда химичу всё перепробоваю
спасибо.
к сожалению работает, только для 1 позиции, и постоянно модификация.
вообще то тут нужна полная конвертация с нетто в хедж.. тут вам не 1-2 строчки поменять..
Проще говоря, забить на mql5 и сидеть на mql4.
спасибо.
к сожалению работает, только для 1 позиции, и постоянно модификация.
я не знаю цели вашего советника . тестер аж за глючил
я не знаю цели вашего советника . тестер аж за глючил
Да, это просто для того чтоы открыть много позиций и проверить, работает ли для всех позиций трал и стоп. Увы, так же. ( для одной.
Проще говоря, забить на mql5 и сидеть на mql4.
проще взять, любой рабочий советник, и вашу стратегию воплощать в нём.
чуток меняя под себя.
- правда если вы хотите - создавать коды написания . то тогда другое дело.
проще взять, любой рабочий советник, и вашу стратегию воплощать в нём.
чуток меняя под себя.
- правда если вы хотите - создавать коды написания . то тогда другое дело.
этот шаблон, привык к нему, просто прикрутить индикатор или фильтры.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите пожалуйста с тралом и стопом.
Работает только для 1 позиции.
Что может быть не так?