金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 105086

日内对锁失败

[复制链接]

106

主题

772

帖子

782

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-5 12:21 | 显示全部楼层
1.  图表交易需要控制账户的资金留存,怎么解决?

2.需要对连续亏损的情形做出限制,如何实现? 比如连续亏损N笔后,间隔多少的周期或者多少的时间不再开仓。请老师帮忙。
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-5 13:21 | 显示全部楼层
1.控制实际账号资金的留存的控制有且只能是通过后台程序化实现,图表模型所有的资金,费率,仓位都是理论持仓,和实际账户不是一回事。如果你对图表模型的情况不太了解可以参考下我们的文档:
https://www.weistock.com/docs/HE ... %E4%BA%A4%E6%98%93/

如果需要做一些实际账户的自己控制,大部分情况下我们是推荐使用后台的。

2.
参考下面的范例,开仓条件换成你自己的就行了。
[PEL] 复制代码
input:n(3,1,100,1);
input:m(15,1,100,1);
variable:lk:=0;//连亏次数

//若连续亏损了n笔,暂停下单m周期。



开多条件:cross(c,ma(c,5));
开空条件:cross(ma(c,4),c);
平多条件:h>ref(hhv(h,3),1);
平空条件:l<ref(llv(l,3),1);


if 平空条件 and holding<0 then 
begin 
sellshort(1,holding,market);
if numprofit(1)>0 then lk:=0;
if numprofit(1)<0 then lk:=lk+1;
end 

开多:buy(开多条件 and lk<n and holding=0 ,1,market);



if 平多条件 and holding>0 then 
begin 
sell(1,holding,market);
if numprofit(1)>0 then lk:=0;
if numprofit(1)<0 then lk:=lk+1;
end 

开空:buyshort(开空条件  and lk<n and holding=0 ,1,market);

//m周期后重置连亏标记
if all(lk=3,m) then lk:=0;

连亏次数:lk;
回复

使用道具 举报

106

主题

772

帖子

782

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-5 23:48 | 显示全部楼层
这里如果涉及到止损  或者平仓1  平仓2  平仓3的情形,那么是否支持把止损 ,平仓条件调到开仓公式的前面呢?   还是在平仓公式用=号来实现呢(已经试过好像实现不了)?  
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-6 08:53 | 显示全部楼层
没明白你这里的表述是什么意思。
回复

使用道具 举报

106

主题

772

帖子

782

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-6 13:53 | 显示全部楼层
这里就是止损的条件,平仓1的条件  平仓2的条件 平仓3的条件等。原来的写法就是直接进行平仓或者止损动作了。 按这个写法需要把相关的止损条件 ,平仓的条件单独拎出来,写进这个循环里才行 是吗?
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-6 13:55 | 显示全部楼层
是的。如果你有多个平仓条件,那可能代码结构要进行调整。类似下面这样:

if 平多条件1 and holding>0 then
begin
sell(1,holding,market);
if numprofit(1)>0 then lk:=0;
if numprofit(1)<0 then lk:=lk+1;
end

if 平多条件2 and holding>0 then
begin
sell(1,holding,market);
if numprofit(1)>0 then lk:=0;
if numprofit(1)<0 then lk:=lk+1;
end

回复

使用道具 举报

106

主题

772

帖子

782

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-6 16:21 | 显示全部楼层
input:n(3,1,30,1);
input:m(15,1,300,1);
variable:lk:=0;//连亏次数

//若连续亏损了n笔,暂停下单m周期。
//m周期后重置连亏标记
if all(lk=3,m) then lk:=0;


这里的描写是15周期里面 1K=3?


开多:buy(开多条件 and lk<n and holding=0 ,1,market);

问:1.这里的M周期就是控制开仓间隔的周期是吗?
2.buy(开多条件 and lk<n and holding=0 ,1,market);     这里是不是应该为 1k=0


回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-6 16:28 | 显示全部楼层
“这里的描写是15周期里面 1K=3?” 是这个意思。

“这里是不是应该为 1k=0” lk记录了连续亏损的次数,你得连亏N笔才停止。
回复

使用道具 举报

106

主题

772

帖子

782

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-3-6 16:30 | 显示全部楼层
那么需要控制开仓的间隔  就是M 的数值了?  要控制M=100  也是可以的?
回复

使用道具 举报

2

主题

4936

帖子

4936

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-3-6 16:58 | 显示全部楼层
是的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-11 20:09 , Processed in 0.099935 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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