[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