а тому кто поможет, вы поделитесь той оплатой, которую должны получить за эту работу во фрилансе?
Скажите пожалуйста, а предпоследняя строчка кода result=mt5.order_send(request) - это приказ об открытии ордера? Если вышенаписанный код правильный, и если текущий выбранный ордер действительно уехал на 0,05 в профит, то в конце Вы посылаете не команду закрытия ордера, а команду установки ордера. Я правильно Вас понял?
Скажите пожалуйста, а предпоследняя строчка кода result=mt5.order_send(request) - это приказ об открытии ордера? Если вышенаписанный код правильный, и если текущий выбранный ордер действительно уехал на 0,05 в профит, то в конце Вы посылаете не команду закрытия ордера, а команду установки ордера. Я правильно Вас понял?
в mt5 нет команд закрытия - только открытия встречной, с указанием ее тикета.
Попробуйте вначале открыть встречную позицию. т.е. закоментируйте в своем коде
"position": df.ticket[i],
получите новый код встречной и уже в новом запросе используйте
"action": mt5.TRADE_ACTION_CLOSE_BY, "position_by": newTicket, "position": df.ticket[i],
На хеджевом счете, я думаю, иначе никак.
и я бы убрал вовсе
"magic": df.magic[i],
Попробуйте вначале открыть встречную позицию. т.е. закоментируйте в своем коде
получите новый код встречной и уже в новом запросе используйте
На хеджевом счете, я думаю, иначе никак.
и я бы убрал вовсе
Встречная открывается без вопросов. Но на попытку trade_action_close_by результат снова None
x = mt5.ORDER_TYPE_BUY price = mt5.symbol_info_tick(df.symbol[i]).ask if df.type[i] == mt5.ORDER_TYPE_BUY: x = mt5.ORDER_TYPE_SELL price = mt5.symbol_info_tick(df.symbol[i]).bid deviation=20 request={ "action": mt5.TRADE_ACTION_DEAL, "symbol": df.symbol[i], "volume": df.volume[i], "type": x, # "position": df.ticket[i], "price": price, "deviation": deviation, "comment": 'close by python', "type_time": mt5.ORDER_TIME_GTC, "type_filling": mt5.ORDER_FILLING_RETURN, } result=mt5.order_send(request) print(i,result); request={ "action": mt5.TRADE_ACTION_CLOSE_BY, "symbol": df.symbol[i], "volume": df.volume[i], "type": mt5.ORDER_TYPE_CLOSE_BY, "position_by": result.order, "position": df.ticket[i], "price": price, "deviation": deviation, "comment": 'close by python', "type_time": mt5.ORDER_TIME_GTC, "type_filling": mt5.ORDER_FILLING_RETURN, } result=mt5.order_send(request) print(i,result);
CloseBY {'action': 10, 'type': 8, 'position': 114651006, 'position_by': 114652226} = OrderSendResult(retcode=10009, deal=1906125, order=114652320,
volume=0.25, price=113.688, bid=113.771, ask=113.783, comment='Request executed', request_id=1265, retcode_external=0, request=TradeRequest(action=10, magic=0, order=0, symbol='', volume=0.0, price=0.0, stoplimit=0.0, sl=0.0, tp=0.0, deviation=0, type=8, type_filling=0, type_time=0, expiration=0, comment='', position=114651006, position_by=114652226))
у меня все не так:
request={ "action": mt5.TRADE_ACTION_DEAL, "symbol": df.symbol[i], "volume": df.volume[i], "type": x, # "position": df.ticket[i], "price": price, "deviation": deviation, "comment": 'open by python', "type_time": mt5.ORDER_TIME_GTC, "type_filling": mt5.ORDER_FILLING_RETURN, } result=mt5.order_send(request) print("DEAL ",request,"=",result,"\n"); request={ "action": mt5.TRADE_ACTION_CLOSE_BY, "type": mt5.ORDER_TYPE_CLOSE_BY, "position": df.ticket[i], "position_by": result.order, "comment": 'close by python', } result=mt5.order_send(request) print("CLOSE_BY ",request,"=",result);
результат
DEAL {'action': 1, 'symbol': 'EURJPY', 'volume': 0.5, 'type': 0, 'price': 130.51, 'deviation': 20, 'comment': 'open by python', 'type_time': 0, 'type_filling': 2} = OrderSendResult(retcode=10009, deal=12176498, order=15003375, volume=0.5, price=130.51, bid=130.48, ask=130.51, comment='Request executed', request_id=283, retcode_external=0, request=TradeRequest(action=1, magic=0, order=0, symbol='EURJPY', volume=0.5, price=130.51, stoplimit=0.0, sl=0.0, tp=0.0, deviation=20, type=0, type_filling=2, type_time=0, expiration=0, comment='open by python', position=0, position_by=0)) CLOSE_BY {'action': 10, 'type': 8, 'position': 14999198, 'position_by': 15003375, 'comment': 'close by python'} = None
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа программисты, подскажите.. Не работает простой код, собранный из примеров mql5..
Идея в том, что скрипт должен закрыть сделки с профитом больше 0.05. Результат: None
Код ниже. Алготрейдинг в терминале включен.