金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2885|回复: 6

关于保本平仓的错误执行

[复制链接]

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
发表于 2023-7-4 09:51 | 显示全部楼层 |阅读模式
[PEL] 复制代码

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

主题

9987

帖子

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] 复制代码
STR2:=STKLABEL&'_L';
 
//初始化全局变量

IF TSELLHOLDINGEX( '','' ,1 )>0 AND (EXTGBDATA(STR2)>DYNAINFO(7) OR EXTGBDATA(STR2)=-1)  THEN BEGIN
EXTGBDATASET(STR2,DYNAINFO(7));

END


IF 空单回撤 THEN BEGIN
 
TSELLSHORT(1,1,MKT); 
EXTGBDATASET(STR2,-1);
END

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

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
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

主题

9987

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

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

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
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-6-16 07:09 , Processed in 0.092705 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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