mt4上使用,用于ea策略开发,mql4语言
,不尽感谢,有的话请发一下,加V,15844791446,
4条回答 默认 最新
- 阿里嘎多学长 2025-02-22 00:32关注
阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
Bollinger Bands 指标和 BBIBoll 指标
国内版的 Bollinger Bands 指标和 BBIBoll 指标可以使用 MQL4 语言在 MT4 上实现。下面是指标的代码:
Bollinger Bands 指标
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Script deinit function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Script tick function | //+------------------------------------------------------------------+ void OnTick() { double price = SymbolInfoDouble(_Symbol, SYMBOL_BID); double period = 20; // 指标周期 double dev = 2.0; // 指标标准差 double upper = price + (dev * BollingerBands(price, period, dev)); double middle = price; double lower = price - (dev * BollingerBands(price, period, dev)); // 画图 Plot(upper, "Upper", _Color_DARK_GREEN, 0, 0); Plot(middle, "Middle", _Color_DARK_GRAY, 0, 0); Plot(lower, "Lower", _Color_DARK_RED, 0, 0); } //+------------------------------------------------------------------+ //| Bollinger Bands 函数 | //+------------------------------------------------------------------+ double BollingerBands(double price, int period, double dev) { double sum = 0; int count = 0; for (int i = 0; i < period; i++) { sum += (price - i * 0.01); count++; } double mean = sum / count; double stdDev = 0; for (int i = 0; i < period; i++) { stdDev += (price - i * 0.01 - mean) * (price - i * 0.01 - mean); } stdDev = MathSqrt(stdDev / count); return (price - mean) / stdDev * dev; }
BBIBoll 指标
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Script deinit function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Script tick function | //+------------------------------------------------------------------+ void OnTick() { double price = SymbolInfoDouble(_Symbol, SYMBOL_BID); double period = 20; // 指标周期 double dev = 2.0; // 指标标准差 double upper = price + (dev * BBIBoll(price, period, dev)); double middle = price; double lower = price - (dev * BBIBoll(price, period, dev)); // 画图 Plot(upper, "Upper", _Color_DARK_GREEN, 0, 0); Plot(middle, "Middle", _Color_DARK_GRAY, 0, 0); Plot(lower, "Lower", _Color_DARK_RED, 0, 0); } //+------------------------------------------------------------------+ //| BBIBoll 函数 | //+------------------------------------------------------------------+ double BBIBoll(double price, int period, double dev) { double sum = 0; int count = 0; for (int i = 0; i < period; i++) { sum += (price - i * 0.01); count++; } double mean = sum / count; double stdDev = 0; for (int i = 0; i < period; i++) { stdDev += (price - i * 0.01 - mean) * (price - i * 0.01 - mean); } stdDev = MathSqrt(stdDev / count); return (price - mean) / stdDev * dev; }
这两个指标都使用了 Bollinger Bands 指标的公式,但是 BBIBoll 指标使用了不同的计算方法。
请注意,这些代码只是示例代码,需要根据实际情况进行修改和优化。
如果您需要更多帮助,请随时联系我。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报