欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 日内不平仓

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3804人关注过本帖树形打印复制链接

主题:日内不平仓

帅哥哟,离线,有人找我吗?
c100010592
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:109 积分:0 威望:0 精华:0 注册:2015/12/28 9:15:40
  发帖心情 Post By:2016/5/31 13:43:27    Post IP:180.175.16.170[只看该作者]

第一张图上的第一笔交易后没有平仓,第二张图上的最后一笔是强制平仓,1707手是前面所有累计没有平仓的手数。

 回到顶部
帅哥哟,离线,有人找我吗?
c100010592
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:109 积分:0 威望:0 精华:0 注册:2015/12/28 9:15:40
  发帖心情 Post By:2016/5/31 13:48:03    Post IP:180.175.16.170[只看该作者]

//声明参数
INPUT:N(1,1,100,1);
INPUT:K1(0.7,0.1,1,0.1);
INPUT:K2(0.7,0.1,1,0.1);
INPUT:ATRLEN(20,10,30,1);
INPUT:NMIN(10,1,100,1);
INPUT:TTM(50,50,500,10);
//声明变量
VARIABLE:POSITION=0;
VARIABLE:实际开仓手数=0;
VARIABLE:止损价格1=0;
VARIABLE:止损价格2=0;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
//准备需要计算的变量
HH:=CALLSTOCKEX(STKLABEL,VTHIGH,6,-1,N);//N日HIGH的最高价
LL:=CALLSTOCKEX(STKLABEL,VTLOW,6,-1,N);//N日LOW的最低价
昨日收盘:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HC:=HHV(昨日收盘,N);//N日CLOSE的最高价
LC:=LLV(昨日收盘,N);//N日CLOSE的最低价
浮动区间:=MAX(HH-LC,HC-LL);
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
AVGTR:=REF(MA(TR,ATRLEN),1);
手数:=FLOOR(TTM*100/(2*AVGTR*MULTIPLIER));
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
//开始执行时,初始化数据
IF BARPOS=1 THEN BEGIN
    POSITION:=0;  
END  //IF
//交易条件
开多条件:=C>上轨 AND POSITION=0;
开空条件:=C<下轨 AND POSITION=0;
//交易系统
IF 开多条件 AND T1 AND CYC>1 THEN BEGIN
BUY(1,手数,MARKET);
POSITION:=1;
实际开仓手数:=手数;
止损价格1:=c-2*AVGTR;
END//IF
IF 开空条件 AND T1 AND CYC>1 THEN BEGIN
BUYSHORT(1,手数,MARKET);
POSITION:=-1;
实际开仓手数:=手数;
止损价格2:=c+2*AVGTR;
END//IF
IF  LOW<=止损价格1 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END
IF  T2 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
IF  HIGH>=止损价格2 AND POSITION=-1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END
IF  T2 AND POSITION=-1 THEN BEGIN
SELLSHORT(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
这个是程序

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/5/31 13:51:25    Post IP:180.173.43.114[只看该作者]

意思是要全平而不是用设定好的手数?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/5/31 13:52:11    Post IP:180.173.43.114[只看该作者]

IF  T2 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
IF  T2 AND POSITION=-1 THEN BEGIN
SELLSHORT(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
这个是程序
把“实际开仓手数”改成数字0


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
c100010592
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:109 积分:0 威望:0 精华:0 注册:2015/12/28 9:15:40
  发帖心情 Post By:2016/5/31 13:52:41    Post IP:180.175.16.170[只看该作者]

以上程序不对,是上一版的,重粘
//声明参数
INPUT:N(1,1,100,1);
INPUT:K1(0.7,0.1,1,0.1);
INPUT:K2(0.7,0.1,1,0.1);
INPUT:ATRLEN(20,10,30,1);
INPUT:NMIN(10,1,100,1);
INPUT:TTM(50,50,500,10);
//声明变量
VARIABLE:POSITION=0;
VARIABLE:实际开仓手数=0;
VARIABLE:止损价格1=0;
VARIABLE:止损价格2=0;
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
//准备需要计算的变量
HH:=CALLSTOCKEX(STKLABEL,VTHIGH,6,-1,N);//N日HIGH的最高价
LL:=CALLSTOCKEX(STKLABEL,VTLOW,6,-1,N);//N日LOW的最低价
昨日收盘:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HC:=HHV(昨日收盘,N);//N日CLOSE的最高价
LC:=LLV(昨日收盘,N);//N日CLOSE的最低价
浮动区间:=MAX(HH-LC,HC-LL);
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
AVGTR:=REF(MA(TR,ATRLEN),1);
手数:=FLOOR(TTM*100/(2*AVGTR*MULTIPLIER));
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=time0>=(timetot0(closetime(0))-60*nmin);
//开始执行时,初始化数据
IF BARPOS=1 THEN BEGIN
    POSITION:=0;  
END  //IF
//交易条件
开多条件:=C>上轨 AND POSITION=0;
开空条件:=C<下轨 AND POSITION=0;
//交易系统
IF 开多条件 AND T1 AND CYC>1 THEN BEGIN
BUY(1,手数,MARKET);
POSITION:=1;
实际开仓手数:=手数;
止损价格1:=c-2*AVGTR;
END//IF
IF 开空条件 AND T1 AND CYC>1 THEN BEGIN
BUYSHORT(1,手数,MARKET);
POSITION:=-1;
实际开仓手数:=手数;
止损价格2:=c+2*AVGTR;
END//IF
IF  LOW<=止损价格1 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END
IF  T2 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
IF  HIGH>=止损价格2 AND POSITION=-1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END
IF  T2 AND POSITION=-1 THEN BEGIN
SELLSHORT(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF

是这个

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/5/31 13:56:23    Post IP:180.169.30.6[只看该作者]

那还是一样的思路:是不是收盘前要清仓?其他的平仓是清仓还是按照写好的手数来?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
c100010592
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:109 积分:0 威望:0 精华:0 注册:2015/12/28 9:15:40
  发帖心情 Post By:2016/5/31 13:56:54    Post IP:180.175.16.170[只看该作者]

1,不是要全平,全平的话会把其他策略的持仓给平掉;
2,是要平掉实际开仓手数。

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/5/31 13:57:39    Post IP:180.173.43.114[只看该作者]

IF  T2 AND POSITION=1 THEN BEGIN
SELL(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
IF  T2 AND POSITION=-1 THEN BEGIN
SELLSHORT(1,实际开仓手数,MARKET);
POSITION:=0;
END//IF
这两段是多空的收盘前清仓代码,把里面的“实际开仓手数”改成holding
[此贴子已经被作者于2016-5-31 14:02:52编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/5/31 14:03:18    Post IP:180.173.43.114[只看该作者]

这样就能清掉当前策略的剩余持仓而不会去平掉其他策略的持仓


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
c100010592
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:109 积分:0 威望:0 精华:0 注册:2015/12/28 9:15:40
  发帖心情 Post By:2016/5/31 14:06:07    Post IP:180.175.16.170[只看该作者]

我有多个策略在一个账户里运行,不能平HOLDING 。
我是这样的思路:
1,开仓后把开仓手数写到全局变量“实际开仓手数”,把拟定的止损价格写到全局变量“止损价格1”
    IF 开多条件 AND T1 AND CYC>1 THEN BEGIN
    BUY(1,手数,MARKET);
    POSITION:=1;
    实际开仓手数:=手数;
    止损价格1:=c-2*AVGTR;
2,如果价格到了止损价位,按“实际开仓手数”平仓
    IF  LOW<=止损价格1 AND POSITION=1 THEN BEGIN
    SELL(1,实际开仓手数,MARKET);
    POSITION:=0;
    END
3,如果盘中没有触发止损,收盘前按“实际开仓手数”平仓
    IF  T2 AND POSITION=1 THEN BEGIN
    SELL(1,实际开仓手数,MARKET);
    POSITION:=0;
   END//IF


在测试的时候,查看交易明细,发现有开仓后不当日平仓的情况,然后会集中到测试时间段的最后一天强制平仓,不知道程序的问题在哪里,请教!

 回到顶部
总数 26 上一页 1 2 3 下一页