金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 376|回复: 8

后台策略:结果不一致的问题

[复制链接]

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
发表于 2024-8-26 09:54 | 显示全部楼层 |阅读模式
后台策略,两方面问题:第一是在条件触发时,输出了挂多和挂空两条方向不一致的信息,实际情况只符合一种情况;第二是条件触发后的下单,也与实际情况不相符。查看运行时变量,各种提示都与策略设计相符,不明白为何下单不一致。
input:MAXHOLDING(10,10,1000,1),DELAY(10,5,20,1),DEBUG(1,0,1,1),DD(80,11,150,2);//,Y(8,1,30,1);
//后台运行,固定扫描间隔500毫秒
//信息输出开启:参数debug=1;信息输出关闭:参数debug=0
GLOBALVARIABLE: timer1:=0,timer2:=0,timer3:=0,timer4:=0,timer5:=0,timer44:=300;
GLOBALVARIABLE: op:=0,op1:=0,op2:=0,op3:=0,scan:=0;
if (timer1>0 ) then timer1:=timer1-1;//Tick 计时,每个Tick0.5秒
if (timer2>0 ) then timer2:=timer2-1;//Tick 计时,每个Tick0.5秒
if (timer3>0 ) then timer3:=timer3-1;//Tick 计时,每个Tick0.5秒
if (timer4>0 ) then timer4:=timer4-1;//Tick 计时,每个Tick0.5秒
if (timer5>0 ) then timer5:=timer5-1;//Tick 计时,每个Tick0.5秒

if (timer44>0 ) then timer44:=timer44-1;else timer4:=300;//Tick 计时,每个Tick0.5秒

EXTGBDATASET('timer44',timer44);
scan:=scan+1;
EXTGBDATASET('scan',scan);

if (做多区域 AND (箱顶变  OR 箱底变)) then
begin TCANCEL(1,0); timer1:=delay; op1:=1;end
if (timer1=1 and op1=1)  then
BEGIN
op1:=0;msgout(debug,STKLABEL+' '+STKNAME+'-----挂多');
if (TSELLHOLDINGEX('','',1)>0) then TSELLSHORT(1,0,LMT,开多1);
if (TBUYHOLDINGEX('','',1)<100*SS) then TBUY(1,2*SS,LMT,开多1);
if (TBUYHOLDINGEX('','',1)<100*SS) then TBUY(1,2*SS,LMT,开多2);
if (TBUYHOLDINGEX('','',1)>3*SS) then TSELL(1,2*SS,LMT,平多1);
if (TBUYHOLDINGEX('','',1)>5*SS) then TSELL(1,2*SS,LMT,平多2);
END

////////////////
if (做空区域 AND (箱顶变 OR 箱底变)) then
begin TCANCEL(1,0); timer2:=delay; op2:=1;end
if (timer2=1 and op2=1)  then
BEGIN
op2:=0;msgout(debug,STKLABEL+' '+STKNAME+'-----挂空');
if (TBUYHOLDINGEX('','',1)>0) then TSELL(1,0,LMT,开空1);
if (TSELLHOLDINGEX('','',1)<100*SS) then TBUYSHORT(1,2*SS,LMT,开空1);
if (TSELLHOLDINGEX('','',1)<100*SS) then TBUYSHORT(1,2*SS,LMT,开空2);
if (TSELLHOLDINGEX('','',1)>3*SS ) then TSELLSHORT(1,2*SS,LMT,平空1);
if (TSELLHOLDINGEX('','',1)>5*SS ) then TSELLSHORT(1,2*SS,LMT,平空2);
END

回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-26 11:01 | 显示全部楼层
单一品种,做多区域和做空区域是二选一,箱顶变和箱底变不会同时发生,就是没明白为何会同时出现两种结论相反的输出,并且下单也是与实际不一致。
回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-26 11:06 | 显示全部楼层
以上补充是错误的,重新补充如下:单一品种,做多区域和做空区域是二选一,箱顶变和箱底变不会同时发生,但箱顶变发生时可能是在做多区域,也可能是做空区域。策略的逻辑是当箱顶变发生在做多区域时,输出为挂多,下单方向为做多;当发生在做空区域时,输出为挂空,下单方向时做空。
回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-26 11:09 | 显示全部楼层
请指点迷津。
回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-27 14:34 | 显示全部楼层
后台策略,两方面问题:第一是在条件触发时,输出了挂多和挂空两条方向不一致的信息,实际上触发时“做多区域”或“做空区域”只会有一个条件会符合,不可能同时存在;第二是条件触发时输出的信息和随后的下单与实际情况不相符,即:触发时是做多区域,应该挂多单,但输出的信息是挂空。查看运行时变量,各种提示都与策略设计相符,不明白为何输出的信息和下单都与策略真实逻辑不一致。
回复

使用道具 举报

2

主题

585

帖子

626

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2024-8-27 14:36 | 显示全部楼层
这种你只能在开多和开空前用debugfile把多空的条件都给打印出来看下了

所有代码光靠看只能解决一部分,更多的问题都只能通过打印记录来查看当时的情况
回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-27 14:53 | 显示全部楼层
没有用过debugfile,不知道该怎么用。另外电脑没连打印机,能否把开多开空前的条件导出到文档查看呢?
回复

使用道具 举报

31

主题

7767

帖子

7777

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-8-27 14:55 | 显示全部楼层
debugfile是输出条件到txt中的,就是你程序执行到这段代码就会输出自己指定的条件
这样你后面开仓就要去看下这个条件是什么,为何会满足

类似这样是输出价格用的,你的条件组成自己输出
  DEBUGFILE('D:\TEST.TXT','当前价格为%.2f',close );
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

32

帖子

32

积分

Rank: 1

等级: 新手上路

注册:
2021-9-19
曾用名:
 楼主| 发表于 2024-8-27 15:07 | 显示全部楼层
好的,我试试看,弄不懂的再来请教,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 09:05 , Processed in 0.255995 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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