Это очень простно там точно есть, рекомендую https://www.mql5.com/ru/forum/131859
https://www.mql5.com/ru/forum/131859/page2#434209
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает расстояние в пунктах между рынком и ближайшей | //| позицей | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| op - торговая операция ( -1 - любая позиция) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ int DistMarketAndPos(string sy="", int op=-1, int mn=-1) { double d, p; int i, k=OrdersTotal(), r=1000000; if (sy=="" || sy=="0") sy=Symbol(); p=MarketInfo(sy, MODE_POINT); if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01; for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY) { d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p; if (r>d) r=NormalizeDouble(d, 0); } if (OrderType()==OP_SELL) { d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p; if (r>d) r=NormalizeDouble(d, 0); } } } } } return(r); }
Может пригодится https://www.mql5.com/ru/forum/131859/page3#434225
Как же мне это все совместить то?
Вот может тоже подойти
Функция PriceOpenNearPos().
Эта функция возвращает цену открытия ближайшей позиций. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:
//+----------------------------------------------------------------------------+
//| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) { double mi, oop=0, p; int i, k=OrdersTotal(), pp=0; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY) mi=MarketInfo(OrderSymbol(), MODE_ASK); if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID); p=MarketInfo(OrderSymbol(), MODE_POINT); if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01; if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) { pp=MathAbs(OrderOpenPrice()-mi)/p; oop=OrderOpenPrice(); } } } } } } return(oop); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if (???????????); //если ближайший ордер BUY в убытке больше чем 150 Point
{ //то
OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0); //надо сделать это
}
возможно ли такое?
Спасибо