怎么样才能:在均线金叉的时候订按布林线下轨作基准价订阅对应的期权
//------------------------------------------------------------------------// 简称: ttlesson_0518_2023// 名称: // 类别: 公式应用// 类型: 用户应用// 输出: Void//------------------------------------------------------------------------Params //此处添加参数 Numeric min_opt_interval(50); Numeric max_strike(4100); Numeric min_strike(3200); Numeric FastLength(5);// 短期指数平均线参数 Numeric SlowLength(20);// 长期指数平均线参数Vars //此处添加变量 global Numeric g1(0); global bar a1; Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Numeric oUpLine; //上轨 Numeric oDownLine; //下轨 Numeric oMidLine; //中间线 Numeric TMP2; //中间线 Defs //此处添加公式函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { if(g1 == 1) { Numeric i; ////call 平 虚 for i = 2 to 3// 可参数化 { string str1; Array<string> str2; //rb2310.SHFE StringSplit(Symbol,\".\",str2); numeric a = round(a1.close/min_opt_interval,0)*min_opt_interval; str1 = str2[0] + IIFString(ExchangeCode()==\"SHFE\" OR ExchangeCode()==\"CZCE\",\"C\",\"-C-\") + text(a+i*min_opt_interval) +\".\" + str2[1]; integer sym1 = SubscribeBar(str1,Frequency,BeginDateTime); print(\"str1=\"+str1); if(a+i*min_opt_interval <= max_strike) { integer sym1 = SubscribeBar(str1,Frequency,BeginDateTime); if(sym1 != InvalidNumeric) { print(\"sym1=\"+text(sym1)); } else { print(\"出错\");// break; } } Else { break; } } //////////////put 平 虚 for i = 2 to 3 { string str1; Array<string> str2; //rb2310.SHFE StringSplit(Symbol,\".\",str2); numeric a = round(a1.close/min_opt_interval,0)*min_opt_interval;//这里的a1.close 怎么才能改成布林线上轨价格呢 str1 = str2[0] + IIFString(ExchangeCode()==\"SHFE\" OR ExchangeCode()==\"CZCE\",\"P\",\"-P-\") + text(a-i*min_opt_interval) +\".\" + str2[1]; integer sym1 = SubscribeBar(str1,Frequency,BeginDateTime); if(a-i*min_opt_interval >= min_strike) { integer sym1 = SubscribeBar(str1,Frequency,BeginDateTime); if(sym1 != InvalidNumeric) { print(\"sym1=\"+text(sym1)); } else { print(\"出错\");// break; } } Else { break; } } } } OnReady()//数据准备,获取最近K线close { //BarStatus==0 if(g1 == 0) { GetBar(a1,(BarCount-1)*-1);//需求在均线金叉的时候,公式中的CLOSE价替换成布林上轨价。 g1 = 1; ReStart(false); } } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { range[1:datacount-1] { oMidline = AverageFC( C[1],20); TMP2 = StandardDev( C[1],20,2); oUPline = oMidline + 2* TMP2; oDownline = oMidline -2* TMP2; AvgValue1 = AverageFC(Close,FastLength); AvgValue2 = AverageFC(Close,SlowLength); PlotNumeric(\"MA1\",AvgValue1); PlotNumeric(\"MA2\",AvgValue2); If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]) { Buy(0,Open); } If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) { SellShort(0,Open); } } }//------------------------------------------------------------------------// 编译版本 2023/05/18 153456// 版权所有 wangkaiming// 更改声明 TradeBlazer Software保留对TradeBlazer平台// 每一版本的TradeBlazer公式修改和重写的权利//------------------------------------------------------------------------