- 精华
- 0
- 在线时间
- 24 小时
- UID
- 115187
- 积分
- 36
- 帖子
- 32
- 阅读权限
- 10
- 注册时间
- 2013-1-28
- 最后登录
- 2013-2-27
- 精华
- 0
- UID
- 115187
- 积分
- 36
- 帖子
- 32
- 主题
- 4
- 阅读权限
- 10
- 注册时间
- 2013-1-28
- 最后登录
- 2013-2-27
|
Params
Numeric K1(1.22);
Numeric K2(2.21);//突破幅度
Numeric Mday(6);
Numeric Nday(1);//统计的时间,单位,天
Numeric lots(1);
Numeric offset(25);//滑点设置
Vars
Numeric BuyRange(0);
Numeric SellRange(0);
Numeric BuyTrig(0);
Numeric SellTrig(0);
Numeric HH;
Numeric LL;
Numeric HC;
Numeric LC;
Numeric i_offset;
Numeric BuyPosition;
Numeric SellPosition;
Numeric MinPoint; // 一个最小变动单位,也就是一跳
Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
Numeric TakeProfitSet(92); // 止赢设置
Numeric StopLossSet(16); // 止损设置
Numeric MyExitPrice; // 平仓价格
Begin
...
MinPoint = MinMove*PriceScale;
MyEntryPrice = AvgEntryPrice;
If(MarketPosition==1) // 有多仓的情况
{
If(High >= MyEntryPrice + TakeProfitSet*MinPoint) // 止赢条件表达式
{
MyExitPrice = MyEntryPrice + TakeProfitSet*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
}else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
}
}else if(MarketPosition==-1) // 有空仓的情况
{
If(Low <= MyEntryPrice - TakeProfitSet*MinPoint) // 止赢条件表达式
{
MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
}else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
}
}
...
if ((close==Q_LowerLimit) or (close==Q_UpperLimit))
{
return;
}
//当最新价等于涨停或者跌停价时,不往下执行公式。
If(CurrentBar > 45*Max(Mday,Nday)&&(date!=date[1]))//使用的是5分钟周期,其它的周期自己做相应修改
//当前公式应用商品在当前Bar的时间乘以100》=9点或者小于14.55分
{
i_offset = offset*MinMove*PriceScale;//MinMove当前公式应用商品的最小变动量
//PriceScale当前公式应用商品的计数单位。
HH = Highest(HighD(1),Mday);//Highest求最高值. HighD求N天前的最高价 Mday统计的时间,单位,天
HC = Highest(CloseD(1),Mday);
LL =Lowest(LowD(1),Mday);//Lowest求最低值. LowD求N天前的最低价
LC = Lowest(CloseD(1),Mday);
If((HH - LC) >= (HC - LL))//如果昨天的最高价-昨天的最低收盘价》=昨天的最高价-昨天的最低收盘价
{
SellRange = HH - LC;//昨天的最高价-昨天的最低收盘价
}
Else//否则执行
{
SellRange = HC - LL;//昨天的最高收盘价-昨天的最低价
}
HH = Highest(HighD(1),Nday);
HC = Highest(CloseD(1),Nday);
LL = Lowest(LowD(1),Nday);
LC = Lowest(CloseD(1),Nday);
If((HH - LC) >= (HC - LL))
{
BuyRange = HH - LC;//昨天的最高价-昨天的最低收盘价
}
Else
{
BuyRange = HC - LL;//昨天的最高收盘价-昨天的最低价
}
BuyTrig = K1*BuyRange;//突破幅度乘以BuyRange
SellTrig = K2*SellRange;
BuyPosition = OpenD(0)+BuyTrig;//OpenD求N天前的开盘价 [daysAgo 最近N天,0为当天,1为昨天,依次类推。]
SellPosition = OpenD(0)-SellTrig;
If(MarketPosition == 0)//1 当前位置为持空仓
//0 当前位置为持平
//1 当前位置为持多仓
{
If(High>=BuyPosition)//如果当前k线最高价》=当前k线的开盘价
{
buy(lots,Max(Open,BuyPosition)-i_offset);//Max求最大值
Return;
}
If(Low<=SellPosition)
{
SellShort(lots,Min(Open,SellPosition)+i_offset);//Min求最小值, -i_offset滑点
Return;//返回
}
}
}
End |
|