金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 45|回复: 10

请老师帮看下这个怎么实现

[复制链接]

27

主题

35

帖子

45

积分

Rank: 7Rank: 7Rank: 7

等级: 版主

注册:
2021-5-25
曾用名:
发表于 2025-8-21 15:20 | 显示全部楼层 |阅读模式
以股票为例:有底仓30000,买入价为A,每上涨3%就卖出10000元,每下跌下跌5%,就买入5000元,仓位要有10000元底仓不卖出。股票总仓位最多买100000元,
回复

使用道具 举报

83

主题

184

帖子

184

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
发表于 2025-8-21 15:29 | 显示全部楼层
想法是,用这个策略,监控一个股票池,实现高抛低吸,谢谢。
回复

使用道具 举报

2

主题

5277

帖子

5277

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-8-21 16:25 | 显示全部楼层
本帖最后由 资深技术05 于 2025-8-21 16:40 编辑

你这个思路,有需要明确的地方。

1. 涨跌3%,5%是基于第一次开仓的成交价,也就是价格A?
2. 卖出/买入 是否以最新价计算金额。例如现在最新价10,我10000 金额折算下来 就是100股就可以了
买入同理。
3.“仓位要有10000元底仓不卖出” 以当前浮动市值来判断?或者说市值低于10000 就不减仓。
回复

使用道具 举报

83

主题

184

帖子

184

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
发表于 2025-8-21 17:02 | 显示全部楼层
资深技术05 发表于 2025-8-21 16:25
你这个思路,有需要明确的地方。

1. 涨跌3%,5%是基于第一次开仓的成交价,也就是价格A?

1、那个a,就是最近一次开仓的价格,2、卖出、买入可以按最新价计算。3、低于10000市值,(以浮动市值来算)就不减仓了。
主要是做高抛低吸,有不合理的地方老师纠正。
回复

使用道具 举报

2

主题

5277

帖子

5277

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-8-21 17:15 | 显示全部楼层
本帖最后由 资深技术05 于 2025-8-21 17:32 编辑

开仓的来源是之前那个监控股票池的策略?需要考虑到你初始开仓的来源的。如果这个策略是单独的,就需要额外处理这第一次读取到持仓的情况的。
另外按照你这个说法,你应该是以最近一次买/卖的价格涨跌  执行加减仓的吧?如果最近一次是加仓,那就是以买的价格计算涨跌,如果最近一次是平仓,则是以卖的价格计算涨跌,就是网格的思路吧。

回复

使用道具 举报

83

主题

184

帖子

184

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
发表于 2025-8-21 17:35 | 显示全部楼层
1、为个策略是单独的,就可以。可以以策略介入时的持仓的成本价,做为基准价格,2、高抛低吸的仓位,可以按同等手数,也可以安同等钱数,当然有个取整的问题。我想了下,可以以最初手数为好。就是卖出多少手,再买回多少手。
回复

使用道具 举报

2

主题

5277

帖子

5277

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-8-21 17:37 | 显示全部楼层
看下我5楼更新的那部分的描述内容
回复

使用道具 举报

83

主题

184

帖子

184

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
发表于 2025-8-21 18:02 | 显示全部楼层
资深技术05 发表于 2025-8-21 17:37
看下我5楼更新的那部分的描述内容

就按网格交易思路就可以。刚才我没有看明白。谢谢。

补充内容 (2025-8-21 18:05):
麻烦把期货的后台交易的,一并写出来吧。

补充内容 (2025-8-21 19:53):
再加个条件:高于30天最高价,停止此策略,当低于30天最低价,也是停止此策略。
回复

使用道具 举报

2

主题

5277

帖子

5277

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-8-22 09:19 | 显示全部楼层
本帖最后由 资深技术05 于 2025-8-22 09:23 编辑

先按下面这个思路处理吧:

从检测到有底仓开始:

1.首次加减仓:基于底仓价格涨3% 减仓固定股数,跌5%加仓固定股数.为了方便处理,这个固定股数可以设置为初始仓位的固定百分比如30%.后续加减仓均
按照这个股数操作.
2.后续加仓/减仓,基于最近一次的交易的价格(加仓/减仓时的价格)涨跌进行判断
3.市值低于10000,不减仓.市值高于100000不加仓

另外系统其实自带了一个网格插件的:




你可以在期货上用模拟试试,股票上我不确定是否处理过可用持仓的问题.
功能说明:
https://www.weistock.com/docs/HE ... BA%A4%E6%98%93.html



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

2

主题

5277

帖子

5277

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-8-22 14:01 | 显示全部楼层
本帖最后由 资深技术05 于 2025-8-22 14:10 编辑

期货的,先给你个大致框架吧. 这个框架我大体测试过,应该没什么问题.需要单独在一个预警中运行,不适合和其他开仓平仓放在一起.

期货的和股票 在涨跌处理上不能一样.期货适合用变动的点数来.我这里默认10个最小变动价位.用百分比不太合适.不好评估灭每个品种的参数,它幅度比股票变化小很多的.  另外加减仓是判断保证金,不再是是市值了.
另外这种代码 最好不要手工过多参与,如果手工清仓  必须要在程序运行期间清仓.否则等你下次有仓位,代码是不知道你中间清仓过的,它还会用上次的数值去计算幅度之类的.
[PEL] 复制代码
//
//从检测到有底仓开始:
//
//1.首次加减仓:基于底仓价格涨指定点数 减仓固定手数,跌指定点数加仓固定手数.为了方便处理,这个固定手数可以设置为初始仓位的固定百分比如30%.后续加减仓均
//按照这个手数操作.
//2.后续加仓/减仓,基于最近一次的交易的价格(加仓/减仓时的价格)涨跌进行判断
//3.保证金低于10000,不减仓.保证金高于100000不加仓。 


input:手数百分比(30,1,100,0.1);//基于初始仓位的百分比计算后续加减仓的手数
input:加仓点数(10,1,1000,1);//基于上次基准价跌 加仓点数  加仓一次
input:减仓点数(10,1,1000,1);//基于上次基准价涨 减仓点数  减仓一次

globalvariable:ss:=0;//加仓手数,根据初始持仓手数*手数百分比 进行计算

cbstr:=stklabel&'.cb';//超全局变量名称:记录改品种的初始持仓成本
hdstr:=stklabel&'.hd';//超全局变量名称:品种的初始持仓数量
basestr:stklabel&'.base';//超全局变量名称:记录最近一次的基准价

path:='C:\'&STKLABEL&'_日志.txt';//日志输出路径


账户状态:=taccount(53);
if 账户状态=0  then 
begin
exit; 
end

//完全没有持仓了,重置全局变量的值
if tbuyholdingex('','',2)=0 and  tglobalsubmitex(1,'',stklabel,0)=0  then 
begin 
debugfile(path,'触发全局变量重置',0);
extgbdataset(cbstr,0);
extgbdataset(hdstr,0);
extgbdataset(basestr,0);
end 


//没有开仓未成交+平仓未成交+有持仓+记录的持仓为0,重新初始化 初始持仓均价 以及初始的持仓数量和基准价
if tbuyholdingex('','',2)>0 and  tglobalsubmitex(1,'',stklabel,0)=0 and tglobalsubmitex(2,'',stklabel,0)=0  then 
begin 
        
hd:extgbdata(hdstr);

if hd=0 then 
begin 
debugfile(path,'触发全局变量重新初始化',0);
extgbdataset(cbstr,tavgenterpriceex2('','',0));
extgbdataset(hdstr,tbuyholdingex('','',2));
extgbdataset(basestr,tavgenterpriceex2('','',0));
end 

end 


base:extgbdata(basestr);//读取记录的基准价

//计算下单手数
if  ss=0 then ss:=floor(手数百分比/100*extgbdata(hdstr));


保证金占用:TMARGINEX('','',1,0);


//减仓
if c-base>=减仓点数*MINDIFF and base>0 and 保证金占用>10000 and ss>0 and tbuyholdingex('','',1)>0 then 
begin 
//减仓时如果可用不足,就按照可用直接平
tsell(1,min(ss,tbuyholdingex('','',1)),mkt);
debugfile(path,'减仓:texitprice:%.2f',c);
extgbdataset(basestr,c);
end 


//加仓:下跌指定点数+有底仓+可用资金足够+开仓后市值小于100000
if base-c>=加仓点数*MINDIFF and  tbuyholdingex('','',2)>0 and base>0 and 保证金占用<100000 and ss>0 and  taccount(19)>ss*c*MULTIPLIER*TACCOUNT(41) then 
begin 
tbuy(1,ss,mkt);
debugfile(path,'加仓:tenterprice:%.2f',c);
extgbdataset(basestr,c);
end 

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-22 14:51 , Processed in 0.112672 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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