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

自定义布林线 - MetaTrader 5脚本

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

Custom Bollinger Bands - indicator for MetaTrader 5

Custom Bollinger Bands - indicator for MetaTrader 5

Custom Bollinger Bands - indicator for MetaTrader 5

Custom Bollinger Bands - indicator for MetaTrader 5

Custom Bollinger Bands - indicator for MetaTrader 5

我开发此指标是为了提供 MetaTrader 5 布林线指标中标准移动平均线方法的替代方案,该指标仅提供“简单”方法。使用我的指标,用户可以选择其他方法,包括指数、平滑和线性加权。

要使用此指示器,您需要将其放置在类似于以下路径的目录中(在 Windows 上):

C:\Users\lucas\AppData\Roaming\MetaQuotes\Terminal\Indicators\Examples

新增功能:

Custom Bollinger Bands - indicator for MetaTrader 5

默认情况下它设置为零:

Custom Bollinger Bands - indicator for MetaTrader 5

选择 LinearWeighted 平均值的执行示例:

Custom Bollinger Bands - indicator for MetaTrader 5   Custom Bollinger Bands - indicator for MetaTrader 5

//+------------------------------------------------------------------+
//|                                              BBP个性化.mq5 |
//|                                                      卢卡斯·维达尔 |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#财产版权  “卢卡斯·维达尔”
#财产关联        “https://www.mql5.com/en/users/lucasmoura00”
#财产描述 “布林线个性化”
#包括<移动平均线.mqh>//---
#财产指标图表窗口
#财产指标缓冲区 4
#财产指标图  3
#财产指标类型1  绘制线
#财产指示器颜色1  浅海绿#财产指标类型2  绘制线
#财产指示器颜色2  浅海绿#财产指标类型3  绘制线
#财产指标颜色3  浅海绿#财产指标标签1  《乐队中》
#财产指标标签2  “乐队上部”
#财产指标标签3  “乐队更低”
//--- 输入参数
枚举移动平均法 {
    简单,    // 0    指数,  // 1    平滑,    // 2    线性加权  // 3};输入移动平均法 InpMaMethod = Simple;// 媒体移动方法
输入 整数     InpBandsPeriod=20;      // 时期
输入 整数     InpBandsShift=0;        // 转移
输入 双倍的  InpBands偏差=2.0;  // 偏差
//--- 全局变量
整数           ExtBandsPeriod、ExtBandsShift;双倍的        ExtBands偏差;整数           外部绘图开始=0;//--- 指标缓冲区
双倍的        ExtMLBuffer[];双倍的        ExtTLBuffer[];双倍的        ExtBLBuffer[];双倍的        ExtStdDevBuffer[];//+------------------------------------------------------------------+
//|自定义指标初始化函数                         |
//+------------------------------------------------------------------+
空白 初始化时()
  {//--- 检查输入值  如果(InpBandsPeriod<2)
     {
      扩展频带周期=20;
      打印格式“输入变量 InpBandsPeriod=%d 的值不正确。指标将使用值=%d 进行计算。”,InpBandsPeriod,ExtBandsPeriod);
     }
  别的      ExtBandsPeriod=InpBandsPeriod;
  如果(InpBandsShift<0)
     {
      扩展频带偏移=0;
      打印格式“输入变量 InpBandsShift=%d 的值不正确。指标将使用值=%d 进行计算。”,InpBandsShift,ExtBandsShift);
     }
  别的      ExtBandsShift=InpBandsShift;
  如果(InpBands偏差==0.0)
     {
      ExtBands偏差=2.0;
      打印格式“输入变量 InpBandsDeviations=%f 的值不正确。指标将使用值=%f 进行计算。”,InpBands偏差,ExtBands偏差);
     }
  别的      ExtBandsDeviations=InpBandsDeviations;//--- 定义缓冲区  设置索引缓冲区0,ExtMLBuffer);
  设置索引缓冲区1,ExtTLBuffer);
  设置索引缓冲区2,ExtBLBuffer);
  设置索引缓冲区3,ExtStdDevBuffer,指标计算);//--- 设置索引标签  绘图索引设置字符串0,绘图标签,“乐队(”+细绳(ExtBandsPeriod)+“) 中间”);
  绘图索引设置字符串1,绘图标签,“乐队(”+细绳(ExtBandsPeriod)+“)上”);
  绘图索引设置字符串2,绘图标签,“乐队(”+细绳(ExtBandsPeriod)+“) 降低”);//--- 指标名称  指标集字符串INDICATOR_SHORTNAME,“布林线”);//--- 索引绘制开始设置   ExtPlotBegin=ExtBandsPeriod-1;
  绘图索引集整数0,绘图_绘制_开始,ExtBandsPeriod);
  绘图索引集整数1,绘图_绘制_开始,ExtBandsPeriod);
  绘图索引集整数2,绘图_绘制_开始,ExtBandsPeriod);//--- 索引移位设置  绘图索引集整数0,绘图_移动,ExtBandsShift);
  绘图索引集整数1,绘图_移动,ExtBandsShift);
  绘图索引集整数2,绘图_移动,ExtBandsShift);//--- 指标值的位数  指标集整数INDICATOR_DIGITS,_数字+1);
  }//+------------------------------------------------------------------+
//|计算移动平均线                                         |
//+------------------------------------------------------------------+
双倍的计算移动平均值(整数位置,整数时期,常量 双倍的&价格[]) {
    转变(InpMa方法){
        案件简单的:
            返回SimpleMA(仓位、周期、价格);
        案件指数:
            // 更改 iMA 相关参数的功能            返回 伊玛无效的,0, 时期,0,模式_EMA,PRICE_CLOSE);
        案件平滑:
            // 实现 SMMA aqui 功能            休息;
        案件线性加权:
            返回LinearWeightedMA(仓位、周期、价格);
    }
    返回 0;// 恢复不确定方法}//+------------------------------------------------------------------+
//|布林线                                                 |
//+------------------------------------------------------------------+
整数 计算时常量 整数费率_总计,
                常量 整数先前计算的,
                常量 整数开始,
                常量 双倍的&价格[])
  {
  如果(rates_total返回(0);//--- 当我们收到先前的开始时,索引绘制开始设置  如果(ExtPlotBegin!=ExtBandsPeriod+开始)
     {
      ExtPlotBegin=ExtBandsPeriod+开始;
      绘图索引集整数0,绘图_绘制_开始,ExtPlotBegin);
      绘图索引集整数1,绘图_绘制_开始,ExtPlotBegin);
      绘图索引集整数2,绘图_绘制_开始,ExtPlotBegin);
     }//--- 开始计算  整数位置;
  如果(上一个计算>1)
      pos=prev_calculated-1;
  别的      位置=0;//--- 主循环  为了整数我=位置;我已停止();我++)
     {
      //--- 中线      ExtMLBuffer[i]=CalculateMovingAverage(i, ExtBandsPeriod, 价格);
      //--- 计算并写下StdDev      ExtStdDevBuffer[i]=StdDev_Func(i,价格,ExtMLBuffer,ExtBandsPeriod);
      //--- 上线      ExtTLBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviations*ExtStdDevBuffer[i];
      //--- 下线      ExtBLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviations*ExtStdDevBuffer[i];
     }//--- OnCalculate 完成。返回新的 prev_calculated。  返回(费率_总计);
  }//+------------------------------------------------------------------+
//|计算标准差                                    |
//+------------------------------------------------------------------+
双倍的标准差_函数(常量 整数位置,常量 双倍的&价格[],常量 双倍的&ma_价格[],常量 整数时期)
  {
  双倍的标准设备=0.0;//--- 计算StdDev  如果(位置>=周期)
     {
      为了整数我=0;我<期间;我++)
         std_dev+=数学包(价格[位置-i]-ma_价格[位置],2.0);
      标准设备=数学平方根(std_dev/周期);
     }//--- 返回计算值  返回(std_dev);
  }//+------------------------------------------------------------------+



附件下载

📎 bb_personalizada.mq5 (13.42 KB)

Source: MQL5 #49464

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