- 精华
- 0
- 在线时间
- 274 小时
- UID
- 4140
- 积分
- 1557
- 帖子
- 242
- 阅读权限
- 70
- 注册时间
- 2009-4-17
- 最后登录
- 2020-11-26
- 精华
- 0
- UID
- 4140
- 积分
- 1557
- 帖子
- 242
- 主题
- 49
- 阅读权限
- 70
- 注册时间
- 2009-4-17
- 最后登录
- 2020-11-26
|
不太明白,我一直是使用的最后bar的最新价格啊!
我简略的说一下:见笑了,我的全局变量似乎不是正常用法,只是一个一般变量的用法,配合持仓判断的综合使用
计算各种开仓平仓价格后
If (MarketPosition == 0) //开仓条件如下,如果没有持仓,如果有持仓不执行以下开仓If判断,注意由于是模拟测试帐户,没有加入停板的处理方式
{
If (Q_Last >= Bcon0 && Low <= Bcon0 )
{
Buyenterprice = Bcon0 + offprice; //得出开多仓价格
Buy(lots1,Buyenterprice); //开多仓
SetGlobalVar(0,0); //只要开仓了,全局0归为0
SetGlobalVar(1,0); //只要开仓了,全局1归为0
FileAppend("e:\\Buyposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"多头开仓");
}
If (Q_Last <= Scon0 && High >=Scon0 )
{
sellenterprice = Scon0 - offprice; //得出开空仓价格
SellShort(lots1,sellenterprice); //开空仓
SetGlobalVar(2,0); //只要开仓了,全局2归为0
SetGlobalVar(3,0); //只要开仓了,全局3归为0
FileAppend("e:\\Sellposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"空头开仓");
}
}
//以下为多头止损止盈方式
If (MarketPosition == 1) //如果持多头,在这里测试模拟账户无法获得确切的持仓数量,只能用MarketPosition做判断
{
If(Q_Last <= Bcon1 ) //如果当前bar最新价 小于等于 Bcon1 预设止损价位
{
Boutprice1 = Bcon1 - offprice;
Sell(0,Boutprice1); //全部多头止损平仓
FileAppend("e:\\Buyposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"多头止损");
}Else If (Q_Last >= Bcon2 && Q_Last < Bcon3 && GetGlobalVar(0)!=1) //控制只平一次仓,如果全局变量0不等于1,执行平仓,以上开仓后被设为0,所以
满足
{
Boutprice2 = Bcon2 - offprice;
Sell(lots2,Boutprice2); //止盈平仓第一次
SetGlobalVar(0,1); //平仓一次后,全局0被设为1,防止再次平仓
FileAppend("e:\\Buyposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"多头止盈一次");
}Else If (Q_Last >= Bcon3 && GetGlobalVar(1)!=1) //控制只平一次仓,如果全局变量1不等于1,执行平仓,以上开仓后被设为0,所以满足
{
Boutprice3 = Bcon3 - offprice;
Sell(lots2,Boutprice3); //止盈平仓第二次,日后再加对涨停的操作
SetGlobalVar(1,1); //平仓一次后,全局1被设为1,防止再次平仓
FileAppend("e:\\Buyposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"多头止盈二次");
}
If (Currenttime >= 0.1455 ) //本地电脑时间大于等于14:55
{
Boutprice4 = Q_Last - offprice;
Sell(0,Boutprice4);//全部多头平仓
FileAppend("e:\\Buyposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"多头收盘平仓");
}
}
//以下为空头止损止盈方式
If (MarketPosition == -1) //如果持空头,在这里测试模拟账户无法获得确切的持仓数量,只能用MarketPosition做判断
{
If (Q_Last >= Scon1)
{
Soutprice1 = Scon1 + offprice;
BuyToCover(0,Soutprice1); //全部空头止损平仓
FileAppend("e:\\Sellposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"空头止损");
}Else If (Q_Last <= Scon2 && Q_Last > Scon3 && GetGlobalVar(2)!=1) //控制只平一次仓,如果全局变量2不等于1,执行平仓,以上开仓
后被设为0,所以满足
{
Soutprice2 = Scon2 + offprice;
BuyToCover(lots2,Soutprice2); //止盈平仓第一次
SetGlobalVar(2,1); //平仓一次后,全局2被设为1,防止再次平仓
FileAppend("e:\\Sellposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"空头止盈一次");
}Else If (Q_Last <= Scon3 && GetGlobalVar(3)!=1) //控制只平一次仓,如果全局变量3不等于1,执行平仓,以上开仓后
被设为0,所以满足
{
Soutprice3 = Scon3 + offprice;
BuyToCover(lots2,Soutprice3); //止盈平仓第二次,,日后再加对跌停的操作
SetGlobalVar(3,1); //平仓一次后,全局3被设为1,防止再次平仓
FileAppend("e:\\Sellposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"空头止盈二次");
}
If (Currenttime >= 0.1455 ) //本地电脑时间大于等于14:55
{
Soutprice4 = Q_Last + offprice;
BuyToCover(0,Soutprice4);//全部空头平仓
FileAppend("e:\\Sellposition.log",Symbol+","+Text(Date)+","+Text(Time*10000)+","+Text(MarketPosition)+","+Text(Q_Last)+"空头收盘平仓");
}
}
[ 本帖最后由 天柏 于 2009-5-22 08:57 编辑 ] |
|