|
最大化中文版,便于看懂。
去伪存真,留下了精华。
- #property description "三条线通道"
- #property strict
- #property indicator_chart_window//主窗口显示
- extern int 第一个开 = 1; // 从第一个k开始画 extern=屏幕上显示可修改。去掉则只能从代码处修改。
- extern int 最后一开 = 50; // 通道包括50个k
- extern ENUM_TIMEFRAMES FixedPeriod = 0; // 通道使用时间周期 ENUM_TIMEFRAMES ??? Fixedperiod 似乎很难理解。容我消化
- extern double cDeviation = 1; // 通道可调宽度
- extern ENUM_LINE_STYLE cStyle = 0; // 通道样式0表直线
- extern color cColor = clrRoyalBlue;// 通道颜色 蓝色
- extern int cWidth = 1; // 通道宽度1像素
- string StdDevChannel="通道";
- datetime 首k画,尾k完;
- int OnInit()
- {
- IndicatorShortName("简称通道");
- return(INIT_SUCCEEDED);
- }
- void OnDeinit(const int reason)
- {
- if(ObjectFind(StdDevChannel) >= 0) ObjectDelete(StdDevChannel);//
- Comment("");
- }
- int OnCalculate(const int rates_total, // 输入时间序列大小
- const int prev_calculated,// 前一次调用处理的柱
- const datetime &time[],// 时间
- const double &open[], // 开盘价
- const double &high[], // 最高价
- const double &low[], // 最低价
- const double &close[], // 收盘价
- const long &tick_volume[], // 订单交易量
- const long &volume[], // 真实交易量
- const int &spread[]) // 点差
- {
- int counted_bars=IndicatorCounted(),
- limit=Bars-counted_bars,i;
- if(counted_bars < 0) return(-1);//如果图表没k,程序运行结束
- if(counted_bars>0) counted_bars--;//如果图表正常,继续统计k
- for(i=limit-1; i>=0; i--)
- {
- 首k画 = iTime(NULL, FixedPeriod, i+第一个开);//默认品种 默认周期 默认指定k起画
- 尾k完 = iTime(NULL, FixedPeriod, i+最后一开);
- }
- DrawSDChannel(StdDevChannel,cDeviation,尾k完,首k画,cColor,cStyle,cWidth);//控制蓝线
- /*画通道公式(通道,可调宽度,尾k,首k画,颜色,样式,宽度)神奇的公式
- */
- return(rates_total);
- }
- void DrawSDChannel(string name,double deviation,datetime t1,datetime t2,color clr,int style,int width)
- /*画通道公式(通道名,可调宽度,t1尾k,t2首k画,clr颜色,style样式,width宽度)神奇的公式
- */
- {
- ObjectDelete(name);
- ObjectCreate(name,OBJ_STDDEVCHANNEL,0,t1,0,t2,0);
- ObjectSet(name,OBJPROP_DEVIATION,deviation);
- ObjectSet(name,OBJPROP_COLOR,clr);
- ObjectSet(name,OBJPROP_STYLE,style);
- ObjectSet(name,OBJPROP_WIDTH,width);
- ObjectSet(name,OBJPROP_RAY,true);
- }
复制代码 来源: 分享修改一蒙圈通道可讨论 |
|