找回密码
 立即注册

Python交易MT4 MT5

[复制链接]

Python交易MT4 MT5

[复制链接]
admin

205

主题

37

回帖

1万

积分

管理员

积分
15312
6 天前 | 显示全部楼层 |阅读模式
总所周知,MT5是原生支持python接口的,但是MT4就没有这么荣幸了。
所以本人开发了这个插件,支持MT4 MT5。
使用此Python代码的前提是  需要运行本人开发的EA在图表上,这样就可以调用API接口进行下单了。
需要打开DLL开关
不同的账号用不同的端口区分开。
目前只做了开单和平仓接口
需要更多的接口可以欢迎定制!


python部分代码展示(不定期更新)
  1. # -*- coding: utf-8 -*-
  2. from numpy.f2py.crackfortran import expectbegin

  3. from MtctpTradeInclude import MtctpTradeInclude
  4. from time import sleep
  5. m=MtctpTradeInclude("http://127.0.0.1:80/",95031778)#  # 连接到 MT4 交易服务器 账号必须输入正确
  6. # 交易参数
  7. lot=0.1 # 手数 加仓是递增
  8. addPoint=40 # 加仓点数
  9. magic=1233 # 魔术数字
  10. comm="python-mql-ea"# 注释 不可设置中文
  11. symbol="EURUSDm"# 交易品种
  12. closeprofit=1# 盈利平仓*单数 平仓

  13. # 连接到 MT4 交易服务器
  14. if m.Initialize()==True:
  15.     print("ea,初始化成功....")
  16. else:
  17.     print("ea,初始化失败,可能账户不对或者配置错误....")
  18.     exit()
  19. while True:
  20.     try:
  21.         m.OrdersAndHistoryTotal()
  22.         m.SymbolInfo(symbol)
  23.         if m.SYMBOL_BID==0:
  24.             continue

  25.         buyVol=0
  26.         sellVol=0
  27.         lastbuyOpenPrice=0
  28.         lastsellOpenPrice=0

  29.         lastbuyOpenlots=0
  30.         lastsellOpenlots=0
  31.         allprofit=0;
  32.         for i in range(m.OrdersTotal):
  33.             if m.OrderSymbol[i] == symbol:
  34.                 if m.OrderMagicNumber[i] == magic:
  35.                     allprofit=allprofit+m.OrderProfit[i]+m.OrderSwap[i]+m.OrderCommission[i]
  36.                     if m.OrderType[i] == 0:
  37.                         buyVol+=1
  38.                         lastbuyOpenPrice=m.OrderOpenPrice[i]
  39.                         lastbuyOpenlots=m.OrderLots[i]
  40.                     if m.OrderType[i] == 1:
  41.                         sellVol+=1
  42.                         lastsellOpenPrice = m.OrderOpenPrice[i]
  43.                         lastsellOpenlots = m.OrderLots[i]

  44.         if buyVol == 0:
  45.             m.OrderSend(symbol, 0, lot, 0, 3000, 0, 0, comm, magic, 0)
  46.             m.log(symbol+"下多首单",magic)
  47.         else:
  48.             if lastbuyOpenPrice-m.SYMBOL_ASK>addPoint*m.SYMBOL_POINT:
  49.                 m.OrderSend(symbol, 0, lastbuyOpenlots+lot, 0, 3000, 0, 0, comm, magic, 0)
  50.                 m.log(symbol+"下多加仓",magic)

  51.         if sellVol == 0:
  52.             m.OrderSend(symbol, 1, lot, 0, 3000, 0, 0, comm, magic, 0)
  53.             m.log(symbol+"下空首单",magic)
  54.         else:
  55.             if m.SYMBOL_BID-lastsellOpenPrice>addPoint*m.SYMBOL_POINT:
  56.                 m.OrderSend(symbol, 1, lastsellOpenlots+lot, 0, 3000, 0, 0, comm, magic, 0)
  57.                 m.log(symbol+"下空加仓",magic)


  58.         m.AccountInfo()
  59.         if allprofit>(buyVol+sellVol)*closeprofit:
  60.             for i in range(m.OrdersTotal):
  61.                 if m.OrderSymbol[i] == symbol:
  62.                     if m.OrderMagicNumber[i] == magic:
  63.                         m.OrderClose(m.OrderTicket[i], 0, 0, 3000, "NONE")
  64.                         m.log(symbol+"盈利平仓",magic)

  65.     except MemoryError:
  66.         print("内存不足,清理资源后重试")
  67.         break
复制代码

Python交易MT4 MT5

Python交易MT4 MT5




搭建WEB.ex4

106.89 KB, 下载次数: 127

Python交易MT4 MT5

搭建WEB.ex5

82.45 KB, 下载次数: 112

Python交易MT4 MT5

MtctpTradeInclude.py

10.28 KB, 下载次数: 326

Python交易MT4 MT5

script0.py

2.78 KB, 下载次数: 326

Python交易MT4 MT5

QQ|Archiver|小黑屋|www.mtctp.com |

GMT+8, 2025-4-27 01:36 , Processed in 0.055833 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表