金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 73|回复: 7

自定义套利交易问题

[复制链接]

37

主题

77

帖子

77

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
发表于 2025-10-10 00:47 | 显示全部楼层 |阅读模式
你好老师,自定义套利,固定间隔交易,如何限制只开一手?
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 08:47 | 显示全部楼层
你可以读取套利2腿的持仓来判断是否已经开仓过了。

使用ARBITRAGECODE 读取组成的品种代码,然后就使用常规的读持仓函数读取即可。
回复

使用道具 举报

37

主题

77

帖子

77

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
 楼主| 发表于 2025-10-10 09:17 | 显示全部楼层
资深技术05 发表于 2025-10-10 08:47
你可以读取套利2腿的持仓来判断是否已经开仓过了。

使用ARBITRAGECODE 读取组成的品种代码,然后就使用 ...

你好老师:帮我写个读取套利2腿的持仓和控制持仓手数的范例
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 10:10 | 显示全部楼层
code1:=ARBITRAGECODE('TA0001',1);
code2:=ARBITRAGECODE('TA0001',2);

//第一腿的多空持仓
D1_D:TBUYHOLDINGEX('',CODE1,1);
D1_K:TSELLHOLDINGEX('',CODE1,1);

//第二腿的多空持仓
D2_D:TBUYHOLDINGEX('',CODE2,1);
D2_K:TSELLHOLDINGEX('',CODE2,1);


tao_d:D1_D>0 and D2_K>0;//判断是否套利多
tao_k:D1_K>0 and D2_D>0;

套利持仓就判断第一腿的多和第二腿的空    或者第一腿的空和第二腿的多。

回复

使用道具 举报

37

主题

77

帖子

77

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
 楼主| 发表于 2025-10-10 12:57 | 显示全部楼层
资深技术05 发表于 2025-10-10 10:10
code1:=ARBITRAGECODE('TA0001',1);
code2:=ARBITRAGECODE('TA0001',2);

input:M(3,0.1,100,1),K(1,0.1,10,1),max_hd(1,1,10000,1);
mid:  ma(close,m);//布林中轨
upper:= mid + k*std(close,m);//布林上轨
lower:= mid - k*std(close,m);//布林下轨

code1:=ARBITRAGECODE('TA0001',1);
code2:=ARBITRAGECODE('TA0001',2);

//第一腿的多空持仓
D1_D:TBUYHOLDINGEX('',CODE1,1);
D1_K:TSELLHOLDINGEX('',CODE1,1);

//第二腿的多空持仓
D2_D:TBUYHOLDINGEX('',CODE2,1);
D2_K:TSELLHOLDINGEX('',CODE2,1);


tao_d:D1_D>0 and D2_K>0;//判断是否套利多
tao_k:D1_K>0 and D2_D>0;
  
  
if tao_d and (c<MID)AND( TISREMAINEX(0,'','')=0) then tbuy(1,1,lmt,CLOSE-1);
  
if tao_d and (MID<c)then tsell(1,0,lmt,CLOSE+1);


帮我看看老师,交易回测时怎么显示空白。帮我修改一下,固定间隔交易时,开多只限制开一手,平仓也平一手。
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-10 13:34 | 显示全部楼层
本帖最后由 资深技术05 于 2025-10-10 13:38 编辑

TA0001 是我本地的套利合约。你要确定你本地自建套利合约 是否是这个名称。

其次这种写法是不支持回测的。 因为回测中对套利合约下单,回测系统是将它拟作一个单一的品种的,此时通过tbuyholdingex 函数无法读取单腿的持仓的。直接回测只会有开仓,没有平仓。
需要回测你使用下面的代码 然后后台预警中直接设置监控套利合约。

回测版本,回测前务必刷新套利合约的数据:
[PEL] 复制代码
input:m(3,0.1,100,1),k(1,0.1,10,1),max_hd(1,1,10000,1);
mid:  ma(close,m);//布林中轨
upper:= mid + k*std(close,m);//布林上轨
lower:= mid - k*std(close,m);//布林下轨
  
if tbuyholdingex('','',1)=0 and (c<mid)and( tisremainex(0,'','')=0) then 
begin 
tbuy(1,1,lmt,close-1);
end   


if tbuyholdingex('','',1)>0 and (mid<c)then tsell(1,0,lmt,close+1);


实际运行则单独使用下面的代码版本:
[PEL] 复制代码
input:m(3,0.1,100,1),k(1,0.1,10,1),max_hd(1,1,10000,1);
mid:  ma(close,m);//布林中轨
upper:= mid + k*std(close,m);//布林上轨
lower:= mid - k*std(close,m);//布林下轨

code1:=arbitragecode('ta0001',1);
code2:=arbitragecode('ta0001',2);

//第一腿的多空持仓
d1_d:tbuyholdingex('',code1,1);
d1_k:tsellholdingex('',code1,1);

//第二腿的多空持仓
d2_d:tbuyholdingex('',code2,1);
d2_k:tsellholdingex('',code2,1);


tao_d:d1_d>0 and d2_k>0;//判断是否套利多
tao_k:d1_k>0 and d2_d>0;
  
  
if tao_d=0 and (c<mid)and( tisremainex(0,'','')=0) then 
begin 
tbuy(1,1,lmt,close-1);
end   


if tao_d>0 and (mid<c)then tsell(1,0,lmt,close+1);




回复

使用道具 举报

37

主题

77

帖子

77

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
 楼主| 发表于 2025-10-11 10:19 | 显示全部楼层
你好老师,自定义套利如何设置各腿先后交易
回复

使用道具 举报

2

主题

5475

帖子

5475

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-10-11 10:38 | 显示全部楼层
如果使用了自定义套利合约。

1)如果是交易所支持的套利指令,会直接报出去。


此时不存在前后分别报单一说

2)如果是非交易所支持的套利指令。系统默认就是先后报单出去。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-11 22:40 , Processed in 0.146120 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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