如图所示,试着写了一个策略,即均线金叉后,价格发生回调(K线低点降低)时,确立前高。当后续价格突破前高时,开仓做多。以回调的最低点做为止损点。
很明显,写出来的策略明显是不对的,突破价位不对,止损价位也是不对的。
Vars
//此处添加变量
Series<Numeric> fast_ema;
Series<Numeric> slow_ema;
Series<Numeric> Highprice; //记录最高价
Series<Numeric> Lowprice; //记录最低价
Series<Numeric> breakout_price; //需要突破的价格
Series<Numeric> breakdown_price; //需要跌破的价格
Global Numeric StopLossprice; //止损价格
Series<Bool> condition_long(False);
Series<Bool> condition_short(False);
fast_ema = XAverage(Close,fast_ema_length);
slow_ema = XAverage(Close,slow_ema_length);
PlotNumeric(ema1,fast_ema);
PlotNumeric(ema2,slow_ema);
condition_long = CrossOver(fast_ema,slow_ema) and fast_ema[1]>fast_ema[2] and slow_ema[1]>=slow_ema[2];
IF(condition_long)
{
long_trade=0;
highprice=highest(high,5);
//Lowprice=lowest(low,2);
}
If(fast_ema[1]>slow_ema[1])
{
//long_count=long_count+1;
Highprice=max(Highprice[1],high);
Lowprice=lowest(low,2);
If(Lowprice[1]<Lowprice[2])
{
breakout_price=Highprice[1];
}
}
Else breakout_price=0;
//开多
If(MarketPosition==0 and long_trade[1]==0 and breakout_price[1]!=0)
{
If(High[2]<breakout_price[1] and High[1]>breakout_price[1])
{
Buy(lots,open);
long_trade=1;
StopLossprice=lowest(Lowprice,2);
}
}
//平多
If(MarketPosition>0)
{
//止损
If(Close[1]<=StopLossprice)
{
Sell(lots,open);
}
//止盈
If(Close[1]<slow_ema[1] and Close[2]>slow_ema[2])
{
Sell(lots,open);
}
}
求大神解答一下,谢谢!
第一 用来追踪高点和低点的逻辑,是快线大于慢线,那么当反复发生回调的时候,你的高点低点会被刷新
第二 If(High[2]<breakout_price[1] and High[1]>breakout_price[1]) 这段条件对开仓加了限制,要求前面两根k线必须保持一定的形态才能开仓。但是如果high[2]或者high[1]正好等于breakout_price,那么就会导致无法满足这个条件而无法产生信号
建议投稿直播分析
没找到直播分析,请问去哪投?
置顶帖里有一个在线答疑的投稿帖