金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3205|回复: 13

麻烦老师帮我解决锁仓的问题谢谢

[复制链接]

15

主题

36

帖子

46

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-4-19 09:15 | 显示全部楼层 |阅读模式
你好老师。
下面是我实盘用的模型, 现在用的4小时或3 或2小时中, 用轮训1秒,还是那个问题,开仓就锁仓;
您昨天给我回复的帖子,我没有看明白,晚上还是锁仓。  麻烦您想想办法,给解决锁仓的问题。
毕竟软件是你们编写的,你们更专业,对吧。谢谢,在线等。


input:y(2023,1900,3000,1),m(4,1,12,1),d(17,1,31,1);//参数控制年月日
xd:=1  ;//这里修改开仓数量;
jiange:=20   ;
tt1:=21  ;
dcon:=barslast(year>=y and month>=m and day>=d)=0;
tcond:=barssince2(timezoneconver(TT1)<time,todaybar) ;
dt:cross(dcon,0);

FD:=VALUEWHEN(dt,DATE);
LEN:=TRADINGDATEDIFF(FD,DATE);//间隔交易日

OO:valuewhen(LEN=1 and tcond=0,OPEN);


AA001:=cross(close,OO)=1  ;//上穿交叉点
BB001:=cross(OO,close)=1  ;//下穿交叉点
AA002:=CLOSE>OO           ;//大于显示面
BB002:=CLOSE<OO           ;//小于显示面


if AA002 then begin
//if cross(close,OO)=1 then begin
    sellshort(holding<0,holding,market);
    buy(holding=0 and LEN<JIANGE,xd,market);
end


if BB002 then begin
//if cross(OO,close)=1 then begin
    sell(holding>0,holding,market);
    buyshort(holding=0 and LEN<JIANGE,xd,market);  
end


if  len=jiange then
begin
到期平多:sell(holding>0,holding,market);
到期平空:sellshort(holding<0,holding,market);
end

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-19 09:22 | 显示全部楼层
我昨天给你的回复里面 回复你2条 最上面一条是建议你:
AA001:=cross(h,OO)=1  ;//上穿交叉点
BB001:=cross(OO,l)=1  ;//下穿交叉点
AA002:=h>OO           ;//大于显示面
BB002:=l<OO           ;//小于显示面

这样调整下代码的。另一条建议暂时可以不管。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

15

主题

36

帖子

46

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-4-20 09:12 | 显示全部楼层
技术009 发表于 2023-4-19 09:22
我昨天给你的回复里面 回复你2条 最上面一条是建议你:
AA001:=cross(h,OO)=1  ;//上穿交叉点
BB001:=cro ...

请看图片,按照您说的改成了 high 和 low,今天早晨模拟了一下,还是锁仓呢。

[img]链接:https://pan.baidu.com/s/1k_jErPG2HEk4MwQha2aK8g  提取码:qna4[/img]
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

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

1.从锁仓结果来看应该还是信号闪烁造成的,但是我这个代码逻辑调整后 信号是稳定的才对,因为最高或者最低价大于或者小于OO,发生后必然不会再变了,因为高价只会更高,低价只会更低。

请提供下交易日志:查看-交易日志   我确认下你当时实际下单操作

2.想要完全解决这个锁仓问题,最好是选择后台程序化,因为后台程序化是直接在实际账户基础上进行操作的,不存在理论模型的概念,这样下单时候读取持仓情况 来避免锁仓。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-20 10:12 | 显示全部楼层
重新确认了下。你应该是在一个K上四个下单操作都触发了,但是开仓后成交是有时间的,后面的平仓是来不及在成交后执行的。因此可以调整下:
if AA002 then begin
//if cross(close,OO)=1 then begin
    sellshort(holding<0,holding,market),ORDERQUEUE;
    buy(holding=0 and LEN<JIANGE,xd,market),ORDERQUEUE;
end


if BB002 then begin
//if cross(OO,close)=1 then begin
    sell(holding>0,holding,market),ORDERQUEUE;
    buyshort(holding=0 and LEN<JIANGE,xd,market),ORDERQUEUE;  
end

我们限制下 语句必须成交后再委托后面的信号。

这样就不会锁仓了,但是稍微浪费了点手续费。  如果条件允许的话,你这个策略还是在后台上实现比较好。



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

使用道具 举报

15

主题

36

帖子

46

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-4-20 11:09 | 显示全部楼层
技术009 发表于 2023-4-20 10:12
重新确认了下。你应该是在一个K上四个下单操作都触发了,但是开仓后成交是有时间的,后面的平仓是来不及在 ...

谢谢老师。
产生点手续费,也能接受,勉强可以用,哈。

再问一个问题。
①,我想以今日9点,开始画水平线。把日期也改成了20230420今天。
②,加载到(2小时和3小时和4小时)中,没有开仓没有信号。

后来吧日期改成了昨天的,就出信号了。

请问,这个日期对不对?【目的是今日9点开始画水平线,日期应该怎么定?】

回复

使用道具 举报

15

主题

36

帖子

46

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-4-20 11:19 | 显示全部楼层
技术009 发表于 2023-4-20 10:12
重新确认了下。你应该是在一个K上四个下单操作都触发了,但是开仓后成交是有时间的,后面的平仓是来不及在 ...

还发现了2个问题。
①,我想以早晨9点的open,画水平线。 我发现1小时2小时3小时4小时的,水平线的价格,都不相同? 能不能直接“跨周期”调用1分钟的 9点的水平线,然后来回穿越这个, 效果是不是好些?

②,让这个 早晨9点的 open这个价格,直接显示出来数字,这样我也好对照。

请问,怎么写?谢谢。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-4-20 12:03 | 显示全部楼层
因为你周期比较大,所以你一个K的起始位置就不是白盘开始位置了。可能是从夜盘某个位置开始的。

这样得话 也只能跨周期调用这个九点钟的价格了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

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

白盘获取开盘价的代码我调整了,目前是正常的。稍后给你。但是在此之前,根据我对你这个策略思路的理解,有几个和你这个策略相关的建议:


1.用在小周期上,不要在大周期上。因为你这个取的价格是白盘开盘的,刚好在一个大周期内K,其实取9点价格这个不是问题,大不了跨周期。但是我觉得存在问题是:

你大周期最高或者最低价可能是夜盘时候出现的,这样你在包含9点的那个K上  信号是可能失真的
2.你用大周期 我的理解是你要限制交易的次数,这个在小周期上也是可以的。我可以在小周期上判断当前小周期在哪个大周期跨度下(跨周期调用大周期的K线时间即可),如果是我在这个跨度内 开过仓了,那我不重复开仓。 简单说 小时K:9:00-10:00 。如果在小周期上9:15 时候开仓了,那么必须要到10点后 再次上穿或者下穿价格 我再开仓。


以上2条建议 你酌情考虑。
然后代码我可以直接给到你,小周期运行的代码:



[PEL] 复制代码
input:y(2023,1900,3000,1),m(4,1,12,1),d(17,1,31,1);//参数控制年月日
INPUT:bar(120,1,300,1);
xd:=1;//这里修改开仓数量;
jiange:=20;

dcon:=barslast(year>=y and month>=m and day>=d)=0;
dt:=cross(dcon,0);


//定位判断位置,小周期上有效
tcond:=(cross(time,130000) and OPENTIME(1)<130000) or (cross(190000,time) and time>130000);

LEN:=TRADINGDATEDIFF(VALUEWHEN(dt,DATE),DATE);//间隔交易日

OO:valuewhen(LEN>=0 and tcond,OPEN);

TODAYBAR2:BARSLAST(tcond);//距离9点K的周期跨度
//整小时K的标记,对应Bar参数,bar是120那就是2小时,180那就是三小时
K_mark:=mod(TODAYBAR2,bar)=0;

//距离小时周期整点的小周期跨度
Lenx:=BARSLAST(K_mark);

AA002:=h>OO;//大于显示面
BB002:=l<OO;//小于显示面


if AA002 and count(AA002,Lenx+1)=1 then begin
    sellshort(holding<0,holding,market),ORDERQUEUE;
    buy(holding=0 and LEN<JIANGE,xd,market),ORDERQUEUE;
end


if BB002 and count(BB002,Lenx+1)=1 then begin
    sell(holding>0,holding,market),ORDERQUEUE;
    buyshort(holding=0 and LEN<JIANGE,xd,market),ORDERQUEUE;  
end


if  len=jiange then
begin
到期平多:sell(holding>0,holding,market);
到期平空:sellshort(holding<0,holding,market);
end

持仓:holding;


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

使用道具 举报

15

主题

36

帖子

46

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-4-20 14:46 | 显示全部楼层
技术009 发表于 2023-4-20 13:11
白盘获取开盘价的代码我调整了,目前是正常的。稍后给你。但是在此之前,根据我对你这个策略思路的理解,有 ...

谢谢老师,太专业了,太棒了。

我想调用2023年4月16日的 1分钟的 9.00的open,在2/3/4小时上面,显示黄色的水平线,要两端无限延长的那种。

这个20230416日期,我可以自己修改。请问,这个怎么写?谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-12 06:09 , Processed in 0.190452 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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