手机版

如何编制外汇EA自动交易系统

阅读 :
外_汇_邦 WaiHuiBang.com

    以下是一些简单的源码,供参考学习。

 

    //+------------------------------------------------------------------+ //| designed by okwh, china | //| copyright 2007, okwh dxdcn | //| | //+------------------------------------------------------------------+

 

    #property copyright "copyright 2007 , dxd, china." #property link "" #define magicma 200610011231 //+------------------------------------------------------------------+

 

    //| 注意没有指标文件那些property | //+------------------------------------------------------------------+ extern int whichmethod = 1; //1~4 种下单方式 1 仅开仓, 2 有止损无止赢, 3 有止赢无止损, 4 有止赢也有止损 extern double takeprofit = 100; //止赢点数 extern double stoploss = 20; //止损点数 extern double maximumrisk = 0.3; //资金控制,控制下单量 extern double trailingstop =25;

 

    //跟踪止赢点数设置 extern int maxopen = 3; //最多开仓次数限制 extern int maxlots = 5; //最多单仓持仓量限制 extern int bb = 0; //非零就允许跟踪止赢 extern double matrendperiod=26;

 

    //使用26均线 开仓条件参数 本例子 int i, p2, xxx,p1, res; double lots; datetime lasttime; //时间控制, 仅当一个时间周期完成才检查条件 int init() //初始化 { lots = 1; lasttime = null; return(0); } int deinit() { return(0); }

 

    //反初始化 //主程序 int start() { checkforopen(); //开仓 平仓 条件检查 和操作 if (bb>0) ctp(); //跟踪止赢 return(0); }

 

    //+------下面是各子程序--------------------------------------------+ double lotsoptimized() //确定下单量,开仓调用 资金控制 { double lot=lots; int orders=historytotal();

 

    // history orders total int losses=0; // number of losses orders without a break //marketinfo(symbol(),mode_minlot); 相关信息 //marketinfo(symbol(),mode_maxlot);

 

    //marketinfo(symbol(),mode_lotstep); lot=normalizedouble(maximumrisk * accountbalance()/accountleverage(),1); //开仓量计算 if(lot<0.1) lot=0.1; if(lot>maxlots) lot=maxlots; return(lot); }

 

    //平仓持有的买单 void closebuy() { if (orderstotal( ) > 0 ) { for(i=orderstotal()-1;i>=0;i--) { if(orderselect(i,select_by_pos,mode_trades)==false) break; if(ordertype()==op_buy)

 

    { orderclose(orderticket(),orderlots(),bid,3,white); sleep(5000); } } } } //平仓持有的卖单 void closesell() { if (orderstotal( ) > 0 ) { for(i=orderstotal()-1;i>=0;i--)

 

    { if(orderselect(i,select_by_pos,mode_trades)==false) break; if(ordertype()==op_sell) { orderclose(orderticket(),orderlots(),ask,3,white); sleep(5000); } } } }

 

    //判断是否买或卖或平仓 int buyorsell() //在这个函数计算设置你的交易信号 这里使用macd 和ma 做例子

 

    { double macdcurrent, macdprevious, signalcurrent; double signalprevious, macurrent, maprevious; macdcurrent=imacd(null,0,12,26,9,price_close,mode_main,0);

 

    macdprevious=imacd(null,0,12,26,9,price_close,mode_main,1); signalcurrent=imacd(null,0,12,26,9,price_close,mode_signal,0);

 

    signalprevious=imacd(null,0,12,26,9,price_close,mode_signal,1); macurrent=ima(null,0,matrendperiod,0,mode_ema,price_close,0);

 

    maprevious=ima(null,0,matrendperiod,0,mode_ema,price_close,1); if(macdcurrent<0 && macdcurrent>signalcurrent && macdpreviousmaprevious) return (1);

 

    // 买 ma在上升,macd在0线上,并且两线上交叉 if(macdcurrent>0 && macdcurrentsignalprevious && macurrent

外_汇_邦 WaiHuiBang.com
本文标题:如何编制外汇EA自动交易系统 - MT4平台MQL4编程学习
本文地址:https://www.waihuibang.com/fxschool/autotrading/mql4/40608.html

相关文章

  • MQL编程时循环结构中break、continue、return和exit的区别
    MQL编程时循环结构中break、continue、return和exit的区别

    break语句的使用场合主要是switch语句和循环结构。在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行switch语句中的break语句时,仅退出switch语句,不会退出外面的循环结构。通过图3-17,读者可以很直观地了解break语句的使...

    MQL4编程学习
  • 非对称型网格交易法
    非对称型网格交易法

    1,在H1图上建立MA800的平均移动线.MA800大致就是一个半月的均线,用于找到一定时期内的价格重心。2,在MA800的上、下方600点位置为边界。 3,当处于上边界线时,BUY为0.01手,SELL为0.2手;反之,在下边界线时,BUY为0.2手,SELL为0....

    MQL4编程学习
  • MT4平台的优势在哪里

    我们在外汇交易的时候,选择一个最好的外汇平台就像是在战场上选择最好的武器一样的重要,有了利器,交易者才能在交易当中获得成功,在外汇在线交易的市场当中,交易者有很多的交易平台可以使用,但是在所有的外汇平台当中,MT4...

    MQL4编程学习
  • 阿里云产品代金券、阿里云ECS云服务器优惠券及其他Aliyun ECS最新优惠活动
    阿里云产品代金券、阿里云ECS云服务器优惠券及其他Aliyun ECS最新优惠活动

    最近几年国内云主机/VPS市场竞争异常激烈,包括阿里云、腾讯云等巨头纷纷涉足云计算市场。阿里云从开始合并万网域名开始,然后单独阿里云品牌平台,通过各种资源整合、高性价比的产品和活动促销吸引到很多的国内用户,逐渐坐...

    MQL4编程学习
  • 外汇EA编程教程――操作符与表达式

      简介: 计算操作符有 +,-,*,/ 。%(求余),bool类型运算符(&&代表“与”,||代表“或”)。赋值运算符,=,+=,*=. 1 表达式,例如: a++; b = 10; x = (y * z) / (w + 2) + 127; 表达式必须以;号结尾。 2 算术运算,例如: 加...

    MQL4编程学习
你可能感兴趣