系统交易

基于概率理论的外汇交易专家顾问——MetaTrader 5平台应用
MetaTrader5
基于概率理论的外汇交易专家顾问——MetaTrader 5平台应用

大家好!今天我想跟大家分享一个我早期的创意,这个代码是一个适用于MetaTrader 5平台的外汇交易专家顾问(EA),它利用概率理论来判断金融工具的价格上涨和下跌的概率。 这个EA会分析一定数量的历史价格数据(默认是10000根K线),并计算在设定的点数(默认是400点)范围内,价格在指定的K线数量(默认是50根)内,收盘价高于或低于开盘价的次数。基于这些数据,EA会计算出价格上涨和下跌的概率,并将结果显示在图表的注释中。 此外,EA还可以根据计算出的概率进行交易操作。如果价格上涨的概率超过51%,EA会开一个买入头寸;如果价格下跌的概率超过51%,则会开一个卖出头寸。 在开仓时,EA可以使用固定的手数,或者根据设定的风险和当前账户余额来计算手数。如果设置了止损和止盈值,EA会在开仓时自动调整到相应的水平。 要开始使用这个EA,您需要将下面的标志设置为True: input bool EnableCheckBars = false; 需要注意的是,这个EA不会直接盈利。关于计算价格波动、波浪、达到止损和止盈的概率,都是些无稽之谈。市场的复杂性远超过这些简单的算法和想法。 希望这个分享能对大家的交易有所帮助!如果有任何疑问或想法,欢迎在下方留言讨论。

2025.11.04
ExpPinBar:基于Pin Bar价格行为模式的智能交易顾问
MetaTrader5
ExpPinBar:基于Pin Bar价格行为模式的智能交易顾问

ExpPinBar智能交易顾问是一款基于价格行为Pin Bar指标的交易策略工具。它会根据指标发出的信号来开启交易头寸。为了更好地管理已开仓位,系统提供了强大的跟踪功能,利用跟踪库,支持经典跟踪、抛物线SAR指标、移动平均线AMA、DEMA、FRAMA、MA、TEMA、VIDYA等多种方式,以及根据蜡烛影线的高低水平进行跟踪。 Pin Bar指标设置: 蜡烛最低高度 - 蜡烛的最低高度(以点为单位)设置要分析的蜡烛的最低高度(即高点与低点的差距)。小于此高度的蜡烛将被指标忽略,有助于排除不重要或“噪音”的蜡烛。提高该值可以过滤低波动市场的弱信号; 蜡烛实体相对于影线的最大大小 - 蜡烛实体的最大大小(相对于整根蜡烛的大小,从0到1)定义蜡烛实体(开盘价与收盘价之间的差距)相对于整根蜡烛高度的最大允许大小。值越小,长影线和小实体的信号越明显,即经典的Pin Bars。要找到最“干净”的Pin Bars,建议使用值0.2 - 0.4; 实体相对于前一根蜡烛的位置 (范围从0到1)该参数定义了Pin Bar实体可以深入前一根蜡烛范围的深度。值越小,实体位置越接近范围边缘,符合经典的反转模式。建议使用0.2-0.4的值,寻找Pin Bar实体位于前一根蜡烛边缘附近的信号; 影线的长宽比 (系数)设置主影线(卖出Pin Bar的上影线,买入Pin Bar的下影线)与相对影线之间的最小比例。值越高,主影线相对于对侧影线的明显程度越高。值在1.5 - 2.5之间可以过滤信号,仅保留长影线明显的蜡烛。 顾问设置: 头寸大小 - 头寸的交易量; 滑点(以点为单位) - 执行时允许的最大价格偏差,以点为单位设置; 魔术号码 - 魔术号码; 止损(以点为单位),0 - 无,-1 - 按Pin Bar影线 - 止损(以点为单位),0 - 无,-1 - 按Pin Bar影线价格; 止盈(以点为单位),0 - 无 - 止盈(以点为单位),0 - 无; 止损偏差(以点为单位) - 止损偏差以点为单位。 跟踪设置: 跟踪类型 - 跟踪类型 跟踪起始点 - 开始跟踪的利润(以点为单位) 跟踪步长(以点为单位) - 价格的跟踪步长(以点为单位) 跟踪偏移(以点为单位) - 从价格的跟踪偏移(以点为单位) 在跟踪中使用的指标设置: 指标时间框架 - 用于跟踪计算的指标时间框架。 MA周期 - 移动平均计算周期 MA偏移 - 移动平均的水平偏移。 AMA快 EMA周期 - 快速EMA自适应移动平均的计算周期。 AMA慢 EMA周期 - 慢速EMA自适应移动平均的计算周期 VIDYA CMO周期 - 动态平均周期的移动平均CMO周期。 抛物线SAR步长 - 抛物线SAR步长 抛物线SAR最大值 - 抛物线SAR的最大值 MA应用价格 - 移动平均计算的价格 MA平滑方法 - 移动平均平滑类型。 指标数据索引 - 从指标接收的数据的条形数据 要正常使用该智能顾问,需要iPinBars指标和跟踪类库。 以下是该智能顾问在过去一年对EURUSD H4进行固定止损水平和简单跟踪时的示例:

2025.10.22
基于WPR、布林带和ATR指标的简单交易顾问 - MetaTrader 5专家
MetaTrader5
基于WPR、布林带和ATR指标的简单交易顾问 - MetaTrader 5专家

简单易用的交易顾问 大家好,今天我想和大家分享一个非常实用的交易顾问——ExpWPRBB。这个顾问采用了一种简单的交易策略,主要基于两个指标的信号:威廉姆斯百分比范围(WPR)和布林带(BB)。只有当这两个指标的信号一致时,才会开仓: 买入:WPR从超卖区退出,并且当前K线的开盘价低于布林带的中间线。 卖出:WPR从超买区退出,并且当前K线的开盘价高于布林带的中间线。 布林带的宽度和ATR值会用来计算止损和获利水平。这个交易顾问仅支持在对冲账户上操作。此外,它还提供了非交易模式,可以在策略测试器的可视化模式中仅显示信号标签,以便于信号的控制。 输入参数概览 WPR(威廉姆斯百分比范围) InpPeriodWPR - WPR计算周期。用于计算指标值的K线数量。 InpOverboughtWPR - WPR超买水平。超出此值即被视为市场超买(通常在-20到0之间); InpOversoldWPR - WPR超卖水平。低于此值即被视为市场超卖(通常在-80到-100之间)。 BB(布林带) InpPeriodBB - 布林带计算周期。用于计算布林带的K线数量。 InpDeviationBB - 布林带的偏差。用于计算布林带宽度的标准差倍数。 InpShiftBB - 布林带的偏移量。相对于当前K线的指标偏移。 InpPriceBB - 布林带计算价格。用于计算的价格类型。 ATR(平均真实范围) InpPeriodATR - ATR计算周期。用于计算平均真实范围的K线数量。 交易设置 InpSignalsOnly - 不进行交易,仅设置信号标签。如果设为真,顾问将不会开仓,只会在图表上显示信号; InpVolume - 开仓的手数。每笔交易的手数大小; InpDeviation - 滑点(以点为单位)。执行订单时允许的最大价格偏差; InpMagic - 魔术数字。用于跟踪EA仓位的唯一标识符; InpStopLoss - 止损(以点为单位)。止损水平。0表示不设置,-1表示按布林带宽度的一半计算; InpTakeProfit - 获利(以点为单位)。获利水平。0表示不设置,-1表示按ATR值计算; InpSLMltp - 止损大小的倍数,如果止损== -1。允许增加或减少自动计算的止损; InpTPMltp - 获利大小的倍数,如果获利== -1。允许增加或减少自动计算的获利。 默认的输入参数值经过优化,适合在H4图表周期上进行测试。 以下是使用默认参数在H4上进行的“所有报价”模式的测试结果:

2025.10.21
掌握Ichimoku Edge:MT4平台上的智能交易助手
MetaTrader4
掌握Ichimoku Edge:MT4平台上的智能交易助手

Ichimoku Edge是基于标准的一目均衡表指标,并使用默认设置。它通过迟行线与价格的交叉生成买入和卖出信号,这些信号通过价格和迟行线相对于云层(Kumo)的位置来确认。 回测结果 策略逻辑 当迟行线从下方穿越价格时,产生买入信号,确认条件为当前价格和迟行线均位于云层之上。 当迟行线从上方穿越价格时,产生卖出信号,确认条件为当前价格和迟行线均位于云层之下。 当出现相反的信号时,所有未平仓的交易会自动关闭。 不使用固定的止损或止盈,退出策略完全依赖于信号的反转。 资金管理支持两种仓位大小模式: 固定手数 — 交易使用预定义的交易量。 基于ATR的手数调整 — 根据风险百分比或资金价值动态调整手数,使用平均真实波幅(ATR)指标。 主要输入参数一目均衡表设置: 短期线 = 9 基准线 = 26 领先线 = 52 资金管理: 手数 — 固定仓位大小。 资金管理 — 启用基于ATR的风险管理。 ATR_周期,ATR_乘数 — ATR设置。 风险 / 资金风险 — 百分比或固定金额风险。 使用资金而非百分比 — 切换风险计算方式。 使用权益而非余额 — 基于权益风险。 手数精度 — 经纪商手数的精度。 其他设置: 订单备注 — 订单标签。 滑点 — 允许的最大滑点。 魔术数字 — 独特的EA标识符。 注意事项该EA在高时间周期和趋势市场中表现最佳。在实际使用之前,建议测试不同的一目均衡表和ATR设置,以获得最佳结果。

2025.10.06
Babi Ngepet - 一款适用于MetaTrader 5的交易专家顾问
MetaTrader5
Babi Ngepet - 一款适用于MetaTrader 5的交易专家顾问

专家顾问参数设置 这款EA提供了多个可调节的外部参数,用户可以根据需要修改这些参数以控制其行为: 通用参数 参数 类型 描述 MagicNumber 整型 EA交易的唯一标识符。 InitialLot 双精度 一系列交易中第一笔交易的起始手数。 AllowBuy 布尔型 允许EA开启买入交易的标志(初始交易和马丁格尔交易)。 AllowSell 布尔型 允许EA开启卖出交易的标志(初始交易和马丁格尔交易)。 TakeProfit 整型 用于下挂限单的固定止盈点数(市场执行时不适用)。 FindHighLowBackBars 整型 用于确定初始挂单时查找最高点和最低点的回溯条数。 ResetAfterBars 整型 在没有持仓的情况下,经过多少根K线后删除初始挂单并重新评估。 马丁格尔策略 参数 类型 描述 ReverseMartingale 布尔型 如果为真,后续马丁格尔交易将与系列中最后一笔交易的方向相反(这通常是反马丁格尔或对冲策略,但如果为假,代码将以相同方向开仓)。 LotMultiplier 双精度 在亏损系列中的下一笔交易中,手数乘以的因子(例如,2.0表示翻倍手数)。 SecureProfitMartingaleTarget 双精度 在该总浮动盈利(以账户货币计)下,关闭所有开放交易的目标。 DistanceMartingalePips 整型 在最后一笔交易开仓价相反移动多少点(点数)后,才会开启新的马丁格尔交易。 MaxTradesInSeries 整型 单个马丁格尔系列中允许的最大交易数量。 时间策略 参数 类型 描述 AllowMonday... AllowFriday 布尔型 启用或禁用特定星期几交易的标志。 ForbiddenDates 字符串 禁止交易的日期(格式YYYY.MM.DD)的逗号分隔列表。 核心功能概述 OnInit()(初始化) 设置EA的MagicNumber、保证金模式和偏差。它重置马丁格尔状态变量(s_currentLot、s_totalTradesInSeries等)为初始值,为新的开始做准备。 OnDeinit()(去初始化) 一个简单的清理函数,当EA停止或移除时打印消息。 IsTradingDateAllowed()和IsTradingDayAllowed()(交易过滤器) 这些函数检查当前日期和时间是否符合用户定义的输入(AllowMonday至AllowFriday和ForbiddenDates),以决定是否允许交易。 OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment)(市场执行) 此函数处理新市场仓位的开仓(买入或卖出)。 验证并标准化手数,以符合经纪商的最小、最大和步进要求。 使用CheckMargin()检查是否有足够的可用保证金。 在没有固定的止盈或止损的情况下执行交易(tp_calculated为0)。 更新全局马丁格尔状态变量:s_currentLot、s_lastOpenPrice、s_seriesType和s_totalTradesInSeries。 CloseAllPositions() 遍历所有当前开放的仓位,关闭由该EA(匹配MagicNumber)开设的所有仓位。 PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment)(挂单设置) 此函数放置买入限价单或卖出限价单: 验证手数并检查保证金是否足够。 确认入场价格与经纪商的最小距离(SYMBOL_TRADE_STOPS_LEVEL)是否符合。 基于TakeProfit输入计算固定的止盈(tp)。 发送交易请求。注意:UpdateHighLowAndOrders函数调用此函数放置初始的买入限价单和卖出限价单。 UpdateHighLowAndOrders()(初始入场逻辑) 当没有持仓时,这是初始入场机制: 回溯FindHighLowBackBars,查找最高点和最低点。 计算priceSellLimit(最高点 + 1 tick)和priceBuyLimit(最低点 - 1 tick)。 检查是否已经存在带有EA的MagicNumber的买入限价单和卖出限价单。 在最近最高点之上放置初始的卖出限价单,在最近最低点之下放置初始的买入限价单, 每个单子使用InitialLot。 OnTick()(主逻辑) EA执行逻辑的核心: 时间检查:防止在同一tick上进行重复计算。 过滤检查:如果不允许某天/日期交易,则删除所有挂单。 盈利目标检查(系列退出):如果eaHasOpenPositions为真且totalFloatingProfit大于等于SecureProfitMartingaleTarget,则调用CloseAllPositions()并重置所有马丁格尔状态变量以开始新的系列。 初始订单放置:如果!eaHasOpenPositions且允许交易,则重置马丁格尔状态并检查是否形成了新K线。 如果形成了新K线,检查barsCount是否大于等于ResetAfterBars。如果是,则删除挂单并调用UpdateHighLowAndOrders()放置新的初始订单。如果不是,则仅调用UpdateHighLowAndOrders()。 马丁格尔步骤逻辑:如果eaHasOpenPositions为真且s_totalTradesInSeries小于MaxTradesInSeries: 检查totalFloatingProfit是否为负数且价格是否相对于最后一笔开仓交易移动了至少DistanceMartingalePips。 如果两个条件都满足,则计算下一笔手数,通过s_currentLot乘以LotMultiplier。 确定orderToOpen的方向(根据ReverseMartingale决定与系列相同或相反的方向)。 调用OpenTradeLogic()以开设新的、乘以手数的仓位,继续马丁格尔系列。 策略总结 "Babi Ngepet" EA实施了一种高风险但潜在高回报的马丁格尔策略,结合了突破/区间反转的初始入场: 初始入场:EA在最近低点下方放置初始的买入限价单,在最近高点上方放置初始的卖出限价单。这暗示着初始假设为区间行为——当价格下跌到低点时买入,价格上涨到高点时卖出。 交易管理:如果初始交易之一被触发,且持仓出现整体亏损(负浮动盈利),并且价格继续朝着开放仓位的方向移动到定义的距离,EA将在相同方向上以更大的手数(马丁格尔)开设新仓位。 退出策略:交易系列将继续增加手数,直到所有交易的整体浮动盈利达到SecureProfitMartingaleTarget,此时所有持仓将被关闭,EA将重置以准备新的系列。 警告:马丁格尔策略以其高回撤和高资本损失风险而闻名,因为每次亏损后手数都会增加。

2025.10.05
利用零售情绪交易的MetaTrader 4智能交易助手
MetaTrader4
利用零售情绪交易的MetaTrader 4智能交易助手

Ziwox零售情绪智能交易助手 简介: 这个智能交易助手(EA)利用Ziwox API提供的零售交易者情绪,结合简单的技术过滤器来进行逆向交易决策。简单来说:如果大多数零售交易者持有多头,我们就考虑卖出;如果大多数持有空头,我们就考虑买入。通过将情绪分析与移动平均趋势确认相结合,该EA为基于市场集体行为的交易提供了一种智能的方法。 相关代码和实现可以参考这篇MQL5文章 零售情绪为何重要: 零售交易者情绪反映了市场中小型交易者的持仓和偏见。众所周知,由于情绪交易、糟糕的风险管理或对新闻的过度反应,零售交易者常常会站在市场走势的错误一边。通过分析零售交易者的多空比例,我们可以采用逆向策略,往往与机构流向和更广泛的市场趋势相一致。 情绪分析可以帮助交易者: 识别过度延伸的市场状况。 及早检测潜在反转。 用行为洞察增强技术分析。 通过避免拥挤的交易来降低风险。 EA的工作原理: 这个EA通过Ziwox API获取零售情绪数据,并结合移动平均交叉过滤器: API集成: 使用GetAPI函数,EA向Ziwox的端点发送网络请求,以获取JSON格式的情绪数据。数据包括零售多头比例、零售空头比例和风险情绪等关键字段。然后,使用JsonDataParse将JSON解析为数组(APIJSON)。 逆向逻辑: 如果零售多头比例 >= 60% 并且快速移动平均线在慢速移动平均线之上,EA将考虑进行卖出交易。 如果零售空头比例 >= 60% 并且快速移动平均线在慢速移动平均线之下,EA将考虑进行买入交易。 这确保了交易是逆向零售情绪的,同时仍符合技术趋势确认。 技术过滤器: 简单移动平均线(iMA)使用用户定义的周期(shortMAPeriod和longMAPeriod)来过滤交易。只有与移动平均趋势一致的交易才会被执行。 自动交易: 当启用AutoTrade时,EA会自动开单,通过IsNewCandle()检查新蜡烛,并确保不会重复交易(OrdersTotal())。 可视化: EA使用DrawSentiment和ButtonCreate在图表上绘制情绪指标,以清晰的颜色编码方式显示零售多头和空头比例。绿色表示多头,红色表示空头。 关键代码组件解释: GetAPI:处理对Ziwox的API调用,管理速率限制、重试,并将数据保存到JSON文件。 JsonDataParse:读取JSON文件,解析情绪值,并将其存储在APIJSON数组中,以供交易逻辑使用。 OnTick:每个tick检查条件,应用逆向逻辑和移动平均趋势过滤器,并在符合标准时发送订单。 DrawSentiment & ButtonCreate:直接在MT4图表上可视化情绪,提供即时洞察。 IsNewCandle:确保每个新蜡烛只检查一次交易,以避免在同一蜡烛上多次执行。 使用说明: 将EA放入MT4的Experts文件夹中。 在APIKey字段中输入您的Ziwox API密钥。 根据需要调整shortMAPeriod和longMAPeriod。 如果希望完全自动化交易,请将AutoTrade设置为true。 将EA加载到任何交易品种的图表上。它将获取情绪,进行可视化,并根据逆向策略进行交易。 总结: 这个EA结合了零售情绪中的行为金融洞察与技术分析,提供了一种简单而有效的逆向交易策略。通过监测零售交易者的集体偏见,该系统帮助识别潜在的市场反转,并避免拥挤的交易,从而给有纪律的交易者带来优势。

2025.09.30
RSI引擎:MetaTrader 5的最佳交易助手
MetaTrader5
RSI引擎:MetaTrader 5的最佳交易助手

关键特性 多种进场策略: 可选择经典的超买/超卖反转或高级的RSI背离信号。 确认过滤器: 利用RSI中心线交叉来提高信号的准确性,减少虚假进场。 动态离场逻辑: 除了止损和盈利了结,交易助手还可以根据RSI水平自动平仓。 完全可配置: 所有RSI参数、交易管理设置和策略规则均可自定义。 独立交易管理: 独特的魔法数字确保该助手只管理自己的交易,避免与其他机器人或手动交易冲突。 交易策略与信号 进场信号逻辑 用户可以选择以下方法生成进场信号。 1. RSI背离(默认策略) 这是主要策略,默认开启。该助手会识别价格走势与RSI震荡器之间的背离,默认回溯期为60根K线,这可以暗示市场可能反转。 看涨背离(买入信号): 当价格形成新低,但RSI形成更高的低点时,表示下行动能减弱。 看跌背离(卖出信号): 当价格创造新高,但RSI形成更低的高点时,表示上行动能减弱。 2. 超买/超卖反转 用户可以禁用背离,采用经典的RSI反转策略进行交易。 买入信号: 当RSI从超卖区间向上穿越(默认:30以下)时生成。 卖出信号: 当RSI从超买区间向下穿越(默认:70以上)时生成。 3. 中心线确认(可选过滤器) 为了进一步确认,可以启用此过滤器。在生成初始信号后(无论是来自背离还是超买/超卖条件),该助手将等待RSI穿越中心线(50)后再执行交易。这有助于确认市场动能的真实变化。 离场策略逻辑 该助手采用固定和动态离场条件。 止损与盈利了结: 每笔交易都受到固定止损和盈利了结水平的保护。 RSI水平离场(默认启用): 此动态离场根据RSI的值平仓。例如,当RSI进入超买水平(如70)时,可以自动平仓以锁定利润;当RSI进入超卖水平(如30)时,短仓也可以平仓。 交易与风险管理 该助手包含管理风险的基本参数。 手数: 所有交易的固定手数。(默认:0.1) 止损: 以点为单位的保护性止损。(默认:500) 盈利了结: 以点为单位的盈利目标。(默认:300) 魔法数字: 该助手交易的唯一标识符。(默认:160941) RSI指标配置 用户对RSI指标设置拥有完全控制权。 RSI周期: RSI计算的回溯期。(默认:14) 超买水平: 超买区间的阈值。(默认:70) 超卖水平: 超卖区间的阈值。(默认:30) 中心线: RSI震荡器的中点。(默认:50)

2025.09.13
1 2 3 4 5 6 下一页 末页