首页 技术指标 帖子

基于MA的货币强度指标 - 适用于MetaTrader 4的交易工具

附件
28330.zip (4.64 KB, 下载 0次)

注意: 2020年3月30日更新 - 添加了对使用各种前缀/中缀/后缀的经纪商的支持。详细描述请继续往下滚动。

描述

当我们判断某个货币对,比如EURUSD正在上涨时,我们想了解EUR的强度有多大,以及USD的弱势程度。同样地,如果CADJPY正在下跌,我们希望知道CAD的弱势程度和JPY的强势程度。

测量货币强弱的简单方法是查看多个货币对并统计每种货币在各自货币对中所扮演的角色。因此,了解CAD在所有包含它的货币对中是如何表现的,以及已经有多少根K线的表现,将会非常有意义。

考虑到市场上有许多货币,我们可以先集中关注8种主要货币——美元(USD)、欧元(EUR)、英镑(GBP)、瑞士法郎(CHF)、澳元(AUD)、加元(CAD)、日元(JPY)和新西兰元(NZD),这8种货币能组合出28个货币对。

这个指标的功能是扫描这28个货币对,确定每个货币对中强势和弱势的货币,然后统计每种货币的强弱次数,并以如下方式展现结果:

货币强度显示

从上面的截图中,我们可以很容易得出结论:美元(USD)正在走强,而澳元(AUD)正在走弱,因此AUDUSD的走势是向下的,且动能非常强劲!

因此,这个指标提供了一种简单的方法,让你可以一目了然地看到在任何选定的时间框架下,值得更深入监控的货币对。

输入参数

用户可以设置的输入参数如下:

货币强度输入参数

这些输入参数允许用户更改移动平均线的属性,指标将根据K线的收盘价与移动平均线进行比较,以确定趋势是向上还是向下。2020年3月30日上传的更新支持那些在其符号中添加额外字符(如'+'或'.')的经纪商。此外,一些经纪商可能使用小写字母。因此,用户只需填写“EURUSD的完整符号名称”输入参数(如上所示),无论是“cEuRuSd.”还是“eUR_USd++”,等等(哦,我只是想覆盖所有可能性…哈哈),这个新版本应该能够处理这些情况。

要通过EA、其他指标或脚本调用此指标,可以使用以下功能:

bool GetCSBuffer(int tf, int bar, string currency, int &numBulls, int &numBears)
{
   string name = "MACurrencyStrength";
   string Cs[] = { "USD", "EUR", "GBP", "CHF", "AUD", "CAD", "JPY", "NZD" };
   int numCs = ArraySize(Cs);
   for (int i=0; i<numCs; i++)
   {
      if (Cs[i]==currency)
      {
         numBulls = int(iCustom(Symbol(),tf,name,i*3,bar)) - (numCs-i-1)*numCs;
         numBears = int(iCustom(Symbol(),tf,name,(i*3)+1,bar)) - (numCs-i-1)*numCs;
         numBulls = numBulls - numBears;
         return (true);
      }
   }
   return (false);
}

这是如何使用GetCSBuffer()函数的示例:

      int bar = 1; // 用户可以自定义这个值。
      string c = "USD"; // 用户可以自定义这个值,但必须是8种货币之一。
      int numBulls, numBears;
      if (GetCSBuffer(Period(),bar,c,numBulls,numBears))
         Print ("多头 = ", numBulls, ", 空头 = ", numBears);

使用此指标时,请注意终端的专家选项卡,确保没有错误信息。

最后,对于那些更具冒险精神的用户,可以重写GetTrend()函数(只需确保它接受相同的参数并返回相同的值范围,例如1表示上涨,-1表示下跌,简单明了),以便使用不同的标准来确定趋势。当然,某些更改可能需要更新输入参数,但没有什么复杂的——如果你有基本的编程知识,可以自定义它,调用自己的指标。

祝你玩得开心!

相关帖子

评论 (0)