金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 销售666

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

[复制链接]

86

主题

192

帖子

192

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
发表于 2025-8-22 14:18 | 显示全部楼层
资深技术05 发表于 2025-8-22 14:01
期货的,先给你个大致框架吧. 这个框架我大体测试过,应该没什么问题.需要单独在一个预警中运行,不适合和其他 ...

上面这个是期货的吧,股票的有吗?系统自动的用起来不方便,要一个股票设置一次。
回复

使用道具 举报

2

主题

5310

帖子

5310

积分

Rank: 8Rank: 8

等级: 超级版主

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

这是股票的部分,建议在模拟上充分测试下先。注意事项也和期货的一样。另外如果有其他策略对相同品种进行开平 是可能影响到这里操作逻辑的。这一点需要各位注意下
[PEL] 复制代码
//
//从检测到有底仓开始:
//
//1.首次加减仓:基于底仓价格涨3% 减仓固定股数,跌5%加仓固定股数.为了方便处理,这个固定股数可以设置为初始仓位的固定百分比如30%.后续加减仓均
//按照这个股数操作.
//2.后续加仓/减仓,基于最近一次的交易的价格(加仓/减仓时的价格)涨跌进行判断
//3.市值低于10000,不减仓.市值高于100000不加仓


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

globalvariable:ss:=0;//加仓手数,根据初始持仓手数*手数百分比 进行计算
path:='C:\'&STKLABEL&'_日志.txt';//日志输出路径

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



//完全没有持仓了,重置全局变量的值
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:=100*floor(手数百分比/100*extgbdata(hdstr)/100);


最新市值:tbuyholdingex('','',2)*dynainfo(  7);


//减仓
if c/base>=(1+减仓/100) 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 c/base<=(1-加仓/100) and  tbuyholdingex('','',2)>0 and base>0 and 最新市值+ss*c<10000 and ss>0 and  taccount(19)>ss*c then 
begin 
tbuy(1,ss,mkt);
debugfile(path,'加仓:tenterprice:%.2f',c);
extgbdataset(basestr,c);
end 


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-31 01:08 , Processed in 0.082194 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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