找回密码
 立即注册

国内期货交易EA定制

[复制链接]

国内期货交易EA定制

[复制链接]
admin

243

主题

104

回帖

6万

积分

管理员

积分
67640
2024-11-6 10:13:40 | 显示全部楼层 |阅读模式

国内期货交易EA定制:期货跟单MT4MT5开源代码

国内期货交易EA定制:期货跟单MT4MT5开源代码


本程序适合跟单交易,只要在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免费版


WebRequest提交链接支持浏览器直接访问


期货跟单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. input int     账号=228732;
  16. input bool    等待同步返回信息=true;
  17. input int     同步信息等待毫秒=200;
  18. datetime settime;
  19. //+------------------------------------------------------------------+
  20. //|                                                                  |
  21. //+------------------------------------------------------------------+
  22. int OnInit()
  23.   {
  24.    settime=TimeCurrent();
  25.    EventSetMillisecondTimer(100);
  26.    Comment(url);
  27.    return(INIT_SUCCEEDED);
  28.   }
  29. //+------------------------------------------------------------------+
  30. //|                                                                  |
  31. //+------------------------------------------------------------------+
  32. void OnDeinit(const int reason)
  33.   {
  34.    EventKillTimer();
  35.    for(int i=ObjectsTotal(0,-1,-1)-1; i>=0; i--)
  36.       if(StringFind(ObjectName(0,i),m_url,0)!=-1)
  37.          ObjectDelete(0,ObjectName(0,i));
  38.    Comment("");
  39.   }
  40. //+------------------------------------------------------------------+
  41. //|                                                                  |
  42. //+------------------------------------------------------------------+
  43. void OnTick()
  44.   {
  45.    if(settime<iTime(Symbol(),PERIOD_CURRENT,0))
  46.      {
  47.       settime=iTime(Symbol(),PERIOD_CURRENT,0);
  48.       int a11=228732;
  49.       Sleep(5000);
  50.       if(iClose(Symbol(),PERIOD_CURRENT,1)>iOpen(Symbol(),PERIOD_CURRENT,1))
  51.         {
  52.          OrderSend(Symbol(),0,手数,a11);
  53.          OrderClose(Symbol(),1,手数,a11);
  54.         }
  55.       if(iClose(Symbol(),PERIOD_CURRENT,1)<iOpen(Symbol(),PERIOD_CURRENT,1))
  56.         {
  57.          OrderSend(Symbol(),1,手数,a11);
  58.          OrderClose(Symbol(),0,手数,a11);
  59.         }
  60.       int a22=191244;
  61.       if(iClose(Symbol(),PERIOD_CURRENT,1)>iOpen(Symbol(),PERIOD_CURRENT,1))
  62.         {
  63.          OrderSend(Symbol(),0,手数,a22);
  64.          OrderClose(Symbol(),1,手数,a22);
  65.         }
  66.       if(iClose(Symbol(),PERIOD_CURRENT,1)<iOpen(Symbol(),PERIOD_CURRENT,1))
  67.         {
  68.          OrderSend(Symbol(),1,手数,a22);
  69.          OrderClose(Symbol(),0,手数,a22);
  70.         }
  71.      }
  72.   }
  73. //+------------------------------------------------------------------+
  74. //|                                                                  |
  75. //+------------------------------------------------------------------+
  76. void OnChartEvent(const int id,
  77.                   const long& lparam,
  78.                   const double& dparam,
  79.                   const string& sparam
  80.                  )
  81.   {
  82. //+------------------------------------------------------------------+
  83. //|                 下单和平仓
  84. //+------------------------------------------------------------------+
  85.    Createbutton(m_url+"做多"," 做多 ...","做多",155,35+105,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  86.    Createbutton(m_url+"做空"," 做空 ...","做空",155,35+70,150,28,CORNER_RIGHT_LOWER,clrCrimson,clrWhite,10);
  87.    ObjectSetInteger(0,m_url+"账号",OBJPROP_STATE,0);
  88.    if(ObjectGetInteger(0,m_url+"做多",OBJPROP_STATE)==1)
  89.      {
  90.       OrderSend(Symbol(),0,手数,账号);
  91.       ObjectSetInteger(0,m_url+"做多",OBJPROP_STATE,0);
  92.      }
  93.    if(ObjectGetInteger(0,m_url+"做空",OBJPROP_STATE)==1)
  94.      {
  95.       OrderSend(Symbol(),1,手数,账号);
  96.       ObjectSetInteger(0,m_url+"做空",OBJPROP_STATE,0);
  97.      }
  98.    Createbutton(m_url+"平今多"," 平今多 ...","平今多",155,35+35,70,28,CORNER_RIGHT_LOWER,clrSkyBlue,clrNavy,10);
  99.    Createbutton(m_url+"平今空"," 平今空 ...","平今空",155,35,70,28,CORNER_RIGHT_LOWER,clrLightSalmon,clrNavy,10);
  100.    if(ObjectGetInteger(0,m_url+"平今多",OBJPROP_STATE)==1)
  101.      {
  102.       OrderClose(Symbol(),0,手数,账号);
  103.       ObjectSetInteger(0,m_url+"平今多",OBJPROP_STATE,0);
  104.      }
  105.    if(ObjectGetInteger(0,m_url+"平今空",OBJPROP_STATE)==1)
  106.      {
  107.       OrderClose(Symbol(),1,手数,账号);
  108.       ObjectSetInteger(0,m_url+"平今空",OBJPROP_STATE,0);
  109.      }
  110.      
  111.      
  112.      
  113.    Createbutton(m_url+"平昨多"," 平昨多 ...","平昨多",75,35+35,70,28,CORNER_RIGHT_LOWER,clrSkyBlue,clrNavy,10);
  114.    Createbutton(m_url+"平昨空"," 平昨空 ...","平昨空",75,35,70,28,CORNER_RIGHT_LOWER,clrLightSalmon,clrNavy,10);
  115.    if(ObjectGetInteger(0,m_url+"平昨多",OBJPROP_STATE)==1)
  116.      {
  117.       OrderCloseOld(Symbol(),0,手数,账号);
  118.       ObjectSetInteger(0,m_url+"平昨多",OBJPROP_STATE,0);
  119.      }
  120.    if(ObjectGetInteger(0,m_url+"平昨空",OBJPROP_STATE)==1)
  121.      {
  122.       OrderCloseOld(Symbol(),1,手数,账号);
  123.       ObjectSetInteger(0,m_url+"平昨空",OBJPROP_STATE,0);
  124.      }
  125.      
  126. //+------------------------------------------------------------------+
  127. //|                 查询信息 如果查询返回"Querying, please try again later..."请过几秒再查询(此时请求已经提交)
  128. //|                 这个接口是在本地查询内存记录,不涉及频率限制,但是这个数据不会自动更新 也就是返回的是最近查询的数据
  129. //+------------------------------------------------------------------+
  130.    Createbutton(m_url+"查询持仓汇总"," 查询持仓汇总 ...","查询持仓汇总",155,35+105+50,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  131.    Createbutton(m_url+"查询持仓明细"," 查询持仓明细 ...","查询持仓明细",155,35+105+50+50,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  132.    Createbutton(m_url+"查询资金明细"," 查询资金明细 ...","查询资金明细",155,35+105+50+100,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  133.    Createbutton(m_url+"查询合约"," 查询合约 ...","查询合约",155,35+105+50+100+50,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  134.    Createbutton(m_url+"查询市场深度"," 查询市场深度 ...","查询市场深度",155,35+105+50+100+100,150,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  135.    Createbutton(m_url+"账号","账号:"+string(账号),"账号:"+string(账号),155,35+105+50+100+150,150,28,CORNER_RIGHT_LOWER,clrYellow,clrNavy,10);
  136.    if(ObjectGetInteger(0,m_url+"查询持仓汇总",OBJPROP_STATE)==1)
  137.      {
  138.       Print(查询持仓汇总(账号));
  139.       ObjectSetInteger(0,m_url+"查询持仓汇总",OBJPROP_STATE,0);
  140.      }
  141.    if(ObjectGetInteger(0,m_url+"查询持仓明细",OBJPROP_STATE)==1)
  142.      {
  143.       Print(查询持仓明细(账号));
  144.       ObjectSetInteger(0,m_url+"查询持仓明细",OBJPROP_STATE,0);
  145.      }
  146.    if(ObjectGetInteger(0,m_url+"查询资金明细",OBJPROP_STATE)==1)
  147.      {
  148.       Print(查询资金明细(账号));
  149.       ObjectSetInteger(0,m_url+"查询资金明细",OBJPROP_STATE,0);
  150.      }
  151.    if(ObjectGetInteger(0,m_url+"查询合约",OBJPROP_STATE)==1)
  152.      {
  153.       Print(查询合约(账号,Symbol()));
  154.       ObjectSetInteger(0,m_url+"查询合约",OBJPROP_STATE,0);
  155.      }
  156.    if(ObjectGetInteger(0,m_url+"查询市场深度",OBJPROP_STATE)==1)
  157.      {
  158.       Print(查询市场深度(账号,Symbol()));
  159.       ObjectSetInteger(0,m_url+"查询市场深度",OBJPROP_STATE,0);
  160.      }
  161. //+------------------------------------------------------------------+
  162. //|                 主动查询信息 每次需要查询最新的信息就要先提交这个需求,然后再去使用上面的查询
  163. //|                 这个接口是在期货CTP那边查询,不要频繁查询,防止被封号!!!
  164. //|                 这个接口是在期货CTP那边查询,不要频繁查询,防止被封号!!!
  165. //|                 这个接口是在期货CTP那边查询,不要频繁查询,防止被封号!!!
  166. //|                 重要的事情说三遍
  167. //+------------------------------------------------------------------+
  168.    Createbutton(m_url+"请求查询持仓汇总"," 请求 ...","请求",50+155,35+105+50,45,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  169.    Createbutton(m_url+"请求查询持仓明细"," 请求 ...","请求",50+155,35+105+50+50,45,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  170.    Createbutton(m_url+"请求查询资金明细"," 请求 ...","请求",50+155,35+105+50+100,45,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  171.    Createbutton(m_url+"请求查询合约"," 请求 ...","请求",50+155,35+105+50+100+50,45,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  172.    Createbutton(m_url+"请求查询市场深度"," 请求 ...","请求",50+155,35+105+50+100+100,45,28,CORNER_RIGHT_LOWER,clrAqua,clrNavy,10);
  173.    if(ObjectGetInteger(0,m_url+"请求查询持仓汇总",OBJPROP_STATE)==1)
  174.      {
  175.       Print(查询持仓汇总(账号,"-"));
  176.       ObjectSetInteger(0,m_url+"请求查询持仓汇总",OBJPROP_STATE,0);
  177.      }
  178.    if(ObjectGetInteger(0,m_url+"请求查询持仓明细",OBJPROP_STATE)==1)
  179.      {
  180.       Print(查询持仓明细(账号,"-"));
  181.       ObjectSetInteger(0,m_url+"请求查询持仓明细",OBJPROP_STATE,0);
  182.      }
  183.    if(ObjectGetInteger(0,m_url+"请求查询资金明细",OBJPROP_STATE)==1)
  184.      {
  185.       Print(查询资金明细(账号,"-"));
  186.       ObjectSetInteger(0,m_url+"请求查询资金明细",OBJPROP_STATE,0);
  187.      }
  188.    if(ObjectGetInteger(0,m_url+"请求查询合约",OBJPROP_STATE)==1)
  189.      {
  190.       Print(查询合约(账号,Symbol(),"-"));
  191.       ObjectSetInteger(0,m_url+"请求查询合约",OBJPROP_STATE,0);
  192.      }
  193.    if(ObjectGetInteger(0,m_url+"请求查询市场深度",OBJPROP_STATE)==1)
  194.      {
  195.       Print(查询市场深度(账号,Symbol(),"-"));
  196.       ObjectSetInteger(0,m_url+"请求查询市场深度",OBJPROP_STATE,0);
  197.      }
  198.   }
  199. //+------------------------------------------------------------------+
  200. //|                                                                  |
  201. //+------------------------------------------------------------------+
  202. int  OrderSend(string symbol,int  cmd,int volume,int account,double price=0)//价格0默认就涨跌停开单
  203.   {
  204.    string tmp=cmd==0?"buy":"sell";
  205.    if(price==0)
  206.       price=cmd==0?SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MAX):SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MIN);
  207.    string mtctp=url+"?mode="+"0";
  208.    mtctp=mtctp+"&symbol="+symbol;
  209.    mtctp=mtctp+"&type="+tmp;
  210.    mtctp=mtctp+"&lots="+IntegerToString(volume);
  211.    mtctp=mtctp+"&price="+DoubleToString(price,int(SymbolInfoInteger(symbol,SYMBOL_DIGITS)));
  212.    mtctp=mtctp+"&account="+string(account);
  213.    string cookie=NULL,headers;
  214.    char post[],result[];
  215.    int res;
  216.    ResetLastError();
  217.    int timeout=2000;
  218.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  219.    if(res==-1)
  220.      {
  221.       Print(account," ",__FUNCTION__,"失败:"+mtctp);
  222.      }
  223.    else
  224.      {
  225.       if(等待同步返回信息)
  226.          Print(Result(account,url+"?"+CharArrayToString(result,0,-1,CP_UTF8)));
  227.       else
  228.          Print(account," ",__FUNCTION__,":"+CharArrayToString(result,0,-1,CP_UTF8)+">>"+mtctp);
  229.       return 1;
  230.      }
  231.    return 0;
  232.   }
  233. //+------------------------------------------------------------------+
  234. //|                                                                  |
  235. //+------------------------------------------------------------------+
  236. string jiemi(string in)
  237.   {
  238.    string keystr="ABCDEFG";
  239.    uchar src[],dst[],key[];
  240.    ArrayResize(dst,StringLen(in)*2);
  241.    StringToCharArray(keystr,key);
  242.    StringToCharArray(in,dst);
  243.    CryptDecode(CRYPT_BASE64,dst,key,src);
  244.    return  CharArrayToString(src);
  245.   }
  246.   //平今仓位
  247. int  OrderClose(string symbol,int  cmd,int volume,int account,double price=0)//价格0默认就涨跌停平仓
  248.   {
  249.    string tmp=cmd==0?"closebuy":"closesell";
  250.    if(price==0)
  251.       price=cmd==0?SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MIN):SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MAX);
  252.    string mtctp=url+"?mode="+"0";
  253.    mtctp=mtctp+"&symbol="+symbol;
  254.    mtctp=mtctp+"&type="+tmp;
  255.    mtctp=mtctp+"&lots="+IntegerToString(volume);
  256.    mtctp=mtctp+"&price="+DoubleToString(price,int(SymbolInfoInteger(symbol,SYMBOL_DIGITS)));
  257.    mtctp=mtctp+"&account="+string(account);
  258.    string cookie=NULL,headers;
  259.    char post[],result[];
  260.    int res;
  261.    ResetLastError();
  262.    int timeout=2000;
  263.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  264.    if(res==-1)
  265.      {
  266.       Print(account," ",__FUNCTION__,"失败:"+mtctp);
  267.      }
  268.    else
  269.      {
  270.       if(等待同步返回信息)
  271.          Print(Result(account,url+"?"+CharArrayToString(result,0,-1,CP_UTF8)));
  272.       else
  273.          Print(account," ",__FUNCTION__,":"+CharArrayToString(result,0,-1,CP_UTF8)+">>"+mtctp);
  274.       return 1;
  275.      }
  276.    return 0;
  277.   }
  278. //+------------------------------------------------------------------+
  279. //|                                                                  |
  280. //+------------------------------------------------------------------+
  281.   //平昨天仓位
  282. int  OrderCloseOld(string symbol,int  cmd,int volume,int account,double price=0)//价格0默认就涨跌停平仓
  283.   {
  284.    string tmp=cmd==0?"closeoldbuy":"closeoldsell";
  285.    if(price==0)
  286.       price=cmd==0?SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MIN):SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MAX);
  287.    string mtctp=url+"?mode="+"0";
  288.    mtctp=mtctp+"&symbol="+symbol;
  289.    mtctp=mtctp+"&type="+tmp;
  290.    mtctp=mtctp+"&lots="+IntegerToString(volume);
  291.    mtctp=mtctp+"&price="+DoubleToString(price,int(SymbolInfoInteger(symbol,SYMBOL_DIGITS)));
  292.    mtctp=mtctp+"&account="+string(account);
  293.    string cookie=NULL,headers;
  294.    char post[],result[];
  295.    int res;
  296.    ResetLastError();
  297.    int timeout=2000;
  298.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  299.    if(res==-1)
  300.      {
  301.       Print(account," ",__FUNCTION__,"失败:"+mtctp);
  302.      }
  303.    else
  304.      {
  305.       if(等待同步返回信息)
  306.          Print(Result(account,url+"?"+CharArrayToString(result,0,-1,CP_UTF8)));
  307.       else
  308.          Print(account," ",__FUNCTION__,":"+CharArrayToString(result,0,-1,CP_UTF8)+">>"+mtctp);
  309.       return 1;
  310.      }
  311.    return 0;
  312.   }
  313. //+------------------------------------------------------------------+
  314. //|                                                                  |
  315. //+------------------------------------------------------------------+
  316. string Result(int account,string _url)
  317.   {
  318.    Sleep(同步信息等待毫秒);
  319.    string cookie=NULL,headers;
  320.    char post[],result[];
  321.    int res;
  322.    ResetLastError();
  323.    int timeout=2000;
  324.    res=WebRequest("GET",_url,cookie,NULL,timeout,post,0,result,headers);
  325.    if(res==-1)
  326.      {
  327.       return "false";
  328.      }
  329.    else
  330.      {
  331.       return (string)account+":"+jiemi(CharArrayToString(result,0,-1,CP_UTF8))+">>"+_url;
  332.      }
  333.    return "";
  334.   }
  335. //+------------------------------------------------------------------+
  336. //|                                                                  |
  337. //+------------------------------------------------------------------+
  338. string   查询合约(int account,string symbol,string set="")
  339.   {
  340.    string mtctp=url+"?mode="+set+"5";
  341.    mtctp=mtctp+"&account="+string(account);
  342.    mtctp=mtctp+"&symbol="+symbol;
  343.    string cookie=NULL,headers;
  344.    char post[],result[];
  345.    int res;
  346.    ResetLastError();
  347.    int timeout=2000;
  348.    Print(mtctp);
  349.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  350.    if(res==-1)
  351.      {
  352.       Print(__FUNCTION__,"失败:"+mtctp);
  353.      }
  354.    else
  355.      {
  356.       return CharArrayToString(result,0,-1,CP_UTF8);
  357.      }
  358.    return "";
  359.   }
  360. //+------------------------------------------------------------------+
  361. //|                                                                  |
  362. //+------------------------------------------------------------------+
  363. string   查询市场深度(int account,string symbol,string set="")
  364.   {
  365.    string mtctp=url+"?mode="+set+"4";
  366.    mtctp=mtctp+"&account="+string(account);
  367.    mtctp=mtctp+"&symbol="+symbol;
  368.    string cookie=NULL,headers;
  369.    char post[],result[];
  370.    int res;
  371.    ResetLastError();
  372.    int timeout=2000;
  373.    Print(mtctp);
  374.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  375.    if(res==-1)
  376.      {
  377.       Print(__FUNCTION__,"失败:"+mtctp);
  378.      }
  379.    else
  380.      {
  381.       return CharArrayToString(result,0,-1,CP_UTF8);
  382.      }
  383.    return "";
  384.   }
  385. //+------------------------------------------------------------------+
  386. //|                                                                  |
  387. //+------------------------------------------------------------------+
  388. string   查询持仓汇总(int account,string set="")
  389.   {
  390.    string mtctp=url+"?mode="+set+"1";
  391.    mtctp=mtctp+"&account="+string(account);
  392.    string cookie=NULL,headers;
  393.    char post[],result[];
  394.    int res;
  395.    ResetLastError();
  396.    int timeout=2000;
  397.    Print(mtctp);
  398.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  399.    if(res==-1)
  400.      {
  401.       Print(__FUNCTION__,"失败:"+mtctp);
  402.      }
  403.    else
  404.      {
  405.       return CharArrayToString(result,0,-1,CP_UTF8);
  406.      }
  407.    return "";
  408.   }
  409. //+------------------------------------------------------------------+
  410. //|                                                                  |
  411. //+------------------------------------------------------------------+
  412. string   查询持仓明细(int account,string set="")
  413.   {
  414.    string mtctp=url+"?mode="+set+"2";
  415.    mtctp=mtctp+"&account="+string(account);
  416.    string cookie=NULL,headers;
  417.    char post[],result[];
  418.    int res;
  419.    ResetLastError();
  420.    int timeout=2000;
  421.    Print(mtctp);
  422.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  423.    if(res==-1)
  424.      {
  425.       Print(__FUNCTION__,"失败:"+mtctp);
  426.      }
  427.    else
  428.      {
  429.       return CharArrayToString(result,0,-1,CP_UTF8);
  430.      }
  431.    return "";
  432.   }
  433. //+------------------------------------------------------------------+
  434. //|                                                                  |
  435. //+------------------------------------------------------------------+
  436. string   查询资金明细(int account,string set="")
  437.   {
  438.    string mtctp=url+"?mode="+set+"3";
  439.    mtctp=mtctp+"&account="+string(account);
  440.    string cookie=NULL,headers;
  441.    char post[],result[];
  442.    int res;
  443.    ResetLastError();
  444.    int timeout=2000;
  445.    Print(mtctp);
  446.    res=WebRequest("GET",mtctp,cookie,NULL,timeout,post,0,result,headers);
  447.    if(res==-1)
  448.      {
  449.       Print(__FUNCTION__,"失败:"+mtctp);
  450.      }
  451.    else
  452.      {
  453.       return CharArrayToString(result,0,-1,CP_UTF8);
  454.      }
  455.    return "";
  456.   }
  457. //+------------------------------------------------------------------+
  458. void Createbutton(string name,string txt1,string txt2,int XX,int YX,int XL,int YL,int WZ,color A,color B,int size)
  459.   {
  460.    if(ObjectFind(0,name)==-1)
  461.       ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
  462.    ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XX);
  463.    ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YX);
  464.    ObjectSetInteger(0,name,OBJPROP_XSIZE,XL);
  465.    ObjectSetInteger(0,name,OBJPROP_YSIZE,YL);
  466.    ObjectSetString(0,name,OBJPROP_FONT,"Microsoft YaHei");
  467.    ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size);
  468.    ObjectSetInteger(0,name,OBJPROP_CORNER,WZ);
  469.    if(ObjectGetInteger(0,name,OBJPROP_STATE)==1)
  470.      {
  471.       ObjectSetInteger(0,name,OBJPROP_COLOR,A);
  472.       ObjectSetInteger(0,name,OBJPROP_BGCOLOR,B);
  473.       ObjectSetString(0,name,OBJPROP_TEXT,txt1);
  474.      }
  475.    else
  476.      {
  477.       ObjectSetInteger(0,name,OBJPROP_COLOR,B);
  478.       ObjectSetInteger(0,name,OBJPROP_BGCOLOR,A);
  479.       ObjectSetString(0,name,OBJPROP_TEXT,txt2);
  480.      }
  481.   }
  482. string m_url="mtctp";
  483. //+------------------------------------------------------------------+
  484. //| Expert tick function                                             |
  485. //+------------------------------------------------------------------+
  486. //+------------------------------------------------------------------+
  487. void OnTimer()
  488.   {
  489.    OnTick();
  490.   }
  491. //+------------------------------------------------------------------+
复制代码





下面这些文件都要下载放到同一个文件夹里面     比如随便建立一个CTP文件夹来放这些文件
运行的时候就运行EXE文件
JSON里面是设置账号密码的。
不想打包成压缩文件了。嫌麻烦








thostmduserapi_se.dll

2.09 MB, 下载次数: 873

必备DLL

thosttraderapi_se.dll

2.38 MB, 下载次数: 893

必备DLL

mfchttp.exe

12.55 MB, 下载次数: 1891

期货服务端文件

login.json

542 Bytes, 下载次数: 188

登录文件

config.json

84 Bytes, 下载次数: 188

服务器文件

mtctpserver.mq5

36.99 KB, 下载次数: 1591

国内期货交易EA定制

公告
1.MT4请下载ex4(mq4是源码,不需要修改或者查看源码则无需下载mq4)

2.MT5请下载ex5(mq5是源码,不需要修改或者查看源码则无需下载mq5)

3.下载使用本网站的EA指标脚本带来的风险自己承担,请模拟测试后再实盘,售出不退,事逼勿扰

4.本网站主要做程序定制开发,欢迎定制 qq:280726108 wx:bucaiea

QQ|订单查询|许可证生成器|网站统计|其他|www.mtctp.com |

GMT+8, 2026-4-12 20:27 , Processed in 0.063097 second(s), 24 queries .

qq 280726108 微信 bucaiea / Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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