金字塔决策交易系统

用户名  找回密码
 

微信登录

微信扫一扫,快速登录

帖子
查看: 3550|回复: 6

关于保本平仓的错误执行

[复制链接]

75

主题

193

帖子

193

积分

等级: 免费版

注册:
2023-4-11
曾用名:
发表于 2023-7-4 09:51 | 显示全部楼层 |阅读模式
[PEL] 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
STR2:=STKLABEL&'_L';
 
//初始化全局变量
 
IF TSELLHOLDINGEX( '','' ,1 )>0 AND EXTGBDATA(STR2)>DYNAINFO(7) THEN BEGIN
 
   EXTGBDATASET(STR2,DYNAINFO(7));
 
END
 
KYK:TAVGENTERPRICEEX2('','',1)-DYNAINFO(7);
 
MAXPRO2:TAVGENTERPRICEEX2('','',1)-EXTGBDATA(STR2);
 
空单回撤:IF(KYK<=0 and MAXPRO2>10,1,0);//空单最高盈利到过10个点且回撤时最新价<=开仓均价,空单保本平仓
 
IF 空单回撤 THEN BEGIN
 
TSELLSHORT(1,1,MKT); [color=#ff0000]//因为MAXPRO2计算错误,所在造成保本平仓机制是错误的[/color]
 
END
 
DEBUGFILE('D:\数值\TEST.TXT','当前最新价为%.2f',DYNAINFO(7));
 
DEBUGFILE('D:\数值\TEST.TXT','当前空单成本为%.2f',TAVGENTERPRICEEX2('','',1));
 
DEBUGFILE('D:\数值\TEST.TXT','当前条件KYK为%.2f',KYK);
 
DEBUGFILE('D:\数值\TEST.TXT','当前条件MAXPRO2为%.2f',MAXPRO2);
 
DEBUGFILE('D:\数值\TEST.TXT','当前最新变量值STR2为%.2f',EXTGBDATA(STR2));
 
[color=#ff0000]上述代码在输出时,发现“ STR2:=STKLABEL&'_L' ” 数值并没有被“ DYNAINFO(7) ”更新,造成“ MAXPRO2 ”计算数值错误,请老师帮忙指正一下,看看问题在哪里,谢谢![/color]


回复

举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-4 10:03 | 显示全部楼层
ext全局变量都没有形成闭环的关系。要遵循使用后重置结果的原则。否者就会造成后续的条件结果不符合预期值。所以你平仓完成后应该把ext全局变量的结果重置掉。




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

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

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

TSELLHOLDINGEX( '','' ,1 )

全局变量保存了之前的值,可能会导致你if判断那里出错了,这种就需要在平仓后重置全局变量。


[PEL] 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
STR2:=STKLABEL&'_L';
  
//初始化全局变量
 
IF TSELLHOLDINGEX( '','' ,1 )>0 AND (EXTGBDATA(STR2)>DYNAINFO(7) OR EXTGBDATA(STR2)=-1THEN BEGIN
EXTGBDATASET(STR2,DYNAINFO(7));
 
END
 
 
IF 空单回撤 THEN BEGIN
  
TSELLSHORT(1,1,MKT);
EXTGBDATASET(STR2,-1);
END

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

举报

75

主题

193

帖子

193

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-7-4 10:33 | 显示全部楼层
技术009 发表于 2023-7-4 10:08
TSELLHOLDINGEX( '','' ,1 )

全局变量保存了之前的值,可能会导致你if判断那里出错了,这种就需要在平仓 ...

感谢老师指点,请说明下EXTGBDATASET(STR2,-1);里的-1 代表什么意思?如果是多单重置,是不是写成 EXTGBDATASET(STR1,1);?
回复

举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-4 10:34 | 显示全部楼层
一个不可能出现的值。价格不可能为负数,所以用-1.
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

75

主题

193

帖子

193

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-7-4 11:04 | 显示全部楼层
技术006 发表于 2023-7-4 10:34
一个不可能出现的值。价格不可能为负数,所以用-1.

老师,代码这里还是不对,EXTGBDATASET(STR2,-1) 重置后,造成
MAXPRO2:TAVGENTERPRICEEX2('','',1)-EXTGBDATA(STR2); 计算结果为 持仓价-1,保本平仓触发是乱的。
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-4 11:25 | 显示全部楼层
我写的判断是-1,你改成了1. 当然冲突了。你改的话,你前后要一致的呀。

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

举报

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

本版积分规则

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

GMT+8, 2025-8-14 10:42 , Processed in 0.086675 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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