适用于MT4的交易代码示例:突破挂单策略
适用于MT4的突破挂单策略代码示例
以下代码示例展示了如何在 MetaTrader 4 (MT4) 平台上实现一个简单的突破挂单策略。该策略会在价格突破预设的点数阈值时自动下单。mq4extern int magicNumber = 92133; // 用于标识该策略订单的唯一魔数extern double initialLotSize = 0.5; // 初始交易手数extern double profitTarget = 80.0; // 止盈点数extern int maxReentries = 4; // 最大重复入场次数extern int pipsThreshold = 100; // 突破点数阈值
void OnTick(){ // 检查是否有持仓或挂单 int ordersCount = OrdersTotal(); int pendingCount = OrdersTotalHistory();
bool hasOpenPositions = false; bool hasPendingOrders = false;
// 检查是否有该策略的持仓订单 for (int i = 0; i < ordersCount; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == magicNumber && OrderType() <= OP_SELL) { hasOpenPositions = true; break; } } }
// 检查是否有该策略的挂单 for (int i = 0; i < pendingCount; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderMagicNumber() == magicNumber && OrderType() <= OP_SELLSTOP) { hasPendingOrders = true; break; } } }
// 当没有持仓且没有挂单时,触发挂单 if (!hasOpenPositions && !hasPendingOrders) { double currentBid = MarketInfo(Symbol(), MODE_BID); double currentAsk = MarketInfo(Symbol(), MODE_ASK);
double buyStopPrice = currentAsk + pipsToPoints(pipsThreshold); double sellStopPrice = currentBid - pipsToPoints(pipsThreshold);
// 下达做多挂单 int ticket = OrderSend(Symbol(), OP_BUYSTOP, initialLotSize, buyStopPrice, 0, 0, 0, 'Buy Stop Order', magicNumber, 0, Blue);
// 下达做空挂单 ticket = OrderSend(Symbol(), OP_SELLSTOP, initialLotSize, sellStopPrice, 0, 0, 0, 'Sell Stop Order', magicNumber, 0, Red); }
// 计算总盈利 double totalProfit = 0.0;
for (int i = 0; i < ordersCount; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == magicNumber) { totalProfit += OrderProfit(); } } }
// 当总盈利达到止盈金额时进行平仓 if (totalProfit >= profitTarget) { // 平掉所有持仓订单 for (int i = ordersCount - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == magicNumber) { OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 4, Red); } } }
// 删除所有挂单 for (int i = pendingCount - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderMagicNumber() == magicNumber) { OrderDelete(OrderTicket()); } } }
Sleep(60000); // 等待1分钟后重新开始判断
// 可以在这里添加重新进入市场的逻辑 }
// 其他逻辑...}
// 将点数转换为点值double pipsToPoints(int pips){ return pips * Point;}
代码说明:
magicNumber: 用于标识该策略订单的唯一魔数,方便管理和区分不同的EA。*initialLotSize: 初始交易手数,可以根据您的风险偏好进行调整。*profitTarget: 止盈点数,当总盈利达到该值时,会自动平仓所有订单。*maxReentries: 最大重复入场次数,用于限制策略在一段时间内的交易次数。*pipsThreshold: 突破点数阈值,当价格突破该阈值时,会触发挂单。
使用方法:
- 将以上代码保存为 .mq4 文件。2. 将 .mq4 文件复制到您的 MT4 安装目录下的 \MQL4\Experts 文件夹中。3. 在 MT4 的 “导航器” 窗口中,找到 “EA交易” 目录,右键单击该目录,选择 “刷新”。4. 您的 EA 现在应该出现在 “EA交易” 目录下了。5. 将 EA 拖放到您要交易的货币对的图表上。6. 在弹出的 “EA属性” 窗口中,配置 EA 的参数,例如魔数、手数、止盈点数等。7. 点击 “确定” 按钮以启动 EA。
注意:
- 这只是一个简单的示例代码,您需要根据自己的需求进行修改和测试。* 在使用任何 EA 之前,请务必了解其工作原理并进行充分的测试。* 交易外汇和差价合约存在风险,请谨慎投资。
原文地址: https://www.cveoy.top/t/topic/dr0M 著作权归作者所有。请勿转载和采集!