mt4创建智能交易系统的步骤

{

o

检测: 账户上的可用保证金...

在分析市场状况之前,检测你的账户上可用的自由保证金可以开仓。

if(AccountFreeMargin()<(1000*Lots)) {

Print(\没有资金.自由保证金 = \AccountFreeMargin()); return(0); }

o

可能是看涨仓位 (BUY)?

进入看涨仓位的条件: MACD 低于零, 向上并且穿过信号线向下。这就是我们在 MQL4中描述的 (注意我们在指标上的业务值保存在先前的变量中):

// 尽可能检测看涨仓位 (BUY)

if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious

MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,

\ if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(\开单 : \ }

else Print(\错误 opening BUY order : \ return(0); }

附加的检验‘山丘’的大小上面已经给出了描述。 MACDOpenLevel变量是一个用户指定变量,它不可能改变程序文本,但是却有很大的灵活性。在程序开始我们插入这个变量的描述。

o

能交易示范 2

2010年02月18日 星期四 10:15 ? 可能是卖空仓位(SELL)?

进入卖空仓位的条件: MACD高于零,向上并且穿过信号线向下。注解如下: // 尽可能的检测卖空仓位(SELL)

if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent {

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, \ if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(\开单 : \ }

else Print(\错误SELL定单开仓 : \ return(0); } return(0); }

? 周期循环检验先前开仓

//进入市场的正确性非常重要 // 但是更重要的是安全退出... for(cnt=0;cnt {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // 检验开仓 OrderSymbol()==Symbol()) // 检验货币对 {

\– \是一个循环的变量必须在程序开始指定如下: int cnt = 0;

?

如果是看涨仓位

if(OrderType()==OP_BUY) // 打开看张仓位 {

o

应该平仓吗?

退出看涨仓位的条件: MACD 穿过信号线, MACD 高于零,向上并穿过信号线向下。

if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) {

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //平仓

return(0); //退出 }

o

应该重设追踪止损马?

我们设定追踪止损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好于先前的水平。

// 检测追踪止损

if(TrailingStop>0) {

if(Bid-OrderOpenPrice()>Point*TrailingStop) {

if(OrderStopLoss() {

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,

OrderTakeProfit(),0,Green); return(0); } } }

我们停止操作符。 } ? 如果是卖空仓位 else //卖空仓位 {

?

应该平仓吗?

退出卖空仓位的条件: MACD穿过信号线,MACD低于零,向上并且穿过信号线向下。

if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious(MACDCloseLevel*Point)) {

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //平仓 return(0); // 退出 }

?

应该重设追踪止损吗?

我们设定追踪止损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好于先前的水平。

// 检测追踪止损

if(TrailingStop>0) {

if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) {

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) {

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,

OrderTakeProfit(),0,Red); return(0); } } }

关闭所有残留开仓。 } } }

return(0); }

这样一步一步地编写我们的智能交易...

智能交易示范 3

2010年02月18日 星期四 10:16

联系客服:779662525#qq.com(#替换为@)