Params
Numeric StartWinPoint(180); //启动止盈跳数
Numeric WinRetracementPoint(180); //盈利回撤跳数
Numeric WinRetracementRate(0.3); //盈利回撤比例
Vars
Series<Numeric> StopLossPrice;
Series<Numeric> HigherAfterEntry;
Series<Numeric> LowerAfterEntry;
Series<Numeric> myEntryPrice;
Series<Numeric> RetracementPoint;
Series<Numeric> RetracementRate;
Series<Numeric> MinPoint; //1跳点位
Series<Numeric> MaxWinPoint;
Events
//开始跟踪止盈
//记录入场后的最高价和最低价
//------------------------------------------------------------------------------------------------
If(MarketPosition == 1 && BarsSinceentry >=1)
{
HigherAfterEntry = Highest(High,BarsSinceentry);
//PlotNumeric("HigherAfterEntry",HigherAfterEntry);
}else If(MarketPosition == -1 && BarsSinceentry >=1)
{
LowerAfterEntry = Lowest(Low,BarsSinceentry);
//PlotNumeric("LowerAfterEntry",LowerAfterEntry);
}
If(BarsSinceentry>0)
{
Commentary("MinPoint:"+Text(MinPoint)+"点");
//myEntryPrice=EntryPrice;
Commentary("myEntryPrice:"+Text(myEntryPrice) );
Commentary("BarsSinceentry:"+Text(BarsSinceentry) );
If (MarketPosition == 1) Commentary("HigherAfterEntry:"+Text(HigherAfterEntry[1]) );
If (MarketPosition ==-1) Commentary("LowerAfterEntry:"+Text(LowerAfterEntry[1]) );
}
//计算盈利回撤跳数和回撤比例
If(MarketPosition == 1 && BarsSinceentry >0 )
{
MaxWinPoint=(HigherAfterEntry[1]-myEntryPrice)/ MinPoint;
RetracementPoint = (HigherAfterEntry[1]-Low)/ MinPoint ;
RetracementRate =RetracementPoint/MaxWinPoint;
Commentary("MaxWinPoint:"+Text(MaxWinPoint) );
Commentary("RetracementPoint:"+Text(RetracementPoint));
Commentary("RetracementRate:"+Text(RetracementRate));
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate) And MaxWinPoint>=StartWinPoint)
{
Commentary("多头止盈");
Sell(0,Low); //多头止盈
LongCurrentContracts=0;
//反手操作
If (LotsBackhand>0 And Not CloseBefore)
{
LotsIni=LotsBackhand;
Commentary("多头止盈后反手做空");
SellShort(LotsIni,Low);
myEntryPrice=Low;
LowerAfterEntry=Low;
ShortCurrentContracts=LotsIni;
Return;
}
}
}else If(MarketPosition == -1 && BarsSinceentry >0)
{
MaxWinPoint=(myEntryPrice-LowerAfterEntry[1])/ MinPoint ;
RetracementPoint = (High-LowerAfterEntry[1])/ MinPoint;
RetracementRate =RetracementPoint/MaxWinPoint;
Commentary("MaxWinPoint:"+Text(MaxWinPoint));
Commentary("RetracementPoint:"+Text(RetracementPoint));
Commentary("RetracementRate:"+Text(RetracementRate));
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate) And MaxWinPoint>=StartWinPoint )
{
Commentary("空头止盈");
BuyToCover(0,High); //空头止盈
ShortCurrentContracts=0;
//反手操作
If (LotsBackhand>0 And Not CloseBefore)
{
LotsIni=LotsBackhand;
Commentary("空头止盈后反手做多");
Buy(LotsIni,High);
myEntryPrice=High;
HigherAfterEntry=High;
LongCurrentContracts=LotsIni;
Return;
}
}
}
//跟踪止盈结束
上面的一止盈正常,下面的4级止盈不能正常止盈,请老师帮忙看下。
Params
Numeric StartWinPoint1(30); //启动止盈跳数
Numeric WinRetracementPoint(180); //盈利回撤跳数
Numeric WinRetracementRate1(0.9); //盈利回撤比例
Numeric StartWinPoint2(60); //启动止盈跳数
Numeric WinRetracementRate2(0.7); //盈利回撤比例
Numeric StartWinPoint3(120); //启动止盈跳数
Numeric WinRetracementRate3(0.5); //盈利回撤比例
Numeric StartWinPoint4(200); //启动止盈跳数
Numeric WinRetracementRate4(0.3); //盈利回撤比例
Vars
Series<Numeric> StopLossPrice;
Series<Numeric> HigherAfterEntry;
Series<Numeric> LowerAfterEntry;
Series<Numeric> myEntryPrice;
Series<Numeric> RetracementPoint;
Series<Numeric> RetracementRate;
Series<Numeric> MinPoint; //1跳点位
Series<Numeric> MaxWinPoint;
Events
//开始跟踪止盈
//记录入场后的最高价和最低价
//------------------------------------------------------------------------------------------------
If(MarketPosition == 1 && BarsSinceentry >=1)
{
HigherAfterEntry = Highest(High,BarsSinceentry);
//PlotNumeric("HigherAfterEntry",HigherAfterEntry);
}else If(MarketPosition == -1 && BarsSinceentry >=1)
{
LowerAfterEntry = Lowest(Low,BarsSinceentry);
//PlotNumeric("LowerAfterEntry",LowerAfterEntry);
}
If(BarsSinceentry>0)
{
Commentary("MinPoint:"+Text(MinPoint)+"点");
//myEntryPrice=EntryPrice;
Commentary("myEntryPrice:"+Text(myEntryPrice) );
Commentary("BarsSinceentry:"+Text(BarsSinceentry) );
If (MarketPosition == 1) Commentary("HigherAfterEntry:"+Text(HigherAfterEntry[1]) );
If (MarketPosition ==-1) Commentary("LowerAfterEntry:"+Text(LowerAfterEntry[1]) );
}
//计算盈利回撤跳数和回撤比例
If(MarketPosition == 1 && BarsSinceentry >0 )
{
MaxWinPoint=(HigherAfterEntry[1]-myEntryPrice)/ MinPoint;
RetracementPoint = (HigherAfterEntry[1]-Low)/ MinPoint ;
RetracementRate =RetracementPoint/MaxWinPoint;
Commentary("MaxWinPoint:"+Text(MaxWinPoint) );
Commentary("RetracementPoint:"+Text(RetracementPoint));
Commentary("RetracementRate:"+Text(RetracementRate));
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate1) And (MaxWinPoint>=StartWinPoint1 And MaxWinPoint<=StartWinPoint2))
{
Commentary("多头止盈1");
Sell(0,Low); //多头止盈
LongCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate2) And (MaxWinPoint>=StartWinPoint2 And MaxWinPoint<=StartWinPoint3))
{
Commentary("多头止盈2");
Sell(0,Low); //多头止盈
LongCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate3) And (MaxWinPoint>=StartWinPoint3 And MaxWinPoint<=StartWinPoint4))
{
Commentary("多头止盈3");
Sell(0,Low); //多头止盈
LongCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate4) And MaxWinPoint>=StartWinPoint4)
{
Commentary("多头止盈4");
Sell(0,Low); //多头止盈
LongCurrentContracts=0;
//反手操作
If (LotsBackhand>0 )
{
LotsIni=LotsBackhand;
Commentary("多头止盈后反手做空");
SellShort(LotsIni,Low);
myEntryPrice=Low;
LowerAfterEntry=Low;
ShortCurrentContracts=LotsIni;
Return;
}
}
}
}
}
}else If(MarketPosition == -1 && BarsSinceentry >0)
{
MaxWinPoint=(myEntryPrice-LowerAfterEntry[1])/ MinPoint ;
RetracementPoint = (High-LowerAfterEntry[1])/ MinPoint;
RetracementRate =RetracementPoint/MaxWinPoint;
Commentary("MaxWinPoint:"+Text(MaxWinPoint));
Commentary("RetracementPoint:"+Text(RetracementPoint));
Commentary("RetracementRate:"+Text(RetracementRate));
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate1) And (MaxWinPoint>=StartWinPoint1 And MaxWinPoint<=StartWinPoint2))
{
Commentary("空头止盈1");
BuyToCover(0,High); //空头止盈
ShortCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate2) And (MaxWinPoint>=StartWinPoint2 And MaxWinPoint<=StartWinPoint3))
{
Commentary("空头止盈2");
BuyToCover(0,High); //空头止盈
ShortCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate3) And (MaxWinPoint>=StartWinPoint3 And MaxWinPoint<=StartWinPoint4))
{
Commentary("空头止盈3");
BuyToCover(0,High); //空头止盈
ShortCurrentContracts=0;
If ((RetracementPoint>=WinRetracementPoint Or RetracementRate>=WinRetracementRate4) And MaxWinPoint>=StartWinPoint4)
{
Commentary("空头止盈4");
BuyToCover(0,High); //空头止盈
ShortCurrentContracts=0;
//反手操作
If (LotsBackhand>0 )
{
LotsIni=LotsBackhand;
Commentary("空头止盈后反手做多");
Buy(LotsIni,High);
myEntryPrice=High;
HigherAfterEntry=High;
LongCurrentContracts=LotsIni;
Return;
}
}
}
}
}
}
//跟踪止盈结束