- 精华
- 0
- 在线时间
- 10 小时
- UID
- 259445
- 积分
- 18
- 帖子
- 12
- 阅读权限
- 10
- 注册时间
- 2017-11-21
- 最后登录
- 2020-3-16
- 精华
- 0
- UID
- 259445
- 积分
- 18
- 帖子
- 12
- 主题
- 6
- 阅读权限
- 10
- 注册时间
- 2017-11-21
- 最后登录
- 2020-3-16
|
本帖最后由 xhqh96801317 于 2019-11-9 13:53 编辑
代码如下:
//------------------------------------------------------------------------
// 简称: bull_trade
// 名称:
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
//开多仓
Params
Numeric number(2); //买卖手数
Numeric sell_price(0.2); //买卖价格---滑点?
Numeric A(100.12); //当前收盘价下跌x%
Numeric M30_20(20); //20根(半小时K线周期)
Numeric loss(100.20); //止损
Numeric BandRange(20);
Vars
Numeric bull_mid; //布林线中轨
Numeric bull_down; //布林线下轨
Numeric bull_up; // 布林线上轨
Numeric entry; //标记进入策略
Numeric B; //平均进入价格
NumericSeries myflag(0);
Begin
If(BarStatus == 0)
{
myflag = 0;
}Else
{
bull_mid = Average(Close, M30_20); //20根均线--中轨
PlotNumeric("bull_mid", bull_mid);
bull_down = Average(Close, M30_20)-2*StandardDev(Close, M30_20);
PlotNumeric("bull_down", bull_down);
bull_up = Average(Close, M30_20)+2*StandardDev(Close, M30_20);
PlotNumeric("bull_up", bull_up);
//---------集合竞价和小节休息过滤-------/////
If(IsCallAuctionTime()) return;//集合竞价
If ((Close==Q_LowerLimit || Close==Q_UpperLimit) AND BarStatus == 2) Return;
If (MarketPosition == 0 && time!=0.1459 && myflag==0)
{
If(bull_up-bull_mid>BandRange)
{
If (High > bull_up*A/100)
{
myflag=1; //进场信号发出,下根K线开盘进场
}
}
}
Else If(MarketPosition == 0 && time!=0.1459 && myflag==1 && Close<bull_up)
{
SellShort(number, Open+sell_price);
myflag=2; //持仓
} Else If(MarketPosition<0 and BarsSinceEntry >0)
{
B=AvgEntryPrice;
If(Close>=B*loss/100 and (Close>bull_up || Open>bull_up) ) //止损
{
BuyToCover(0, Close+sell_price);
myflag=0;
}
If(Close <= bull_mid and myflag == 2)
{
BuyToCover(0, Close+sell_price);
myflag=0;
}
}Else
{
myflag=0;
}
}
End
//------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2019/11/01 10:33:21
// 版权所有 cying01
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
问题就是在实盘中 当我持仓 1手空单时,BuyToCover(0, Close+sell_price); 并不是平仓1手,而是开了2手多单,空单的持仓依然存在,还有就是此公式运用在30分钟K线,但是BuyToCover(0, Close+sell_price)的交易发生的时间却是在23分,而不是K线走完时的价格,跪求解决
另:开空仓时间为早上10点,平仓时间为当天下午1点23分 |
|