金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3750|回复: 8

下面的代码能不能帮我翻译一下?

[复制链接]

92

主题

380

帖子

380

积分

等级: 免费版

注册:
2021-6-1
曾用名:
发表于 2021-12-7 10:47 | 显示全部楼层 |阅读模式

runmode:0;
Globalvariable:hold=drawnull;
……//这里添加上你自己的模型

……//这里添加上你自己的模型

cc800988:=holding;//调用图表模型持仓,这句放在信号稳定的地方,即时下单的,就放图表下单语句的后面,K线走完下单的就放到图表下单语句的前面

drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输出虚拟持仓以便监控
if not(islastbar) or workmode<>1 then exit;
xiadan800988:=cc800988-hold;
if xiadan800988>0.5 then begin
   cang:=min(xiadan800988,abs(hold));
   if hold<0 then tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;
   cang:=xiadan800988+min(hold,0);
   if cang>0 then tbuy(1,cang,mkt,0,0,'800988'),allowrepeat;
end
if xiadan800988<-0.5 then begin
   cang:=min(abs(xiadan800988),abs(hold));
   if hold>0 then tsell(1,cang,mkt,0,0,'800988'),allowrepeat;
   cang:=abs(xiadan800988)-max(hold,0);
   if cang>0 then tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat;
end
hold:=cc800988;

回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-7 11:23 | 显示全部楼层

这里涉及到很多情况,需要一一罗列。
处理中,工作人员稍后会回复你的。


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

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-7 12:46 | 显示全部楼层
runmode:0;
Globalvariable:hold=drawnull;
……//这里添加上你自己的模型

……//这里添加上你自己的模型

cc800988:=holding;//调用图表模型持仓,这句放在信号稳定的地方,即时下单的,就放图表下单语句的后面,K线走完下单的就放到图表下单语句的前面

drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输出虚拟持仓以便监控
if not(islastbar) or workmode<>1 then exit;//非后台模式下 直接退出不执行
xiadan800988:=cc800988-hold;//虚拟持仓前后变化的差值 。这里分很多情况。包括:多空转换了,或者是单向的仓位增减了,或者全平了。



if xiadan800988>0.5 then begin //之所以是大于0.5 意思是差值只要不为0 就进行仓位调整。
//差值是正数,有以下几种情况:
//多头加仓了
//空头减仓了或者全平了  
//空头转多头了
   cang:=min(xiadan800988,abs(hold));//计算空减仓或者空全平或者空转多 时候需要平空的数量。
   if hold<0 then tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;//hold小于0 表示当前是:空减仓或者空全平或者空转多了。因此这里需要执行平空操作。
   cang:=xiadan800988+min(hold,0);//cang是否大于0 决定了是否是多开仓还是只是单纯空全平。大于0说明当前需要开多。
   if cang>0 then tbuy(1,cang,mkt,0,0,'800988'),allowrepeat;
end
//差值是负数情况 和正数情况同理,不再赘述。
if xiadan800988<-0.5 then begin
   cang:=min(abs(xiadan800988),abs(hold));
   if hold>0 then tsell(1,cang,mkt,0,0,'800988'),allowrepeat;
   cang:=abs(xiadan800988)-max(hold,0);
   if cang>0 then tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat;
end
hold:=cc800988;


补充在注释说明里。

这里的情况你可以自行按照注释里提到的几种情况,罗列下就能完全理解代码的原理了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

92

主题

380

帖子

380

积分

等级: 免费版

注册:
2021-6-1
曾用名:
 楼主| 发表于 2021-12-7 14:35 | 显示全部楼层
技术009 发表于 2021-12-7 12:46
runmode:0;
Globalvariable:hold=drawnull;
……//这里添加上你自己的模型

cang:=min(xiadan800988,abs(hold));//计算空减仓或者空全平或者空转多 时候需要平空的数量。,这里平仓不都是直接平xiadan800988这个手数就可以了啊,为什么还要cang:=min(xiadan800988,abs(hold)),计算这个最小值啊,还有hold这个值用Globalvariable:hold=drawnull;来赋值,后面又要hold:=cc800988;不是很理解啊,这个麻烦在解释一下  
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-7 14:51 | 显示全部楼层
xiadan800988  是之前仓位和现在仓位的差值啊。。但是如果之前

假设之前虚拟仓位是-1(hold) 手,现在是 +1手(cc800988),相当于转多了。那么xiadan800988   就是 1-(-1)=2

你这时候cang:=min(xiadan800988,abs(hold));
就是min(2,1)=1

所以看明白了吧。空转多时候 你不能直接按照xiadan800988   平的啊。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

92

主题

380

帖子

380

积分

等级: 免费版

注册:
2021-6-1
曾用名:
 楼主| 发表于 2021-12-7 14:55 | 显示全部楼层
技术009 发表于 2021-12-7 14:51
xiadan800988  是之前仓位和现在仓位的差值啊。。但是如果之前

假设之前虚拟仓位是-1(hold) 手,现在 ...

那么hold这个变量是代表什么,一直没有搞懂,
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-7 15:03 | 显示全部楼层
这个是最近一次发生仓位变化之前的记录的仓位。


假设信号不发生变化
hold 就是和 holding这些都是一样的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

92

主题

380

帖子

380

积分

等级: 免费版

注册:
2021-6-1
曾用名:
 楼主| 发表于 2021-12-7 15:43 | 显示全部楼层
技术009 发表于 2021-12-7 15:03
这个是最近一次发生仓位变化之前的记录的仓位。

cang:=xiadan800988+min(hold,0);//cang是否大于0 决定了是否是多开仓还是只是单纯空全平。大于0说明当前需要开多,这个还是看不懂,麻烦在解释一下,太烧脑了
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-7 15:47 | 显示全部楼层
本帖最后由 技术009 于 2021-12-7 15:52 编辑

如果是空清仓,
xiadan800988+min(hold,0)

之前是空 那么之前持仓是-1,现在是0 。这样xiadan800988 就是:0-(-1)=1
那么min(hold,0)=-1
xiadan800988+min(hold,0) 就是0


如果是空转多,
之前是-1 现在是1 那么xiadan800988 就是:1-(-1)=2

这时候xiadan800988+min(hold,0) 整体就是大于0 因此需要执行后面的开多了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 11:21 , Processed in 0.251488 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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