- 精华
- 0
- 在线时间
- 46 小时
- UID
- 222123
- 积分
- 24
- 帖子
- 15
- 阅读权限
- 10
- 注册时间
- 2015-10-28
- 最后登录
- 2018-2-28
- 精华
- 0
- UID
- 222123
- 积分
- 24
- 帖子
- 15
- 主题
- 9
- 阅读权限
- 10
- 注册时间
- 2015-10-28
- 最后登录
- 2018-2-28
|
代码如下Params
Numeric spp(1);//开仓资金占可用资金比率
Numeric bzb(15);//保证金比率
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric moff(0);
Numeric mylot(0);
NumericSeries HighestAfterEntry; // 开仓后出现的最高价
NumericSeries LowestAfterEntry; // 开仓后出现的最低价
Numeric MyEntryPrice(0);
Numeric MyExitPrice(0);
Begin
AvgValue1 = AverageFC(Close,5);
AvgValue2 = AverageFC(Close,20);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
//实际账户
If(BarStatus==2)
{
mylot=IntPart(A_FreeMargin*spp/(close*bzb*0.01*BigPointValue*contractunit));
}
moff=MinMove*PriceScale;//滑点
//
If(BarStatus==0)
{
SetGlobalVar(0,0);
}
//
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{MyExitPrice =AvgValue1[1]+moff;
If(barstatus==2 )
{
If(GetGlobalVar(0)==0)
{
if(data1.A_SellPosition>0) data1.A_SendOrder(Enum_Buy,Enum_Exit,data1.A_SellPosition,data1.Q_askPrice+moff);
if(data1.a_buyposition>0) data1.A_SendOrder(Enum_Sell,Enum_Exit,data1.a_buyposition,data1.Q_BidPrice-moff);
SetGlobalVar(0,1);
If(A_FreeMargin>0.7*A_CurrentEquity) Buy(mylot,MyExitPrice+moff);
}
}Else
{
Buy(mylot,MyExitPrice+moff);
HighestAfterEntry = Close;
LowestAfterEntry = Close;
SetGlobalVar(0,0);
}
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{MyExitPrice =AvgValue1[1]-moff;
If(barstatus==2 )
{
If(GetGlobalVar(0)==0)
{
if(data1.A_SellPosition>0) data1.A_SendOrder(Enum_Buy,Enum_Exit,data1.A_SellPosition,data1.Q_askPrice+moff);
if(data1.a_buyposition>0) data1.A_SendOrder(Enum_Sell,Enum_Exit,data1.a_buyposition,data1.Q_BidPrice-moff);
SetGlobalVar(0,1);
If(A_FreeMargin>0.7*A_CurrentEquity) SellShort(mylot,MyExitPrice-moff);
}
}Else
{
SellShort(mylot,MyExitPrice-moff);
HighestAfterEntry = Close;
LowestAfterEntry = Close;
SetGlobalVar(0,0);
}
}
//平仓:
If((MarketPosition>0 And BarsSinceEntry >=10))
{
If(BarStatus==2 and data1.a_buyposition>0)
{
data1.A_SendOrder(Enum_Sell,Enum_Exit,data1.a_buyposition,data1.Q_BidPrice-moff);
}else
{
Sell(0,0);
}
}
If((marketposition<0 And BarsSinceEntry >=10))
{
If(barstatus==2 and data1.A_SellPosition>0)
{
data1.A_SendOrder(Enum_Buy,Enum_Exit,data1.A_SellPosition,data1.Q_askPrice+moff);
}else
{
BuyToCover(0,0);
}
}
//跟踪止损
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
MyEntryPrice = EntryPrice;
//
If( MarketPosition==1 and BarsSinceEntry>0 ) // 有多仓的情况
{
if(HighestAfterEntry >= MyEntryPrice*(1+6.9/100) )// 第2级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry-2*moff)
{
// 如果该Bar开盘价有跳空触发,则用开盘价代替
//
If(BarStatus==2 and data1.a_buyposition>0)
{
data1.A_SendOrder(Enum_Sell,Enum_Exit,data1.a_buyposition,data1.Q_BidPrice-moff);
}else
{
Sell(0,0);
}
}
}
请高手帮忙。 |
|