欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

汇合指数 Stoch+RSI+MACD - MetaTrader 5脚本

author emer | 604 人阅读 | 0 人评论 |

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

Confluence Index Stoch+RSI+MACD - indicator for MetaTrader 5

//+------------------------------------------------------------------+
//|                                        MultiConfluence_Index.mq5 |
//|                           Stoch+RSI+MACD 汇合指数    |
//+------------------------------------------------------------------+
#财产版权 《多元融合指数》
#财产版本  “1.00”
#财产指标_单独_窗口
#财产指标缓冲区 6
#财产指标图  4

// 索引主线
#财产指标标签1  《融合指数》
#财产指标类型1  绘制线
#财产指示器颜色1  clr道奇蓝
#财产指示器宽度1  3

// 零线
#财产指标标签2  《零线》
#财产指标类型2  绘制线
#财产指示器颜色2  灰灰
#财产指示器宽度2  1
#财产指标样式2  样式_点

// 区域看涨极端
#财产指标标签3  “区域看涨”
#财产指标类型3  绘制_填充
#财产指标颜色3  clr深绿

// 极端看跌区域
#财产指标标签4  “区域看跌”
#财产指标类型4  绘制_填充
#财产指示器颜色4  clr深红

//+------------------------------------------------------------------+
//|输入参数                                              |
//+------------------------------------------------------------------+
输入团体“=== 时间框架 ===”
输入 ENUM_TIMEFRAMESTF1 =PERIOD_CURRENT;  // 时间范围 1(快)
输入 ENUM_TIMEFRAMESTF2=PERIOD_H1;        // 时间范围 2(中)
输入 ENUM_TIMEFRAMESTF3 =PERIOD_H4;        // 时间范围 3(慢速)

输入团体“===参数===
输入 整数      Stoch_K        =14;      // 随机 K
输入 整数      Stoch_D        =3;      // 随机 D
输入 整数      Stoch_Slowing=3;      // 随机放缓
输入 整数      RSI_周期     =14;      // RSI 周期
输入 整数      MACD_快速      =12;      // MACD EMA 快速
输入 整数      MACD_Slow      =26;      // MACD EMA 缓慢
输入 整数      MACD_信号    =9;      // MACD 信号

//+------------------------------------------------------------------+
//|缓冲区                                                            |
//+------------------------------------------------------------------+
双倍的索引缓冲区[];双倍的零缓冲区[];双倍的BullishZoneTop[];双倍的BullishZoneBottom[];双倍的BearishZoneTop[];双倍的BearishZoneBottom[];// 指标句柄
整数句柄_stoch_tf1、句柄_stoch_tf2、句柄_stoch_tf3;整数句柄_rsi_tf1、句柄_rsi_tf2、句柄_rsi_tf3;整数句柄_macd_tf1、句柄_macd_tf2、句柄_macd_tf3;//+------------------------------------------------------------------+
//|初始化                                                     |
//+------------------------------------------------------------------+
整数 初始化时()
{
  // 缓冲区  设置索引缓冲区0, 索引缓冲区,INDICATOR_DATA);
  设置索引缓冲区1, 零缓冲区,INDICATOR_DATA);
  设置索引缓冲区2, 看涨区域顶部,INDICATOR_DATA);
  设置索引缓冲区3, 看涨区域底部,INDICATOR_DATA);
  设置索引缓冲区4, 熊市顶部,INDICATOR_DATA);
  设置索引缓冲区5, 看跌区域底部,INDICATOR_DATA);
   
  // 配置  数组集为系列(索引缓冲区,真的);
  数组集为系列(零缓冲区,真的);
  数组集为系列(看涨区域顶部,真的);
  数组集为系列(看涨区域底部,真的);
  数组集为系列(看跌区域顶部,真的);
  数组集为系列(看跌区域底部,真的);
   
  // 零线  数组初始化(零缓冲区,0.0);
   
  // 填充区域的配置  绘图索引集整数2,绘图_绘制_开始,0);
  绘图索引集整数3,绘图_绘制_开始,0);
   
  // 创建句柄 - 随机   句柄_stoch_tf1 =随机指标_象征, TF1, Stoch_K, Stoch_D, Stoch_Slowing,模式_SMA,STO_LOWHIGH);
   句柄_stoch_tf2 =随机指标_象征, TF2, Stoch_K, Stoch_D, Stoch_Slowing,模式_SMA,STO_LOWHIGH);
   句柄_stoch_tf3 =随机指标_象征, TF3, Stoch_K, Stoch_D, Stoch_Slowing,模式_SMA,STO_LOWHIGH);
   
  // 创建句柄 - RSI   句柄_rsi_tf1 =RSI_象征, TF1, RSI_周期,PRICE_CLOSE);
   句柄_rsi_tf2 =RSI_象征, TF2, RSI_周期,PRICE_CLOSE);
   句柄_rsi_tf3 =RSI_象征, TF3, RSI_周期,PRICE_CLOSE);
   
  // 创建句柄 - MACD   句柄_macd_tf1 =平滑异同移动平均线_象征, TF1, MACD_快, MACD_慢, MACD_信号,PRICE_CLOSE);
   句柄_macd_tf2 =平滑异同移动平均线_象征, TF2, MACD_快, MACD_慢, MACD_信号,PRICE_CLOSE);
   句柄_macd_tf3 =平滑异同移动平均线_象征, TF3, MACD_快, MACD_慢, MACD_信号,PRICE_CLOSE);
   
  // 验证句柄  如果(handle_stoch_tf1 ==INVALID_HANDLE||句柄_stoch_tf2 ==INVALID_HANDLE||句柄_stoch_tf3 ==INVALID_HANDLE||
      句柄_rsi_tf1 ==INVALID_HANDLE||句柄_rsi_tf2 ==INVALID_HANDLE||句柄_rsi_tf3 ==INVALID_HANDLE||
      句柄_macd_tf1 ==INVALID_HANDLE||句柄_macd_tf2 ==INVALID_HANDLE||句柄_macd_tf3 ==INVALID_HANDLE)
   {
      打印“错误:无法创建句柄”);
      返回初始化失败);
   }
   
  // 名称和比例  指标集字符串INDICATOR_SHORTNAME,《多元融合指数》);
  指标集整数INDICATOR_DIGITS,1);
  指标集双INDICATOR_MINIMUM, -100);
  指标集双INDICATOR_MAXIMUM,100);
   
  // 级别  指标集整数INDICATOR_LEVELS,3);
  指标集双INDICATOR_LEVELVALUE,0,0);
  指标集双INDICATOR_LEVELVALUE,1,50);
  指标集双INDICATOR_LEVELVALUE,2, -50);
   
  指标集整数INDICATOR_LEVELCOLOR,0,灰灰);
  指标集整数INDICATOR_LEVELCOLOR,1,清绿);
  指标集整数INDICATOR_LEVELCOLOR,2,红细胞);
   
  指标集整数INDICATOR_LEVELSTYLE,0,样式_实体);
  指标集整数INDICATOR_LEVELSTYLE,1,样式_点);
  指标集整数INDICATOR_LEVELSTYLE,2,样式_点);
   
  打印“多重汇合索引已初始化 - TF:”,枚举转字符串(TF1),“/”,枚举转字符串(TF2),“/”,枚举转字符串(TF3));
  返回初始化成功);
}//+------------------------------------------------------------------+
//|去初始化                                                 |
//+------------------------------------------------------------------+
空白 解初始化常量 整数原因)
{
  如果(handle_stoch_tf1!=INVALID_HANDLE指标释放(handle_stoch_tf1);
  如果(handle_stoch_tf2!=INVALID_HANDLE指标释放(handle_stoch_tf2);
  如果(handle_stoch_tf3!=INVALID_HANDLE指标释放(handle_stoch_tf3);
  如果(handle_rsi_tf1!=INVALID_HANDLE指标释放(handle_rsi_tf1);
  如果(handle_rsi_tf2!=INVALID_HANDLE指标释放(handle_rsi_tf2);
  如果(handle_rsi_tf3!=INVALID_HANDLE指标释放(handle_rsi_tf3);
  如果(handle_macd_tf1!=INVALID_HANDLE指标释放(handle_macd_tf1);
  如果(handle_macd_tf2 !=INVALID_HANDLE指标释放(handle_macd_tf2);
  如果(handle_macd_tf3!=INVALID_HANDLE指标释放(handle_macd_tf3);
   
  评论””);
}//+------------------------------------------------------------------+
//|主要计算                                                   |
//+------------------------------------------------------------------+
整数 计算时常量 整数费率_总计,
                常量 整数先前计算的,
                常量 日期时间&时间[],
                常量 双倍的&打开[],
                常量 双倍的&高的[],
                常量 双倍的&低的[],
                常量 双倍的&关闭[],
                常量 长的&tick_volume[],
                常量 长的&体积[],
                常量 整数&传播[])
{
  如果(费率_总计 <100)
      返回0);
   
  整数限制= rates_total - prev_calculated;
  如果(限制==0) 极限 =1;
  如果(先前计算的==0) 限制 = rates_total -100;
   
  // 数据数组(作为匹配缓冲区索引的系列)  双倍的stoch_k1[]、stoch_d1[]、stoch_k2[]、stoch_d2[]、stoch_k3[]、stoch_d3[];
  双倍的rsi1[]、rsi2[]、rsi3[];
  双倍的macd_main1[]、macd_sig1[]、macd_main2[]、macd_sig2[]、macd_main3[]、macd_sig3[];
   
  数组集为系列(stoch_k1,真的);
  数组集为系列(stoch_d1,真的);
  数组集为系列(stoch_k2,真的);
  数组集为系列(stoch_d2,真的);
  数组集为系列(stoch_k3,真的);
  数组集为系列(stoch_d3,真的);
  数组集为系列(rsi1,真的);
  数组集为系列(rsi2,真的);
  数组集为系列(rsi3,真的);
  数组集为系列(macd_main1,真的);
  数组集为系列(macd_sig1,真的);
  数组集为系列(macd_main2,真的);
  数组集为系列(macd_sig2,真的);
  数组集为系列(macd_main3,真的);
  数组集为系列(macd_sig3,真的);
   
  // 复制数据 - 复制足够的柱  整数复制条数 = 限制 +50;
   
  整数复制=0;
   复制=复制缓冲区(handle_stoch_tf1,0,0、bars_to_copy、stoch_k1);
  如果(复制<=0){打印“错误:无法复制 stoch_k1,代码:”,获取最后一个错误());返回(先前计算); }
   
  如果复制缓冲区(handle_stoch_tf1,1,0, 复制条数, stoch_d1) <=0){打印“错误:无法复制 stoch_d1”);返回(先前计算); }
  如果复制缓冲区(handle_stoch_tf2,0,0、bars_to_copy、stoch_k2) <=0){打印“错误:无法复制 stoch_k2”);返回(先前计算); }
  如果复制缓冲区(handle_stoch_tf2,1,0, 复制条数, stoch_d2) <=0){打印“错误:无法复制stoch_d2”);返回(先前计算); }
  如果复制缓冲区(handle_stoch_tf3,0,0、bars_to_copy、stoch_k3) <=0){打印“错误:无法复制 stoch_k3”);返回(先前计算); }
  如果复制缓冲区(handle_stoch_tf3,1,0、bars_to_copy、stoch_d3) <=0){打印“错误:无法复制 stoch_d3”);返回(先前计算); }
   
  如果复制缓冲区(handle_rsi_tf1,0,0, 复制条数, rsi1) <=0){打印“错误:复制 rsi1 失败”);返回(先前计算); }
  如果复制缓冲区(handle_rsi_tf2,0,0, 复制条数, rsi2) <=0){打印“错误:复制 rsi2 失败”);返回(先前计算); }
  如果复制缓冲区(handle_rsi_tf3,0,0, 复制条数, rsi3) <=0){打印“错误:复制 rsi3 失败”);返回(先前计算); }
   
  如果复制缓冲区(handle_macd_tf1,0,0、bars_to_copy、macd_main1) <=0){打印“错误:无法复制 macd_main1”);返回(先前计算); }
  如果复制缓冲区(handle_macd_tf1,1,0、bars_to_copy、macd_sig1) <=0){打印“错误:无法复制 macd_sig1”);返回(先前计算); }
  如果复制缓冲区(handle_macd_tf2,0,0、bars_to_copy、macd_main2) <=0){打印“错误:无法复制 macd_main2”);返回(先前计算); }
  如果复制缓冲区(handle_macd_tf2,1,0、bars_to_copy、macd_sig2) <=0){打印“错误:无法复制 macd_sig2”);返回(先前计算); }
  如果复制缓冲区(handle_macd_tf3,0,0、bars_to_copy、macd_main3) <=0){打印“错误:无法复制 macd_main3”);返回(先前计算); }
  如果复制缓冲区(handle_macd_tf3,1,0、bars_to_copy、macd_sig3) <=0){打印“错误:无法复制 macd_sig3”);返回(先前计算); }
   
  打印“调试:已复制”, 复制,“酒吧,限制=”, 限制,“rates_total=”, rates_total);
   
  // 计算索引 - 现在 i=0 是最近的柱  整数计算=0;
  为了整数我=0;我<限制;我++)
   {
      // 数组访问的安全检查      如果(我 >=数组大小(stoch_k1) ||我 >=数组大小(stoch_k2) ||我 >=数组大小(stoch_k3))
      {
        打印“调试:跳过 i=”, 我,“-stoch 数组太小”);
        继续;
      }
      如果(我 >=数组大小(rsi1) ||我 >=数组大小(rsi2) ||我 >=数组大小(RSI3))
      {
        打印“调试:跳过 i=”, 我,“ - rsi 数组太小”);
        继续;
      }
      如果(我 >=数组大小(macd_main1) ||我 >=数组大小(macd_main2) ||我 >=数组大小(macd_main3))
      {
        打印“调试:跳过 i=”, 我,“ - MACD 数组太小”);
        继续;
      }
      
      双倍的分数=0.0;
      
      //=== 随机 ===      // TF1      如果(stoch_k1[i] > stoch_d1[i])
         分数+=11.0;
      别的         分数-=11.0;
      
      // TF2      如果(stoch_k2[i] > stoch_d2[i])
         分数+=17.0;
      别的         分数-=17.0;
      
      // TF3      如果(stoch_k3[i] > stoch_d3[i])
         分数+=17.0;
      别的         分数-=17.0;
      
      //=== RSI ===      // TF1      如果(rsi1[i] >50)
         分数+=7.0;
      别的         分数-=7.0;
      
      // TF2      如果(rsi2[i] >50)
         分数+=11.0;
      别的         分数-=11.0;
      
      // TF3      如果(rsi3[i] >50)
         分数+=11.0;
      别的         分数-=11.0;
      
      //=== MACD ===      // TF1      如果(macd_main1[i] > macd_sig1[i])
         分数+=6.0;
      别的         分数-=6.0;
      
      // TF2      如果(macd_main2[i] > macd_sig2[i])
         分数+=10.0;
      别的         分数-=10.0;
      
      // TF3      如果(macd_main3[i] > macd_sig3[i])
         分数+=10.0;
      别的         分数-=10.0;
      
      // Stockage - i=0 是当前柱      IndexBuffer[i] = 分数;
      计算++;
      
      如果(我 <3)  // 调试 3 个首映栏      {
        打印“调试:栏[”, 我,”]得分=“, 分数,“斯托赫1=”, stoch_k1[i],“ rsi1 =”, rsi1[i],“macd1=”, macd_main1[i]);
      }
      
      // 彩色区域      如果(分数>50)
      {
         看涨区域顶部[i] =100;
         BullishZoneBottom[i] =50;
      }
      别的      {
         看涨区域顶部[i] =空_VALUE;
         BullishZoneBottom[i] =空_VALUE;
      }
      
      如果(分数 < -50)
      {
         BearishZoneTop[i] = -50;
         BearishZoneBottom[i] = -100;
      }
      别的      {
         BearishZoneTop[i] =空_VALUE;
         BearishZoneBottom[i] =空_VALUE;
      }
   }
   
  打印“调试:计算”, 计算出,“酒吧出来”, 限制);
   
  // 第一次计算时的调试信息  如果(先前计算的==0)
   {
      细绳信息=字符串格式“计算完成|当前索引:%.1f”, 索引缓冲区[0]);
      打印(信息);
      评论(信息);
   }
   
  返回(费率_总计);
}//+------------------------------------------------------------------+



附件下载

📎 MTF_NN.mq5 (27.81 KB)

Source: MQL5 #66295

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录