Python量化交易入门:从安装到第一笔自动单,交流

新帖
登录发帖
Exness 推荐平台

入金门槛低,出金到账快,支持多种账户类型

FSA(塞舌尔)/FCA(英国) / CySEC(塞浦路斯) · 最低入金 $130
xuqiang718
xuqiang718 楼主 4 小时前 浏览 11 回复 0 阅读 1 分钟
Lv.1 新手汇友 等级 Lv.1 主题 3 帖数 14 积分 20 汇币 20
1楼
刚把MT5的Python接口跑通那天,盯着日志里那行“order sent”愣了半天——不是激动,是前面踩的坑太多,有点不敢相信。今天就把从零到第一笔自动单的完整路径捋一遍,纯新手视角,老手可以跳过。
先说环境。我用的Python 3.11,一定要装64位版本,别问我怎么知道的,32位解释器配MetaTrader5包直接报架构不匹配。安装包直接用pip:pip install MetaTrader5,另外建议顺手把pandas和numpy装上,后面处理K线数据省事。这里第一个坑:MetaTrader5这个包只支持Windows,Mac和Linux要么开虚拟机要么用Wine,我一开始想在Mac上硬跑,折腾一晚上放弃了,老老实实开了个Windows VPS。
装完包先做连接测试,别急着写策略。代码就几行:

  • import MetaTrader5 as mt5
  • mt5.initialize()  # 默认连本机已登录的终端
  • print(mt5.terminal_info())
  • print(mt5.account_info())

initialize()返回False的话先检查MT5客户端是不是已经登录,没登录终端的话接口连不上。还有个隐蔽的坑:如果你MT5装在非默认路径,要传path参数,我第一次就是终端开着但initialize一直失败,后来发现是装在D盘自定义目录,加上path=r“D:\MT5\terminal64.exe”才通。另外记得脚本结束时mt5.shutdown(),不然下次连接可能出怪问题。
连上之后先别碰下单,把行情拉出来看看。symbol_select(“EURUSD”, True)选中品种,然后mt5.copy_rates_from_pos(“EURUSD”, mt5.TIMEFRAME_M15, 0, 100)拿最近100根M15的K线。这里踩的坑是品种名称要跟经纪商完全一致,有的平台欧美带后缀比如EURUSD.a或者EURUSDm,写错了copy_rates直接返回None,还不报错,特别容易懵。建议先跑mt5.symbols_total()和mt5.symbols_get()把品种列表打出来核对。
下单这块,新手最容易栽在order_send的request字典填错字段。最小可用版本大概是这样:action用mt5.TRADE_ACTION_DEAL,symbol填品种,volume注意最小手数因平台而异,有的0.01有的0.1,填小了直接retcode 10014 invalid volume。type用mt5.ORDER_TYPE_BUY,price取mt5.symbol_info_tick(symbol).ask,deviation给个20到50容忍滑点,type_filling要跟平台支持的撮合模式匹配,这个字段填错是最常见的报错来源,我卡了最久的就是它——先用mt5.symbol_info(symbol).filling_mode查一下,或者干脆试ORDER_FILLING_IOC。发送后一定要检查result.retcode == mt5.TRADE_RETCODE_DONE,别只看有没有异常,很多失败是静默返回错误码的。
最后提醒两点:一是先在模拟账户上跑,我第一笔自动单就是在模拟盘上点了十几次才成功,真金白银别拿来试错;二是VPS上跑脚本记得关掉Windows自动更新和休眠,我有次半夜EA断连就是系统重启导致的。代码框架搭好之后,信号逻辑反而是最简单的部分。
你们连MT5接口的时候还遇到过什么奇葩报错?特别是filling_mode这块,不同平台差异挺大的,交流下各自的配置。
0 回复 众裁0 复制
#1
💬
暂无回复,来抢沙发吧!
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 新手求助:Exness开户美分账户怎么选