金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: David

网格交易模块

[复制链接]

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-17 13:09 | 显示全部楼层
“是的,平仓时是对称的,也是一一对应的,其实我觉得是否也不必在代码中体现这种对应关系,只要连续下跌就一直买入一定的数量(例如10股),从而形成持有仓位,这些数量也就混同了,然后上涨时就每次卖出相同的数量10股,卖出的数量肯定也是现有仓位里面的,实际上盈亏自己可以显示的,但是只要卖出的下单价格比持仓中的之前某一个买入的下单的价格高1%就可以,您看呢?谢谢!”

平仓没法子对称,前面已经说了。你连跌之后,理想状态下是连续涨。实际情况大部分都是不规则涨跌交替。举个例子 你连续下跌开仓1,2,3 手,总持仓6手,你后面平仓时候是没办法保证是3,2,1这样平的。可能平仓三手后,又触发了下跌买入,也就是不是连涨平仓,中间是涨跌穿插来的。

这个过程的平仓手数的计算逻辑 你是没有提供的。你只提供了一种非常理想的状态,开仓1,2,3然后连涨3,2,1 。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-4-18 08:31 | 显示全部楼层
技术009 发表于 2023-4-17 13:09
“是的,平仓时是对称的,也是一一对应的,其实我觉得是否也不必在代码中体现这种对应关系,只要连续下跌就 ...

嗯,理解,那么是否可以先按照简单的逻辑,即每次开仓和平仓都是固定的手数,例如10手,而不是1,2,3这种累进式的开仓数量?您看这样是否可以?谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-18 09:08 | 显示全部楼层
那代码进一步简化下就行了,去掉之前使用的累加手数的全局变量就行了:
[PEL] 复制代码
//客户原始思路:
//以启动程序时候的价格作为基准价:上涨1%以上并回落0.1%则卖出100股;下跌1%以下并反弹0.1%则买入100股;如果连续触发下跌买入,则每次买入比上一次买入的数量加一个单位

INPUT:N1(0.1,0.01,100,0.01),N2(0.01,0.01,100,0.01),ss(1,1,500,1);

GLOBALVARIABLE:base:=-1,maxp:=-1,minp:=-1;

//首次运行 初始化基准价,以程序启动时候的价格作为初始基准价
if  base=-1 then
begin 
base:=DYNAINFO(  7);
maxp:=DYNAINFO(  7);
minp:=DYNAINFO(  7);
end 

if DYNAINFO(  7)>maxp and base<>0 then maxp:=DYNAINFO(  7);
if DYNAINFO(  7)<minp and base<>0 then minp:=DYNAINFO(  7);

//P1,P2:最高点的涨幅,最低点的跌幅
P1:100*(maxp-base)/(base);
P2:100*(base-minp)/minp;

//P3,P4:高点回落幅度,低点上涨的幅度
P3:100*(maxp-DYNAINFO(  7))/(maxp);
P4:100*(DYNAINFO(  7)-minp)/minp;

//有可用持仓时候才能平仓
if P1>N1 and P3>N2 and minp<>0 and  maxp <>0 and TBUYHOLDINGEX('','',0)>0  then  
begin 
//固定手数平仓
tsell(1,ss,mkt);
//平仓后重置最高最低价的记录,同时更新基准价为当时的信号触发价
maxp:=DYNAINFO(  7);
minp:=DYNAINFO(  7);
base:=DYNAINFO(  7);
end 


//加仓逻辑
if P2>N1 AND P4>N2 and  minp<>0 and  maxp<>0 and TBUYHOLDINGEX('','',1)>0  then 
begin 
//固定手数加仓	
tbuy(1,ss,mkt);
//开仓后重置基准价为当时的信号触发价
maxp:=DYNAINFO(  7);
minp:=DYNAINFO(  7);
base:=DYNAINFO(  7);
end


//完全没有持仓时候才能进行初始开仓;初始开仓时候始终按照ss开仓
if P2>N1 AND P4>N2 and  minp<>0 and  maxp <>0 and TBUYHOLDINGEX('','',2)=0  then 
begin 
tbuy(1,ss,mkt);
//开仓后重置基准价为当时的信号触发价
maxp:=DYNAINFO(  7);
minp:=DYNAINFO(  7);
base:=DYNAINFO(  7);
end 



 

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-4-20 07:39 | 显示全部楼层
技术009 发表于 2023-4-18 09:08
那代码进一步简化下就行了,去掉之前使用的累加手数的全局变量就行了:
[mw_shl_code=pel,true]//客户原始 ...

好的,我再试一下吧,谢谢!
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-5-17 21:29 | 显示全部楼层
技术009 发表于 2023-4-18 09:08
那代码进一步简化下就行了,去掉之前使用的累加手数的全局变量就行了:
[mw_shl_code=pel,true]//客户原始 ...

您好!有两个问题想请教一下:(1)这个代码,我在可转债上试用了一下,提示说“网关:该股票不支持此交易”,请问如何适用交易可转债?(2)tbuy(1,ss,mkt);里面的“1”是指什么?公式是tbuy(cond,v....),这个“1”是指condition条件吗?谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-18 08:38 | 显示全部楼层
1.如果是实盘,那就要问券商那边开通权限了估计。
2.“这个“1”是指condition条件吗?”是的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-5-18 20:37 | 显示全部楼层
技术009 发表于 2023-5-18 08:38
1.如果是实盘,那就要问券商那边开通权限了估计。
2.“这个“1”是指condition条件吗?”是的

1. 是实盘,已经开通了可转债交易权限,请问为何还会出现这个无法交易的提示呢?
2.这个“1”是指什么condition啊?谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-19 09:01 | 显示全部楼层
提供下当时保持的交易日志,我看下具体报错的描述。一般这种回报都是柜台给得,最终还是需要问到券商那边才行得。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-5-19 13:58 | 显示全部楼层
请参见下面的记录和截图,还有几个问题请教:(1)设计的目的是上涨1%以上并回落0.1%则卖出;下跌1%以下并反弹0.1%则买入,为何下面图片中显示连续两次下单买入只差几分钱或1角,而不是1%,即可转债都是100元左右,所以上下的步长应该大概是1元左右?(2)下面的记录里面显示价格为何为0?(3)tbuy(1,ss,mkt);里面的“1”是指什么?公式是tbuy(cond,v....),这个“1”是指什么condition条件?谢谢!

2023-05-19 13:22:03.957    【后台】128123 TBuy 第 43 行 策略:<网格> K线:2023.05.19 13:21:57 出现信号
2023-05-19 13:22:03.959    【后台】128123 TBuy 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:128123
2023-05-19 13:22:03.960    【后台】下单已发送
2023-05-19 13:22:03.961    【后台】128123 运行结束
2023-05-19 13:22:03.961    【后台】128120 运行结束
2023-05-19 13:22:03.961    【下单】128123 价0.000000 量1 买卖0 类型1 开平0 账户805000000 Formula 1
2023-05-19 13:22:03.962    【下单】已提交,订单ID :319096825
2023-05-19 13:22:04.080    【指令】报单被拒 ID = 319096792
2023-05-19 13:22:04.081    【回报】805000000 : 128123 - 网关:该股票不支持此交易

2023-05-19 13:34:33.323    【后台】128123 TBuy 第 43 行 策略:<网格> K线:2023.05.19 13:34:36 出现信号
2023-05-19 13:34:33.324    【后台】128123 TBuy 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:128123
2023-05-19 13:34:33.325    【后台】下单已发送
2023-05-19 13:34:33.326    【后台】128123 运行结束
2023-05-19 13:34:33.327    【下单】128123 价0.000000 量1 买卖0 类型1 开平0 账户805000000 Formula 1
2023-05-19 13:34:33.327    【下单】已提交,订单ID :319096826
2023-05-19 13:34:33.475    【指令】报单被拒 ID = 319096791
2023-05-19 13:34:33.476    【回报】8050000000 : 128123 - 网关:该股票不支持此交易
截图202305191348314664.png
截图202305191349058676.png
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-19 14:18 | 显示全部楼层
本帖最后由 技术009 于 2023-5-19 14:21 编辑

1.你目前参数是多少,你是啥时候启动的程序化,因为程序是基于启动时候价格作为基准价的。

2.价格是0  是因为报的市价

3.那个条件写1  意思就是直接满足的意思。 因为我已经外部if那里判断了条件了,这里直接写1就行了。

你试下手工下单,选择限价  报一个不能成交的单子,看看是否可以委托出去。如果可以那就可能是可转债不支持市价导致的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 05:55 , Processed in 0.288767 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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