金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: David

网格交易模块

[复制链接]

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-6-29 13:58 | 显示全部楼层
技术009 发表于 2023-6-8 08:56
初始化部分微调下,现在会判断下持仓,如果有持仓从之前下单记录里读取之前的下单价格:

//首次运行 初 ...

假设在100元买入一次,90元买入一次,而80元和70元分别买入时没有资金了,而后来在80元触发卖出了(实际卖出的是90元买入的那个仓位),从而导致亏损。请问是不是因为程序读取的是上次下单价格,而不是上次成交价格?如果是这样的话,请问是否可以改为上次成交价格作为基准价,以避免亏损?谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-6-29 14:16 | 显示全部楼层
对,上次调整后是从监控记录里获取上次开仓的价格。 你这里下单都是限价下单,所以这样取是可以的。

只要订单成交了,这个价格就是成交价。 如果因为资金问题导致下单失败的话,的确会导致你说的问题。因为那个函数其实区分不了成交与否。

所以 可以考虑用DYNAINFO(211) 这个函数:

取得该品种距离最近一次实盘交易的开仓成交价格。
注意:
需要使用金字塔交易才能有效的获取该数据。
该记录只保存距离最近开平日期60天内的记录。
动态行情函数返回常数,永远都是一个盘中的最新值(只有当前值,无历史值)




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

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-6-29 21:23 | 显示全部楼层
技术009 发表于 2023-6-29 14:16
对,上次调整后是从监控记录里获取上次开仓的价格。 你这里下单都是限价下单,所以这样取是可以的。

只 ...

我把上次您给的这段里面的LAST_P:TORDERPRICE(0,1);改为了LAST_P:DYNAINFO(211); ,如下,您看这样对吗?谢谢!

//首次运行 初始化基准价,以程序启动时候的价格作为初始基准价
if  base=-1 then
begin
//取上一次的实盘交易的开仓成交价格,注意这个数据是从交易监控记录中来的      
LAST_P:DYNAINFO(211);
//如果初始运行时候有持仓了,那么从交易记录中读取之前的下单价格.并且排查掉没有监控记录的情况
if TBUYHOLDINGEX('','',1)<>0 and LAST_P<>0 then
begin
base:=LAST_P;
maxp:=LAST_P;
minp:=LAST_P;      
end else
begin
base:=DYNAINFO(  7);
maxp:=DYNAINFO(  7);
minp:=DYNAINFO(  7);
end
end
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-6-30 08:48 | 显示全部楼层
等开盘我核实下,这个函数是否区分品种。如果不区分品种 那也是不能这样用了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-6-30 13:42 | 显示全部楼层
技术009 发表于 2023-6-30 08:48
等开盘我核实下,这个函数是否区分品种。如果不区分品种 那也是不能这样用了。

好的,期待回复,谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-6-30 13:44 | 显示全部楼层
区分品种的。可以用。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-6-30 15:41 | 显示全部楼层
技术009 发表于 2023-6-30 13:44
区分品种的。可以用。

好的,多谢指导!
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-7-5 21:54 | 显示全部楼层
技术009 发表于 2023-6-30 13:44
区分品种的。可以用。

我把上次您给的这段里面的LAST_P:TORDERPRICE(0,1);改为了LAST_P:DYNAINFO(211); 但是现在有另一个问题,如下,假设在100元买入一次,90元买入一次,80元买入一次,70元买入时没有资金了(只是触发买入,但没有实际买入),而后来价格上涨,在90元触发卖出了最后一次实际买入价80元的,但是第二天开盘后,假设价格还是在90元,又在90卖出了(由于开盘重新制定的初始价为上次最后一次实际买入价80元,但这次实际卖出的是90元买入的那个仓位),从而导致没有利润平出了(或小亏),但是第三天开盘后,假设价格还是在90元,又在90卖出了(由于开盘重新制定的初始价为上次最后一次实际买入价80元,但这次实际卖出的是100元买入的那个仓位),从而导致亏损。请问有没有办法,既考虑可能由于资金问题可能触发但没有成交,因而需要考虑最后一次实际成交价格之上才能触发卖出,又要考虑卖出之后的再次卖出就要考虑是在该卖出价格之上的网格上涨步长10元才能卖出,而避免上面可能亏损的情况?例如:假设在100元买入一次,90元买入一次,80元买入一次,70元买入时没有资金了(只是触发买入,但没有实际买入),而后来价格上涨,在90元触发卖出了最后一次实际买入价80元的,第二天开盘后,假设价格还是在90元,不应该触发在90卖出了90元买入的那个仓位,应该是不触发卖出而应该考虑到最近一次卖出就是90元,所以再次卖出应该等到100元再卖出90元买入的仓位,从而实现买入和卖出的一 一对应。谢谢!
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-6 09:05 | 显示全部楼层
这个情况应该不会出现吧。比如说第二天早上是90的价格开始的。那么按照我们之前的逻辑,其实是需要从90涨上去才会触发卖操作的吧。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

98

帖子

98

积分

等级: 免费版

注册:
2023-2-21
曾用名:
 楼主| 发表于 2023-7-6 15:09 | 显示全部楼层
技术009 发表于 2023-7-6 09:05
这个情况应该不会出现吧。比如说第二天早上是90的价格开始的。那么按照我们之前的逻辑,其实是需要从90涨上 ...

是出现了,因为第二天和第三天始终要看LAST_P:DYNAINFO(211)最近一次实际买入的价格,没有考虑到第一天、第二天实际卖出的价格(这几天的开盘价正好都在90元左右),不像过去是TORDERPRICE(0,1)可以考虑到买入开仓,也可以考虑卖出平仓,但这个函数无法考虑实际是否成交。所以,如何既考虑实际成交开仓,又考虑实际成交平仓?即,如果最近一次实际成交是开仓,即以该成交开仓作为卖出基准价,如果最近一次实际成交是平仓了,就需要以该成交平仓价作为基准价了,如何表示呢?谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 05:52 , Processed in 0.249597 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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