想求助一下,第一个问题是当指标发出买入信号后,并不马上进场,等5根k线之后再进场,该如何写?还有一个问题就是如何记录某一根k线的指标数值,目前是每个k线都有指标数值,但是我只想记录一个某一个k线的指标数值。就是取到想要的数值就停止取值,该如何去写?谢谢了
这样写是否附合你的要求
Params
//此处添加参数
Vars
//此处添加变量
Numeric O1;
Numeric O2;
Numeric O3;
Numeric O4;
Numeric O5;
Numeric MMM;
Series<Numeric> Mybar1;
Series<Numeric> Mybar2;
Series<Bool> VAR1;
Series<Bool> VAR2;
Series<Bool> VAR3;
Series<Bool> VAR4;
Series<Bool> VAR5;
Series<Bool> VAR6;
Series<Bool> VAR7;
Series<Bool> VAR8;
Series<Bool> VAR9;
Series<Bool> VARA;
Series<Bool> VARB;
Series<Bool> VARC;
Series<Bool> VARD;
Series<Bool> VARE;
Series<Bool> VARF;
Series<Bool> VAR10;
Series<Bool> VAR11;
Series<Bool> VAR12;
Series<Bool> VAR13;
Series<Bool> VAR14;
Series<Bool> VAR15;
Series<Bool> VAR16;
Series<Bool> VAR17;
Series<Bool> VAR18;
Series<Bool> VAR19;
Series<Bool> VAR1A;
Events
//此处实现事件函数
onInit()
//设置周期
{
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer>indexs)
{
//====== 策略逻辑 ======
Range[0:DataCount - 1]
{
// 计算O1序列
O1 = Summation(EMA((Close + Low) / 2, 1) / 3, 3);
// 计算O2和O3
O2 = EMA(O1, 3);
O3 = EMA(O2, 3);
// 计算VAR1-VAR18序列
VAR1 = Close > Close[1] And Close > Close[2];
VAR2 = VAR1[1] And Close <= Close[1] And Close >= Close[2];
VAR3 = VAR2[1] And Close >= Close[1] And Close <= Close[2];
VAR4 = VAR3[1] And Close <= Close[1] And Close >= Close[2];
VAR5 = VAR4[1] And Close >= Close[1] And Close <= Close[2];
VAR6 = VAR5[1] And Close <= Close[1] And Close >= Close[2];
VAR7 = VAR6[1] And Close >= Close[1] And Close <= Close[2];
VAR8 = VAR7[1] And Close <= Close[1] And Close >= Close[2];
VAR9 = VAR8[1] And Close >= Close[1] And Close <= Close[2];
VARA = VAR9[1] And Close <= Close[1] And Close >= Close[2];
VARB = VARA[1] And Close >= Close[1] And Close <= Close[2];
VARC = VARB[1] And Close <= Close[1] And Close >= Close[2];
VARD = Close < Close[1] And Close < Close[2];
VARE = VARD[1] And Close >= Close[1] And Close <= Close[2];
VARF = VARE[1] And Close <= Close[1] And Close >= Close[2];
VAR10 = VARF[1] And Close >= Close[1] And Close <= Close[2];
VAR11 = VAR10[1] And Close <= Close[1] And Close >= Close[2];
VAR12 = VAR11[1] And Close >= Close[1] And Close <= Close[2];
VAR13 = VAR12[1] And Close <= Close[1] And Close >= Close[2];
VAR14 = VAR13[1] And Close >= Close[1] And Close <= Close[2];
VAR15 = VAR14[1] And Close <= Close[1] And Close >= Close[2];
VAR16 = VAR15[1] And Close >= Close[1] And Close <= Close[2];
VAR17 = VAR16[1] And Close <= Close[1] And Close >= Close[2];
VAR18 = VAR17[1] And Close >= Close[1] And Close <= Close[2];
// 计算VAR19和VAR1A
VAR19 = (VARD[1] || VARE[1] || VARF[1] || VAR10[1] || VAR11[1] || VAR12[1] ||
VAR13[1] || VAR14[1] || VAR15[1] || VAR16[1] || VAR17[1] || VAR18[1]) And VAR1;
VAR1A = (VAR1[1] || VAR2[1] || VAR3[1] || VAR4[1] || VAR5[1] || VAR6[1] ||
VAR7[1] || VAR8[1] || VAR9[1] || VARA[1] || VARB[1] || VARC[1]) And VARD;
}
// 绘制信号
IF(VAR19==True)
{
Mybar1 = CurrentBar;
}
If(VAR19==True AND ((CurrentBar - Mybar1) == 5))
{
Buy(1, Low);
PlotString("信号", "B", LOW, Magenta);
Mybar1 = CurrentBar;
}
If(VAR1A==True AND ((CurrentBar - Mybar2) == 5))
{
SellShort(1, Low);
PlotString("信号", "S", Low, Magenta);
Mybar2 = CurrentBar;
}
}
例如用macd上穿0轴后,我不想追高,想等回调再进场