以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 策略编译成金字塔 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=183764) |
-- 作者:张哥@北京 -- 发布时间:2021/1/6 10:45:40 -- 策略编译成金字塔 我是做股票,这是文华源码:npqt是参数,能否把这个变成金字塔语言: DIR:=ABS(C-REF(C,N)); VIR:=SUM(ABS(C-REF(C,1)),N); ER:=DIR/VIR,NODRAW; CS:=ER*(2/(P+1)-2/(Q+1))+2/(Q+1); CQ:CS*CS,NODRAW; AMA1:DMA(C,CQ),COLORWHITE; MAMA1:MA(AMA1,T),DOT,COLORYELLOW; M:=8; ER100:200*ER; AMAER:200*ABS(AMA1-REF(AMA1,M))/SUM(ABS(AMA1-REF(AMA1,1)),N),COLORGREEN; SIG:ER100>100 && AMAER>100; SIG && AMA1>REF(AMA1,1) ,BK; SIG && AMA1<REF(AMA1,1) ,SK; C<AMA1,SP; C>AMA1,BP; SETALLSIGPRICETYPE(CMPETITV_ORDER); MY:=20000; C>0,T_PLUS(ROUND(MY/(C*MARGIN*UNIT),0)); AUTOFILTER; |
-- 作者:FireScript -- 发布时间:2021/1/6 11:18:25 -- //涉及到的参数你自行补充下定义就行了。 MY:=20000; bzj:Close*100;//因为你是股票,所以期货的保证金这种就不需要算了 ss:Intpart(MY/(bzj));//指定资金量的可开仓的手数 DIR:=ABS(C-REF(C,N)); VIR:=SUM(ABS(C-REF(C,1)),N); ER:=DIR/VIR,NODRAW; CS:=ER*(2/(P+1)-2/(Q+1))+2/(Q+1); CQ:CS*CS,NODRAW; AMA1:DMA(C,CQ),COLORWHITE; MAMA1:MA(AMA1,T),DOT,COLORYELLOW; M:=8; ER100:200*ER; AMAER:200*ABS(AMA1-REF(AMA1,M))/SUM(ABS(AMA1-REF(AMA1,1)),N),COLORGREEN; SIG:ER100>100 && AMAER>100; //是股票的话,开空相关的就删除了,没必要保留了。 if SIG && AMA1>REF(AMA1,1) then buy(1,ss,market);//满足就开仓if C<AMA1 then sell(holding-DAYHOLDING>0,holding,market); //SETALLSIGPRICETYPE(CMPETITV_ORDER);这个超价不知道具体不逻辑是怎样的,你最好提供下这个的说明。 [此贴子已经被作者于2021/1/6 11:20:29编辑过]
|
-- 作者:张哥@北京 -- 发布时间:2021/1/6 11:41:08 -- 多谢多谢 因为股票是T+1,是否能把T+1的处理模式再加上
|
-- 作者:FireScript -- 发布时间:2021/1/6 14:18:38 -- 有这个部分的处理的。 if C<AMA1 then sell(holding-DAYHOLDING>0,DAYHOLDING-holding,market); 这里就是判断老仓有没有。有的话,直接平老仓数量。
|