找回密码
 立即注册

期货跟单MT4MT5免费版

[复制链接]

期货跟单MT4MT5免费版

[复制链接]
admin

185

主题

31

回帖

2万

积分

管理员

积分
20342
2024-11-6 10:13:40 | 显示全部楼层 |阅读模式
本程序适合跟单交易,只要在MT4或者MT5上写好跟单代码即可实现下单到期货账户

实现逻辑:
1.MtctpServer.exe 负责登录期货账户并同时开通http服务器默认80端口,
2.使用MT4或者MT5的WebRequest进行提交下单,目前只做了开多空单和平多空单操作


期货账户信息在Accountlogin.json里面配置好即可,可以实现多账户操作,默认只开通了十个
启动程序后 当界面显示出来账户和总权益即表示登录成功,此时就可以提交下单了

程序免费使用,带来的任何问题自己负责,开发这个小工具纯属个人爱好,有时间也会更新功能。目前仅仅是个玩具,实现不了复杂的操作。


目前期货MT5:赫兹和MT5CTP两个平台做的比较好,本人均可代写他们的期货EA
赫兹地址:https://www.herzqt.com/?mark=YBZO4K4


期货跟单MT4MT5

期货跟单MT4MT5


期货跟单MT4MT5免费版

期货跟单MT4MT5免费版

期货跟单MT4MT5免费版

期货跟单MT4MT5免费版



以下是MT4/5的代码(需要注意的是开单平仓用涨跌停价格,否则会处于委托状态不能及时下进去,需要在软件打钩允许WebRequest)


  1. //+------------------------------------------------------------------+
  2. //|                                                      ProjectName |
  3. //|                                      Copyright 2018, CompanyName |
  4. //|                                       http://www.companyname.net |
  5. //+------------------------------------------------------------------+
  6. #property   copyright     "不才编程"
  7. #property   link          "http://www.mtctp.com/"
  8. #property   description   "www.mtctp.com"
  9. #property   description   "\n业务范围  :专业MT4MT5EA指标脚本编程"
  10. #property   description   "\n联系方式  :微信:bucaiea / QQ;280726108"
  11. #property   version       "1.0"
  12. #property   strict


  13. input string url="http://127.0.0.1/";
  14. input int   手数=1;
  15. int OnInit()
  16.   {
  17.    Createbutton(m_url+"做多"," 做多 ...","做多",105,35+105,100,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  18.    Createbutton(m_url+"做空"," 做空 ...","做空",105,35+70,100,28,CORNER_RIGHT_LOWER,clrCrimson,clrWhite,10);
  19.    Createbutton(m_url+"平多"," 平多 ...","平多",105,35+35,100,28,CORNER_RIGHT_LOWER,clrSkyBlue,clrNavy,10);
  20.    Createbutton(m_url+"平空"," 平空 ...","平空",105,35,100,28,CORNER_RIGHT_LOWER,clrLightSalmon,clrNavy,10);
  21.    return(INIT_SUCCEEDED);
  22.   }
  23. //+------------------------------------------------------------------+
  24. //|                                                                  |
  25. //+------------------------------------------------------------------+
  26. void OnChartEvent(const int id,
  27.                   const long& lparam,
  28.                   const double& dparam,
  29.                   const string& sparam
  30.                  )
  31.   {
  32.    if(ObjectGetInteger(0,m_url+"做多",OBJPROP_STATE)==1)
  33.      {
  34.       OrderSend(Symbol(),0,手数,SymbolInfoDouble(Symbol(),SYMBOL_ASK));
  35.       ObjectSetInteger(0,m_url+"做多",OBJPROP_STATE,0);
  36.      }
  37.    if(ObjectGetInteger(0,m_url+"做空",OBJPROP_STATE)==1)
  38.      {
  39.       OrderSend(Symbol(),1,手数,SymbolInfoDouble(Symbol(),SYMBOL_BID));
  40.       ObjectSetInteger(0,m_url+"做空",OBJPROP_STATE,0);
  41.      }

  42.    if(ObjectGetInteger(0,m_url+"平多",OBJPROP_STATE)==1)
  43.      {
  44.       OrderClose(Symbol(),0,手数,SymbolInfoDouble(Symbol(),SYMBOL_BID));
  45.       ObjectSetInteger(0,m_url+"平多",OBJPROP_STATE,0);
  46.      }
  47.    if(ObjectGetInteger(0,m_url+"平空",OBJPROP_STATE)==1)
  48.      {
  49.       OrderClose(Symbol(),1,手数,SymbolInfoDouble(Symbol(),SYMBOL_ASK));
  50.       ObjectSetInteger(0,m_url+"平空",OBJPROP_STATE,0);
  51.      }

  52.   }
  53. //+------------------------------------------------------------------+
  54. //|                                                                  |
  55. //+------------------------------------------------------------------+
  56. int  OrderSend(string symbol,int  cmd,int volume,double price,int AccountNumber=0)
  57.   {
  58.    string tmp=cmd==0?"kd":"kk";
  59.    string mtctp=url+"?Mode="+"1";
  60.    mtctp=mtctp+"&Symbol="+symbol;
  61.    mtctp=mtctp+"&Type="+tmp;
  62.    mtctp=mtctp+"&Lots="+IntegerToString(volume);
  63.    mtctp=mtctp+"&price="+DoubleToString(price,int(SymbolInfoInteger(symbol,SYMBOL_DIGITS)));
  64.    mtctp=mtctp+"&AccountNumber="+string(AccountNumber);
  65.    string cookie=NULL,headers;
  66.    char post[],result[];
  67.    int res;
  68.    ResetLastError();
  69.    int timeout=2000;
  70.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  71.    if(res==-1)
  72.      {
  73.       Print(__FUNCTION__,"失败:"+mtctp);
  74.      }
  75.    else
  76.      {
  77.       Print(__FUNCTION__,"成功:"+mtctp);
  78.       Print(__FUNCTION__,"成功:"+CharArrayToString(result,0,-1,CP_UTF8));
  79.       Comment(CharArrayToString(result,0,-1,CP_UTF8));
  80.       return 1;
  81.      }
  82.    return 0;
  83.   }
  84. //+------------------------------------------------------------------+
  85. //|                                                                  |
  86. //+------------------------------------------------------------------+
  87. int  OrderClose(string symbol,int  cmd,int volume,double price,int AccountNumber=0)
  88.   {
  89.    string tmp=cmd==0?"pd":"pk";
  90.    string mtctp=url+"?Mode="+"0";
  91.    mtctp=mtctp+"&Symbol="+symbol;
  92.    mtctp=mtctp+"&Type="+tmp;
  93.    mtctp=mtctp+"&Lots="+IntegerToString(volume);
  94.    mtctp=mtctp+"&price="+DoubleToString(price,int(SymbolInfoInteger(symbol,SYMBOL_DIGITS)));
  95.    mtctp=mtctp+"&AccountNumber="+string(AccountNumber);

  96.    string cookie=NULL,headers;
  97.    char post[],result[];
  98.    int res;
  99.    ResetLastError();
  100.    int timeout=2000;
  101.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  102.    if(res==-1)
  103.      {
  104.       Print(__FUNCTION__,"失败:"+mtctp);
  105.      }
  106.    else
  107.      {
  108.       Print(__FUNCTION__,"成功:"+mtctp);
  109.       Print(__FUNCTION__,"成功:"+CharArrayToString(result,0,-1,CP_UTF8));
  110.       Comment(CharArrayToString(result,0,-1,CP_UTF8));
  111.       return 1;
  112.      }
  113.    return 0;
  114.   }
  115. //+------------------------------------------------------------------+
  116. void Createbutton(string name,string txt1,string txt2,int XX,int YX,int XL,int YL,int WZ,color A,color B,int size)
  117.   {
  118. //       ObjectSetInteger(0,"X做多",OBJPROP_STATE,0);
  119.    if(ObjectFind(0,name)==-1)
  120.       ObjectCreate(0,name,OBJ_BUTTON,0,0,0);

  121.    ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XX);
  122.    ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YX);
  123.    ObjectSetInteger(0,name,OBJPROP_XSIZE,XL);
  124.    ObjectSetInteger(0,name,OBJPROP_YSIZE,YL);
  125.    ObjectSetString(0,name,OBJPROP_FONT,"微软雅黑");
  126.    ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size);
  127.    ObjectSetInteger(0,name,OBJPROP_CORNER,WZ);
  128.    if(ObjectGetInteger(0,name,OBJPROP_STATE)==1)
  129.      {
  130.       ObjectSetInteger(0,name,OBJPROP_COLOR,A);
  131.       ObjectSetInteger(0,name,OBJPROP_BGCOLOR,B);
  132.       ObjectSetString(0,name,OBJPROP_TEXT,txt1);
  133.      }
  134.    else
  135.      {
  136.       ObjectSetInteger(0,name,OBJPROP_COLOR,B);
  137.       ObjectSetInteger(0,name,OBJPROP_BGCOLOR,A);
  138.       ObjectSetString(0,name,OBJPROP_TEXT,txt2);
  139.      }
  140.   }
  141. string m_url="mtctp";
  142. void OnDeinit(const int reason)
  143.   {
  144.    for(int i=ObjectsTotal(0,-1,-1)-1; i>=0; i--)
  145.       if(StringFind(ObjectName(0,i),m_url,0)!=-1)
  146.          ObjectDelete(0,ObjectName(0,i));
  147.   }
  148. //+------------------------------------------------------------------+
  149. //| Expert tick function                                             |
  150. //+------------------------------------------------------------------+
  151. void OnTick()
  152.   {


  153.   }
  154. //+------------------------------------------------------------------+
复制代码



mtctpserver.rar

4.26 MB, 下载次数: 469

期货跟单MT4MT5免费版

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

GMT+8, 2024-11-21 17:50 , Processed in 0.055329 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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