外汇EA智能交易系统使用教程

一、文件放置说明

¤ 指标的mq4、ex4文件,请复制到experts目录下的indicators子目录中。

¤ EA自动交易的mq4、ex4文件,请复制到experts目录下。

¤ tpl文件属于模板文件,需要复制到templates目录下。

¤ DLL文件是库文件,应复制到experts目录下的libraries子目录中。

¤ SET文件为设置文件,请复制到experts目录下的presets子目录。

¤ pdf、txt、doc等格式的说明文档,可以直接打开阅读。

二、EA使用方法

在外汇交易中,使用智能交易系统(EA)来辅助或替代人工操作,已成为一种常见的工具。下面介绍如何在MT4平台中启用EA。

1、首先,你需要拥有一个EA文件,其扩展名必须是ex4。如果只有mq4源文件,需要使用MT4自带的MetaEditor编辑器进行编译(compile),确保无错误后,会在原文件夹生成同名的ex4文件。

2、将生成的ex4文件复制到MetaTrader 4安装目录下的experts文件夹内,例如:D:MetaTraderexperts。完成后,关闭并重新启动MT4平台。

3、在平台“导航”栏的“智能交易系统”列表中,右键点击你想要使用的EA(例如一个10点盈利系统),选择“附加到图表”。

外汇EA的使用介绍

4、随后会弹出设置窗口:

外汇EA的使用介绍

请特别注意,必须勾选“允许实时自动交易”,否则EA将不会执行自动交易指令。

5、MT4平台还有一个总开关,位于“工具”菜单下的“选项”中:

外汇EA的使用介绍

6、此外,工具栏上还有一个按钮必须显示为“启动”状态:

外汇EA的使用介绍

当该按钮显示为以上状态时,表示智能交易系统已全局启用。

7、完成上述所有设置后,图表的右上角会出现EA的文件名和一个笑脸图标。

外汇EA的使用介绍

出现这个标志,意味着当前图表已成功加载并运行EA。之后,系统将根据预设策略自动执行交易。许多交易者会选择在swissquote瑞讯银行官网这类正规平台进行相关操作,以确保交易环境的安全与稳定。

8、如果需要停止EA运行,最直接的方法是点击工具栏上的“智能交易”图标。

外汇EA的使用介绍

但请注意,此操作会停止所有图表上的EA运行,所有笑脸图标将变为叉号。

外汇EA的使用介绍

如果只想停止当前图表的EA,可以按下F7键,会弹出设置窗口:

外汇EA的使用介绍

取消勾选“允许实时自动交易”并确定,当前图表的EA便会停止,图标会变成“哭丧的脸”。

外汇EA的使用介绍

若要完全从当前图表移除EA,需右键点击图表区域,在菜单中选择“智能交易系统”,然后点击“消除”。这样EA将从图表中删除,右上角不再显示任何图标。

外汇EA的使用介绍

四、附:EA的基本概念

EA 是 Expert Advisors 的英文缩写,中文常译为专家顾问或智能交易系统。其核心原理是由电脑程序模拟交易员的决策过程,实现全自动或半自动的交易执行。

一、人工交易流程

以MT4平台为例,一个交易员手工交易的典型步骤如下:

1. 打开交易客户端,选择一个货币对的图表。

2. 观察该货币对的K线走势图(盯盘),寻找符合自己策略的开仓或平仓时机。

3. 当条件满足时,执行下单操作(做多或做空)或平仓操作。

4. 继续回到第二步盯盘,如果之前是开仓,则寻找平仓条件。

5. 平仓条件满足时,执行平仓,并计算该笔交易的盈亏。

6. 若继续交易,则重复步骤2至5。

7. 停止交易时,退出客户端。

三、 相关MQL语言知识

为了实现自动化交易,需要了解MQL4语言的基础知识:

1. 掌握MQL4语言的基本语法、程序结构及运行流程。语法部分可参考专门资料,此处不展开。

一个智能交易系统EA程序主要由三个函数构成:

init(): 初始化函数,负责程序变量及数据的初始设置,仅在程序加载时执行一次。

deinit(): 反初始化函数,负责程序退出时清理内存中的数据,也仅执行一次。

start(): 主函数,负责EA全部的交易管理与执行逻辑,会以几秒为间隔循环执行,直到程序退出。

程序运行流程为:启动EA后,先执行一次init(),然后start()循环执行,最后退出时执行一次deinit()。

2. mql4中常用的交易函数:

开仓函数:

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, void comment, void magic, void expiration, void arrow_color)

此函数用于执行开仓或挂单操作。

主要参数:

symbol – 交易货币对。

cmd – 交易方向(做多或做空)。

volume – 交易手数。

price – 订单执行价格。

slippage – 允许的最大滑点。

stoploss – 止损价位。

takeprofit – 止盈价位。

comment – 订单注释。

magic – 订单魔术码,用于唯一标识。

expiration – 挂单有效期。

arrow_color – 图表中标记的颜色。

平仓函数:

bool OrderClose( int ticket, double lots, double price, int slippage, void Color)

此函数用于对指定订单进行平仓。成功返回true,失败返回false,可通过GetLastError()获取错误详情。

主要参数:

ticket – 订单编号。

lots – 平仓手数。

price – 平仓价格。

slippage – 最高允许滑点。

Color – 图表中标记颜色。

订单修改函数:

bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, void arrow_color)

此函数用于修改已有订单的参数,如止损止盈价位。成功返回TRUE,失败返回FALSE。

主要参数:

ticket – 订单编号。

price – 新的订单价格(适用于挂单修改)。

stoploss – 新的止损价位。

takeprofit – 新的止盈价位。

expiration – 新的挂单有效期。

arrow_color – 图表标记颜色。

五、源码的交易流程分析

下面是一个基于移动平均线的简易EA源码,它结构简洁但功能完整,实现了全自动的开仓、平仓与移动止损。

程序代码分析:

//+——————————————————————+

//—- input parameters

extern double TakeProfit = 20;

extern double StopLoss = 30;

extern double Lots = 2;

extern double TrailingStop = 50;

extern int ShortEma = 5;

extern int LongEma = 60;

//+——————————————————————+

//| expert initialization function |

//+——————————————————————+

int init()

{

//—-

//—-

return (0);

}

//+——————————————————————+

//| expert deinitialization function |

//+——————————————————————+

int deinit()

{

//—-

//—-

return (0);

}

//+——————————————————————+

//| expert start function |

//+——————————————————————+

int start()

{

int cnt, ticket, total;

double SEma, LEma;

//—-

if (Bars < 100)

{

Print(“bars less than 100”);

return (0);

}

//—-

if (TakeProfit < 10)

{

Print(“TakeProfit less than 10”);

return (0); // check TakeProfit

}

//—-

SEma = iMA(NULL, 0, ShortEma, 0, MODE_EMA, PRICE_CLOSE, 0);

LEma = iMA(NULL, 0, LongEma, 0, MODE_EMA, PRICE_CLOSE, 0);

//—-

static int isCrossed = 0;

isCrossed = Crossed(LEma, SEma);

//—-

total = OrdersTotal();

if (total < 1)

{

if (isCrossed == 1) // 满足空仓条件,开空仓

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + StopLoss * Point,

Bid – TakeProfit * Point, “EMA_CROSS”, 12345, 0, Green);

if (ticket > 0)

{

if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print(“SELL order opened : “, OrderOpenPrice());

} else

Print(“Error opening SELL order : “, GetLastError());

return (0);

}

if (isCrossed == 2) // 满足多仓条件,开多仓

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask – StopLoss * Point,

Ask + TakeProfit * Point, “EMA_CROSS”, 12345, 0, Red);

if (ticket > 0)

{

if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Print(“BUY order opened : “, OrderOpenPrice());

} else

Print(“Error opening BUY order : “, GetLastError());

return (0);

}

return (0);

}

//—- 订单修改,实现动态止盈止损跟踪

for (cnt = 0; cnt < total; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderType() <= OP_SELL && OrderSymbol() == Symbol())

{

if (OrderType() == OP_SELL) // long position is opened

{

// check for trailing stop

if (TrailingStop > 0)

{

if (Bid – OrderOpenPrice() > Point * TrailingStop)

{

if (OrderStopLoss() < Bid – Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(),

Bid – Point * TrailingStop,

OrderTakeProfit(), 0, Green);

return (0);

}

}

}

} else // go to short position

{

// check for trailing stop

if (TrailingStop > 0)

{

if ((OrderOpenPrice() – Ask) > (Point * TrailingStop))

{

if ((OrderStopLoss() > (Ask + Point * TrailingStop)))

{

OrderModify(OrderTicket(), OrderOpenPrice(),

Ask + Point * TrailingStop,

OrderTakeProfit(), 0, Red);

return (0);

}

}

}

}

}

}

//—-

return (0);

}

//+——————————————————————+

// 移动平均线多空条件判断,

int Crossed(double line1, double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//Don’t work in the first load, wait for the first cross!

static bool first_time = true;

if (first_time == true)

{

first_time = false;

return (0);

}

//—-

if (line1 > line2)

current_direction = 2; //up 多头市场 上穿做多

if (line1 < line2)

current_direction = 1; //down 空头市场 下穿做空

//—-

if (current_direction != last_direction) //changed 多空改变 {

last_direction = current_direction;

return (last_direction);

else return (0); //not changed

}

六、本文结论

综上所述,EA智能交易系统实质上是通过程序化手段,将交易员的决策逻辑代码化,并由电脑自动执行交易的过程。其标准工作流程可归纳如下:

1. 用户启动外汇交易平台(如MT4/MT5),并加载预先设置好的EA程序。

2. EA程序开始运行后,自动监控指定货币对的行情图表,持续扫描符合其策略的开仓信号。

3. 一旦开仓条件被触发,EA将自动执行下单操作(做多或做空)。

4. 开仓后,EA继续监控市场,寻找预设的平仓条件。

5. 平仓条件满足时,EA自动执行平仓,并完成该次交易的盈亏结算。

6. 如果用户设置持续交易,EA将不断重复步骤2至5的循环。

7. 用户可以通过禁用EA或关闭交易平台来终止自动交易。在选择使用EA时,确保在一个安全可靠的交易环境至关重要,例如通过swissquote瑞讯银行官网等官方渠道获取和使用相关工具。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注