Params
Numeric lots1(1);
Numeric LengthS(3);
Numeric LengthL(100);
Numeric LengthOS(30);
vars
Series<Numeric> OS;
Series<Numeric> AOS;
Numeric lots;
Events
onBar(ArrayRef<Integer> indexs)
{
lots=lots1;
OS=(Average(close,LengthS)-wAverage(close,LengthL));
AOS=Average(OS,LengthOS);
if(crossover(AOS[1],0))
{
Buy(lots,Open);
}
if(CrossUnder(AOS[1],0))
{
SellShort(lots,Open);
}
}
/*能否请老师帮忙做几个优化,
1.每次最多只开1手,
2.如何增加跟踪止损或止盈,
比如开多单后,沿着趋势往上,回撤20跳跟踪止损多单;
开空单,沿着趋势往下,回撤20跳跟踪止损空单;
多空单,只要盈利100跳,止盈
*/
//移动止盈止损---------------------------------以下
//记录开仓后的最高最低价
If(BarsSinceEntry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0) //建仓的K线
{
HighestAfterEntry = High;
LowestAfterEntry = Low;
}
}
Else
{
HighestAfterEntry = Max(HighestAfterEntry, High);
LowestAfterEntry = Min(LowestAfterEntry, Low);
}
KliqPoint = LowestAfterEntry * (1 + StopPer1 * 0.01) ; //空单吊灯
DliqPoint = HighestAfterEntry * (1 - StopPer1 * 0.01) ; //多单吊灯
//画线
if(MarketPosition == 1)
{
plt1.line("多头吊灯", DliqPoint);
}
Else if(MarketPosition == -1)
{
plt1.line("空头吊灯", KliqPoint);
}
If(MarketPosition == 1 And BarsSinceEntry >= 1 and L < DliqPoint[1]) // 有多仓的情况
{
sell(0, min(O, DliqPoint[1]));
Commentary("多单移动止盈");
}
else if (MarketPosition == -1 And BarsSinceEntry >= 1 and H > KliqPoint[1])
{
BuyToCover(0, max(O, KliqPoint[1]));
Commentary("空单移动止盈");
}
//移动止盈止损---------------------------------以上
建议投稿