金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3807|回复: 5

开仓手数异常

[复制链接]

28

主题

66

帖子

66

积分

等级: 免费版

注册:
2022-4-28
曾用名:
发表于 2022-5-17 19:35 | 显示全部楼层 |阅读模式
采用固定金额3万/品种保证金,确定开仓手数,在回测过程发下手数异常:
苹果加权两笔异常,其他品种好像也有
截图202205171935026095.png
截图202205171934259094.png
回复

使用道具 举报

28

主题

66

帖子

66

积分

等级: 免费版

注册:
2022-4-28
曾用名:
 楼主| 发表于 2022-5-17 19:39 | 显示全部楼层
曲线、保证金异常
截图202205171939285672.png
回复

使用道具 举报

37

主题

9943

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-17 21:29 | 显示全部楼层
检查下,是不是有其他地方对手数的变量有干扰,或者把完整代码贴出来。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

28

主题

66

帖子

66

积分

等级: 免费版

注册:
2022-4-28
曾用名:
 楼主| 发表于 2022-5-17 21:41 | 显示全部楼层
技术006 发表于 2022-5-17 21:29
检查下,是不是有其他地方对手数的变量有干扰,或者把完整代码贴出来。

A:=(3*C+L+O+H)/6;
B:(20*A+19*REF(A,1)+18*REF(A,2)+17*REF(A,3)+16*REF(A,4)+15*REF(A,5)+14*REF(A,6)+13*REF(A,7)+12*REF(A,8)+11*REF(A,9)+10*REF(A,10)+9*REF(A,11)+8*REF(A,12)+7*REF(A,13)+6*REF(A,14)+5*REF(A,15)+4*REF(A,16)+3*REF(A,17)+2*REF(A,18)+REF(A,20))/210;
D:MA(B,10);
ATR:=MA(TR,26);
RB:=STKINDIEX('','DKX测试.B',0,6,-1,100);
RD:=STKINDIEX('','DKX测试.D',0,6,-1,100);

KD:=B>D AND RB>RD AND HOLDING=0;          //开多条件AND RB>RD
PD:=B<D;          //平多条件
IF KD THEN BEGIN
  TEMP:=FLOOR(30000/(C*DYNAINFO(209)*TACCOUNT(41)));
  手数:if(temp=0,1,TEMP);
  开多:BUY(KD,手数,THISCLOSE);          //开多信号  
END

IF HOLDING=手数 THEN BEGIN
  加多:BUY(C>=ENTERPRICE+0.5*ATR,手数,THISCLOSE);
END

平多:SELL(PD,100%,THISCLOSE);                       //平多信号

KK:=B<D AND RB<RD AND HOLDING=0 ;          //开空条件AND RB>RD
PK:=B>D;          //平多条件
IF KK THEN BEGIN
  TEMP:=FLOOR(30000/(C*DYNAINFO(209)*TACCOUNT(41)));
  手数2:if(temp=0,1,TEMP);
  开空:BUYSHORT(KK,手数2,THISCLOSE);          //开空信号
END

IF HOLDING=-手数 THEN BEGIN
加空:BUYSHORT(C<=ENTERPRICE-0.5*ATR,手数2,THISCLOSE);
END

平空:SELLSHORT(PK,100%,THISCLOSE);                       //平空信号


持仓:holding,linethick0;
资产:asset,noaxis;
浮动盈亏:OPENPROFIT,NODRAW;
开仓价:ENTERPRICE,nodraw;
回复

使用道具 举报

37

主题

9943

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-17 21:54 | 显示全部楼层
本帖最后由 技术006 于 2022-5-17 21:55 编辑

TEMP:=FLOOR(30000/(C*DYNAINFO(209)*TACCOUNT(41)));
手数:if(temp=0,1,TEMP);

放到最外面,并且不要加条件(整个代码中搞两个一样的代码计算手数,没有意义,可以精简掉)。你代码中关于手数的两个条件都不成立时,temp默认等于0 ,代表的就是全开。

或者你在最上面赋一个初始值。temp:=1;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

28

主题

66

帖子

66

积分

等级: 免费版

注册:
2022-4-28
曾用名:
 楼主| 发表于 2022-5-17 22:25 | 显示全部楼层
技术006 发表于 2022-5-17 21:54
TEMP:=FLOOR(30000/(C*DYNAINFO(209)*TACCOUNT(41)));
手数:if(temp=0,1,TEMP);

可以了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-5-28 05:15 , Processed in 0.149262 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表