Пожалуйста, старайтесь вставить код правильно:
Кнопка
предназначена
для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать
кнопку
Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.
Исходный код, вставленный таким образом, будет красиво отформатирован моноширинным шрифтом, удобным для восприятия подобного рода информации.
Не рекомендуется выделять код полужирным шрифтом, чтобы выделить как-то по смыслу определенные куски. Дело в том, что в разных операционных системах и браузерах моноширинные шрифты отображаются по-разному. Например, в Windows Vista используется моноширинный шрифт Consolas, у которого полужирное начертание для 10 размера практически не отличимо от обычного.
Извините - сейчас подправлю
Необходимо обходить весь список позиций:
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==InpMagic) { double profit=m_position.Commission()+m_position.Swap()+m_position.Profit(); if(profit<-InpStopLoss0 || profit>InpTakeProfit0) m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol }
Необходимо обходить весь список позиций:
Спасибо вам огромное! а то уже не один год- мучаюсь над этим кодом.
Здоровья и всех благ!
Спасибо вам огромное! а то уже не один год- мучаюсь над этим кодом.
Здоровья и всех благ!
Что означают и как объявлять переменные m_position, m_symbol вопросов не вызывает? Или пояснить?
Что означают и как объявлять переменные m_position, m_symbol вопросов не вызывает? Или пояснить?
Нет - я всё разберусь. Спасибо!
Что означают и как объявлять переменные m_position, m_symbol вопросов не вызывает? Или пояснить?
//+------------------------------------------------------------------+ //| sl tp 0.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.01" #define MACD_MAGIC 0 //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\AccountInfo.mqh> //--- double m_adjusted_point; // point value adjusted for 3 or 5 points CTrade m_trade; // trading object CSymbolInfo m_symbol; // symbol info object CPositionInfo m_position; // trade position object CAccountInfo m_account; // account info wrapper //--- input double InpStopLoss0 = 3; // Stop Loss input double InpTakeProfit0 = 4; // Take Profit double profi,n=10.0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- initialize common information m_symbol.Name(Symbol()); // symbol m_trade.SetExpertMagicNumber(MACD_MAGIC); // magic m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(Symbol()); //--- tuning for 3 or 5 digits int digits_adjust=1; if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10; m_adjusted_point=m_symbol.Point()*digits_adjust; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==MACD_MAGIC) { profi=(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n; if(profi<-InpStopLoss0 || profi>InpTakeProfit0) m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol } } //+------------------------------------------------------------------+
Vladimir Karputov:
ещё раз большое Спасибо! вот так отлично работает код

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