//------------------------------------------------------------------------
// 简称: ttlesson_0313_2025
// 名称:
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
//此处添加参数
Numeric cishu(25);
Vars
//此处添加变量
Global Numeric aa;
Series<Numeric> ma1;
Series<Numeric> ma1_1;
Series<Numeric> ma2;
Series<Numeric> ma3;
Series<Numeric> enter_con(0);//策略状态变量
Series<Numeric> my_cishu(0);//当前交易次数
Defs
//此处添加策略函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
ma1 = Average(close,5);
ma1_1 = Average(close,10);
ma2 = Average(close,60);
ma3 = Average(close,180);
Commentary("MarketPosition="+text(MarketPosition));
if( CrossOver(ma2[1],ma3[1]) and enter_con==0 ) // 0 没仓 => 1 建立底仓
{
Buy(1,open);
enter_con = 1;
}
/////1 -> 2提前离场
if( CrossUnder(ma1[1],ma1_1[1]) and enter_con ==1 and my_cishu < cishu) //当前的交易次数<限制次数
{
Buy(1,open);
my_cishu = my_cishu +1;
}
if(enter_con ==1 and CrossUnder(ma1_1[1],ma2[1]) )// 停止加仓,并减半仓
{
sell(CurrentContracts/2,open);
PlotAuto("平半","平半",close);
enter_con = 2;// 2的路径 要想一想 2->0 2->1
}
if(CrossUnder(ma2[1],ma3[1]) and (enter_con ==1 or enter_con==2) )// 1状态并不是最终, 1和2共同点是大于0
{
sell(0,open);
enter_con = 0;
my_cishu = 0;
}
Commentary("enter_con="+text(enter_con));
Commentary("my_cishu="+text(my_cishu));
PlotAuto("ma1",ma1);
PlotAuto("ma1_1",ma1_1);
PlotAuto("ma2",ma2);
PlotAuto("ma3",ma3);
}
//------------------------------------------------------------------------
// 编译版本 2025/3/13 153550
// 版权所有 wangkaiming
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer策略修改和重写的权利
//------------------------------------------------------------------------