Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 897
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно.
А как?
А как?
Барабашка уже всё рассказал.
Идентификатор позиции не поменяется. По нему ищите сделки.
Спасибо. После клиринга, функция возвращает не среднюю цену сделок, как задумано, а цену пере открытой позиции. Где ошибка, скажите, пожалуйста.
double Aver_Pr_sell_nett() { double total_price_multiply_volume_sell = 0.0; double total_volume_sell = 0.0; double net_price_sell_=0.0; string symb=_Symbol; int total =0; // for(int i=0; i<PositionsTotal(); i++) { ulong pt=PositionGetTicket(i); long ID=PositionGetInteger(POSITION_IDENTIFIER); if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60)) { //--- Получим количество сделок в полученном списке total=HistoryDealsTotal(); //--- Пройдем по всем сделкам в полученном списке for(int i=0; i<total; i++) { ulong dt = HistoryDealGetTicket(i); long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID); ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY); if(did==pt && in_out==DEAL_ENTRY_IN) { if(m_position.PositionType()==POSITION_TYPE_SELL) { total_price_multiply_volume_sell+=PositionGetDouble(POSITION_PRICE_OPEN)*PositionGetDouble(POSITION_VOLUME); total_volume_sell+=PositionGetDouble(POSITION_VOLUME); if(total_price_multiply_volume_sell!=0 && total_volume_sell!=0) { net_price_sell_=total_price_multiply_volume_sell/total_volume_sell; }; } } } } } //--- return(net_price_sell_); }Спасибо. После клиринга, функция возвращает не среднюю цену сделок, как задумано, а цену пере открытой позиции. Где ошибка, скажите, пожалуйста.
Если Вы работаете с позицией - работайте с позицией. Если Вы работаете со сделкой - работайте со сделкой. В сделке указана цена сделки, а не цена позиции.
Если Вы работаете с позицией - работайте с позицией. Если Вы работаете со сделкой - работайте со сделкой. В сделке указана цена сделки, а не цена позиции.
Разве я не выбрала сделки участвовавшие в открытии позиции?
Разве я не выбрала сделки участвовавшие в открытии позиции?
Алгоритм простой: выбираете позицию, по идентификатору позиции - все ее сделки. Выбираете для работы только те сделки, которые формируют объем позиции, т.е. исключаете клиринговые сделки.
Вы же выбрав позицию, получаете ее сделки, а дальше у сделок запрашиваете цену ПОЗИЦИИ! А нужна цена каждой конкретной сделки.
А нужна цена каждой конкретной сделки.
Извините, не пойму как сделку выбрать вместо позиции, покажите)
Извините, не пойму как сделку выбрать вместо позиции, покажите)
Так, я так и делаю
потом id сделки сравниваю с тикетом позиции, и считаю что выбрала сделку,
но возвращает цену позиции. Почему?