怎样编制外汇EA自动交易系统

阅读 :
欢迎访问 外 汇 邦 WWW.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

欢迎访问 外 汇 邦 WWW.WaiHuiBang.com
本文标题:怎样编制外汇EA自动交易系统 - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/40602.html

相关文章

  • EA编程教程大全之价格函数

    任何可见货币对/时间周期的价格数据的一组函数。iBars iBarShift iClose iHigh iHighest iLow iLowest iOpen iTime iVolume int iBars( string symbol, int timeframe)在指定的图表内返回柱的数量。...

    MQL4编程学习
  • MT4平台自带的EA:Moving Average详解

    由于本站模板宽度的制约,看着会比较凌乱,建议复制本文内容,粘贴在记事本中,方便阅读。 使用过MT4平台的人都知道,MT4平台自带了一个自动交易的EA指标,那就是Moving Average ,下面我们详细解释一下该指标的语句功能,以便各...

    MQL4编程学习
  • 如何避免EA优化过度

    经常有人提及MT4历史测试无用论,以前确实有历史测试和真实测试不相符的情况,随着mt多次升级,比对真实测试和历史测试,现在可以说比较准确,历史测试进行优化碰到比较多的是优化过度的问题,这个和mt历史测试无关,再精确的测...

    MQL4编程学习
  • EA是外汇交易的圣杯吗?

    EA程序化系统虽然相对人而言更有客观性更有执行力,也是阿右能够接受和认可的工具,但是系统优化与执行效率、概率事件与实际序列分布、变量与系统绩效评价是量化策略的三大悖论,将交易获利的希望完全建立在完美的一套E...

    MQL4编程学习
  • MQL4基础:运算符和表达式

    目录[hide]表达式算术运算符赋值运算符 关系运算符 布尔运算符 位运算符 其他运算符 优先级规则 某些数字和字符的组合是特别重要的,它们被称为运算符,例如:算术运算符:+ &#8211; * / %逻辑运算符:&& ||赋值运...

    MQL4编程学习
你可能感兴趣