//------------------------------------------------------------------------
// 简称: rfyr0323
// 名称: 客户策略0323
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
//此处添加参数
Numeric len1(20);
Numeric len3(40);
Numeric lots(1);
Numeric len2(10);
Numeric Length(14);
Numeric SlowLength(3);
Numeric SmoothLength(3);
Vars
//此处添加变量
Series<Numeric> ma20_a;
Series<Numeric> ma40_a;
Series<Numeric> ma20_b;
Series<Numeric> ma10;
Bool con1;
Bool con2;
Bool con3;
Bool con4;
Bool con5;
Bool con6;
Bool con7;
Series<Numeric> HighestValue;
Series<Numeric> LowestValue;
Series<Numeric> KValue;
Numeric SumHLValue;
Numeric SumCLValue;
Numeric DValue;
Numeric JValue;
Bool con8;
Bool con9;
Bool con10;
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
// SubscribeBar(data1.Symbol,\"30m\",data1.BeginDateTime);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
data0.ma20_a=XAverage(data0.Close,len1);//计算20日均线
data0.ma10=XAverage(data0.Close,len2);//计算10日均线
data1.ma40_a=data1.XAverage(data1.Close[1],len3);//计算40日均线
PlotNumeric(\"ma20_b\",ma20_a);
PlotNumeric(\"ma10\",ma10);
data1.PlotNumeric(\"ma40_a\",ma40_a);
data1.PlotNumeric(\"data1.Close\",data1.Close);
// con1=data0.Close>ma20_a;//收盘在20日均线上方
//con2=CrossUnder(data0.Close,ma20_a);//收盘价下穿20日均线
con3=data0.Close[1]-data0.Open[1]<20;//前一根K线收盘价和开盘价是否差距超过20
con10=data0.Open[1]-data0.Close[1]<20;//前一根K线收盘价和开盘价是否差距超过20
con4=data0.Close[0]>=data0.Close[1] And data0.Open[0]>data0.Open[2] And data0.Open[0]>data0.Close[2];//底针形
con5=data0.Close[0]<=data0.Close[1] And data0.Open[0]<data0.Open[2] And data0.Open[0]<data0.Close[2];//顶针型
//KDJ计算指标
{
HighestValue = data0.HighestFC(data0.High, Length);
LowestValue = data0.LowestFC(data0.Low, Length);
SumHLValue = data0.SummationFC(HighestValue-LowestValue,SlowLength);
SumCLValue = data0.SummationFC(data0.Close - LowestValue,SlowLength);
If(SumHLValue <> 0)
{
KValue = SumCLValue/SumHLValue*100;
}Else
{
KValue = 0;
}
DValue = data0.AverageFC(KValue,SmoothLength);
JValue=3*data0.KValue - 2*data0.DValue;
//PlotNumeric(\"K\",data0.KValue);
//PlotNumeric(\"D\",DValue);
//PlotNumeric(\"J\",J);
//PlotNumeric(\"Ref1\",20);
//PlotNumeric(\"Ref2\",50);
}
con6=JValue>50;
con7=JValue<50;
con8=data1.Close[1]>data1.ma40_a;
con9=data1.Close[1]<data1.ma40_a;
//多头开仓条件
If(MarketPosition==0 And con8 )
{
If (con3 And con10 And con4 And con6)
{
data0.Buy(lots,(data0.Close[1]-data0.open[1])*0.67+data0.open[1]);
}
}
//空头开仓条件
If (MarketPosition==0 And con9 )
{
If (con3 And con10 And con5 And con7)
{
SellShort(lots,(data0.Open[1]-data0.Close[1])*0.67+data0.close[1]);
}
}
//多头平仓条件
If (data0.Close-longEntryPrice>5)
{
Sell(lots,data0.High);
}
If(longEntryPrice-data0.Close>10)
{
Sell(lots,data0.Low);
}
If (CrossUnder(data0.Close,ma10))
{
Sell(lots,data0.Low);
}
//空头平仓条件
If (data0.Close-shortEntryPrice>10)
{
BuyToCover(lots,data0.High) ;
}
If (shortEntryPrice-data0.Close>5)
{
BuyToCover(lots,data0.Low) ;
}
If (CrossOver(data0.Close,ma10))
{
BuyToCover(lots,data0.Low);
}
}
//------------------------------------------------------------------------
// 编译版本 2023/03/23 113518
// 版权所有 20220208161940178
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
建议投稿
在哪里投稿