![联丰优配 TBQ: Pure_SuperTrend [纯净版]超级趋势线指标 PSTD](/uploads/allimg/260108/081515430101O4.jpg)
图片
源码://------------------------------------------------------------------------// 简称: Pure_SuperTrend// 名称: [纯净版]超级趋势线指标 PSTD// 类别: 公式应用// 类型: 用户应用// Tips: 公众号 - 照胆源码荟; 知识星球 - 照胆源码研究院 // 输出: Void//------------------------------------------------------------------------/* 2026-1-4 15:22:09 绘制纯净版超级趋势线 解决问题的思路: 1. 切近主题,大概知道要干什么 2. 利用自身所学,有大致的框架 3. 细分任务,逐步完成,理清思路下的逐步 4. 小任务中,拆解动作 5. 串联 指标计算: 1.计算 ATR 定义ATR计算周期 Periods(50) 定义通道宽度系数 Multiplier(20) 2.计算趋势指标 Supertrend HL2 = (H + L) /2; LowerBand = HL2 - (Multiplier * ATR); UpperBand = HL2 + (Multiplier * ATR); LowerBand 只上升,不下降,直到close下破 LowerBand ,定义多头趋势结束, 结束之后的下一个bar,也就是当C[1] < LowerBand[1]时,重置LowerBand */Params //此处添加参数 Integer Periods(21); // 定义ATR计算周期(日线) Numeric Multiplier(1.5); // 定义通道宽度系数Vars //此处添加变量 Series<Numeric> myDayATR(0); // 计算波动率 Series<Numeric> HL2 ; Series<Numeric> LowerBand ; Series<Numeric> UpperBand ; Series<Numeric> superBand ; Series<Numeric> tradeFlag_(1) ; Defs //此处添加公式函数Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { //=========数据源相关设置============== AddDataFlag( Enum_Data_RolloverBackWard() ); //设置后复权 AddDataFlag( Enum_Data_RolloverRealPrice() ); //设置映射真实价格 AddDataFlag( Enum_Data_AutoSwapPosition() ); //设置自动换仓 AddDataFlag( Enum_Data_IgnoreSwapSignalCalc() ); //设置忽略换仓信号计算 //=========交易相关设置============== SetOrderMap2MainSymbol(); //设置委托映射到主力 SetSwapPosVolType( 2 ); // 换月时头寸:1=等市值,2=等持仓量 //与数据源无关 SetBeginBarMaxCount(500); //设置最大起始bar数为10 //SetBackBarMaxCount(10); //设置最大回溯bar数为10 } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { //1. 计算atr myDayATR = AvgTrueRange(Periods); //myDayATR = DayATR(Periods); //Commentary2('myDayATR', myDayATR); //2.计算趋势指标 Supertrend HL2 = (H + L) / 2; LowerBand = HL2 - (Multiplier * myDayATR); UpperBand = HL2 + (Multiplier * myDayATR); //LowerBand 只上升,不下降,直到close下破 LowerBand ,定义多头趋势结束, //结束之后的下一个bar,也就是当C[1] < LowerBand[1]时,重置LowerBand // 超级趋势线 信号转换 If(tradeFlag_ == 1 && C[1] < superBand[1]) { tradeFlag_ = -1; } Else If(tradeFlag_ == -1 && C[1] > superBand[1]) { tradeFlag_ = 1; } // 超级趋势线 计算 If(tradeFlag_ == 1 ) { LowerBand = Max(LowerBand[1], LowerBand) ; superBand = LowerBand ; } Else If(tradeFlag_ == -1 ) { UpperBand = min(UpperBand[1], UpperBand) ; superBand = UpperBand ; } //PlotNumeric('LowerBand', LowerBand); //PlotNumeric('UpperBand', UpperBand); PlotNumeric('superBand', superBand, 0, IIF(tradeFlag_ == 1, RED, GREEN)); //Commentary2('tradeFlag_', tradeFlag_); }//------------------------------------------------------------------------// 编译版本 2025/09/17 202138// 版权所有 yyyz_tb// 更改声明 TradeBlazer Software保留对TradeBlazer平台// 每一版本的TradeBlazer公式修改和重写的权利//------------------------------------------------------------------------ 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。道正网提示:文章来自网络,不代表本站观点。