- 精华
- 0
- 在线时间
- 280 小时
- UID
- 5525
- 积分
- 1473
- 帖子
- 429
- 阅读权限
- 60
- 注册时间
- 2009-9-22
- 最后登录
- 2022-5-23
- 精华
- 0
- UID
- 5525
- 积分
- 1473
- 帖子
- 429
- 主题
- 93
- 阅读权限
- 60
- 注册时间
- 2009-9-22
- 最后登录
- 2022-5-23
|
以下代码解决了Bar的计算问题。下一步打算第二个问题,自己编一个函数来同时统计Highest和相应的Bar位置,克服绝对长度的限制。- Params
- Numeric MyMinLength(5);
- // GV10 最近波峰与当前Bar的Bar计数
- // GV11 最近波峰的值
- // GV12 最近波谷与当前Bar的Bar计数
- // GV13 最近波谷的值
- // GV14 前一个波峰与当前Bar的Bar计数
- // GV15 前一个波峰的值
- // GV16 前一个波谷与当前Bar的Bar计数
- // GV17 前一个波谷的值
- Vars
- Numeric MyLength;
- Numeric MyHighBar;
- Numeric MyHigh;
- Numeric MyLow;
- Numeric MyLowBar;
- Begin
- If (BarStatus==0)
- { SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High
- SetGlobalVar(12,0); SetGlobalVar(13,Low); //最近波谷Bar,Low
- SetGlobalVar(14,0); SetGlobalVar(15,High);
- SetGlobalVar(16,0); SetGlobalVar(17,Low);
- }
-
- If (BarStatus==1)
- { MyLength = GetGlobalVar(12)+1;//取上一波谷到当前Bar的个数
- MyLength = IIF(MyLength<=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距离为5个Bar
- MyHighBar = HighestBar(High,MyLength);
- MyHigh = Highest(High,MyLength);
-
- If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength or MyHigh>GetGlobalVar(11))
- { If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength)
- { SetGlobalVar(14,GetGlobalVar(10)); //保留前一个波峰
- SetGlobalVar(15,GetGlobalVar(11));
- }
- SetGlobalVar(10,MyHighBar);//从上个低谷开始的最高价所在的Bar序数
- SetGlobalVar(11,MyHigh); //从上个低谷开始的最高价
- }
- SetGlobalVar(10,GetGlobalVar(10)+1); //原有错误,不论是否有新的波峰出现,原有的波峰均无条件远离1Bar
- SetGlobalVar(14,GetGlobalVar(14)+1);
- MyLength = GetGlobalVar(10)+1;//取上一波峰到当前Bar的个数
- MyLength = IIF(MyLength<MyMinLength,MyMinLength+1,MyLength);
- MyLowBar = LowestBar(Low,MyLength);
- MyLow = Lowest(Low,MyLength);
- If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength or MyLow<GetGlobalVar(13))
- { If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength)
- { SetGlobalVar(16,GetGlobalVar(12)); //保留前一个波谷
- SetGlobalVar(17,GetGlobalVar(13));
- }
- SetGlobalVar(12,MyLowBar);//从上个波峰开始的最低价所在的Bar序数
- SetGlobalVar(13,MyLow);//从上个波峰开始的最低价
- }
- SetGlobalVar(12,GetGlobalVar(12)+1);
- SetGlobalVar(16,GetGlobalVar(16)+1);
- }
- //验证显示
- Commentary("CurrBar "+Text(CurrentBar));
- Commentary("HighestNear "+Text(GetGlobalVar(11))+" Bar "+Text(GetGlobalVar(10)));
- Commentary("LowestNear "+Text(GetGlobalVar(13))+" Bar "+Text(GetGlobalVar(12)));
- Commentary("HighestFar "+Text(GetGlobalVar(15))+" Bar "+Text(GetGlobalVar(14)));
- Commentary("LowestFar "+Text(GetGlobalVar(17))+" Bar "+Text(GetGlobalVar(16)));
- End
复制代码 |
|