金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3732|回复: 7

编写求助

[复制链接]

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
发表于 2022-9-13 10:50 | 显示全部楼层 |阅读模式
//至少30根才开仓
ENOUGHBAR:BARPOS()>30,NODRAW;


//初始按照ATR固定风险度来设置下单手数
MON:=10000000;
TRx:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TRX,26),NODRAW;
TTC:=INTPART((MON*0.03/(MULTIPLIER*ATR))),NODRAW;//按投入资金的1%作为ATR衡量
TC:=IF(TTC<1,0,TTC);//下单手数
MTC:=2*TC;//最多加仓一次


//YY止损:就是前一根K的收盘价减去1.5ATR
SKYYZS:REF(C,1)+1.5*ATR,NODRAW;
BKYYZS:REF(C,1)-1.5*ATR,NODRAW;


//棘轮止损,就是最近的10根最低点,加上开仓以来的K线数量*20%*ATR
BKZS:IF(holding>0,LLV(C,10)+5/100*ATR*ENTERBARS,0);//,NODRAW;
SKZS:IF(holding<0,HHV(C,10)-5/100*ATR*ENTERBARS,0);//,NODRAW;






//高低收的均线
HLCMA:MA((HIGH+LOW+CLOSE)/3,20),NODRAW;
TRUEHIGH1:=IF(HIGH>REF(C,1),HIGH,REF(C,1));
TRUELOW1:=IF(LOW<=REF(C,1),LOW,REF(C,1));
TRUERANGE1:=TRUEHIGH1-TRUELOW1;


//中间均线+最近3天的TRUE RANGE
UPBAND:HLCMA+MA(TRUERANGE1,3);
DNBAND:HLCMA-MA(TRUERANGE1,3);
LIQUIDPOINT:HLCMA;




//突破肯特耐通道开仓
//突破中间均线+最近3天的TRUE RANGE ,开多、1个单位仓位
首开多:=  CROSS(HLCMA>REF(HLCMA,1)and C>UPBAND,0.5) AND HOLDING=0 AND ENOUGHBAR;
if 首开多  then buy(1,tc,market);
首平多:= HOLDING>0 and C<LIQUIDPOINT AND ENOUGHBAR;
if 首平多 then sell(1,holding,market);


首开空:=CROSS(HLCMA<REF(HLCMA,1)&&C<DNBAND,0.5) and holding=0 and ENOUGHBAR;
if 首开空 then buyshort(1,tc,market);
首平空:= HOLDING<0 and C>LIQUIDPOINT;
if 首平空 then sellshort(1,holding,market);


//开仓价格继续前进0.5ATR加一倍单位的仓位  
BKJC:holding>0 and holding<MTC and Close>(ENTERPRICE+0.5*ATR) and TYPE(1)=1 and ENTERBARS>=0,NODRAW;
SKJC:holding<0 and abs(holding)<MTC and Close<(ENTERPRICE-0.5*ATR) and TYPE(1)=3 and ENTERBARS>=0,NODRAW;
  
if BKJC then buy(1,TC,market);
if SKJC then buyshort(1,TC,market);






//YOYO止损和棘轮止损条件(前面有论述)
DUOZHISHUN: holding>0 and TYPE(1)=1 and ENTERBARS()>=0 and (CLOSE<=BKYYZS or C<=BKZS),NODRAW;
KONGZHISHUN: holding<0 and TYPE(1)=3 and ENTERBARS()>=0 and (CLOSE>=SKYYZS or C>=SKZS),NODRAW;
if DUOZHISHUN then sell(1,holding,market);
if KONGZHISHUN then sellshort(1,holding,market);




//BOLL
BOLLUP:HLCMA+2*STD(CLOSE,26);
BOLLDOWN:HLCMA-2*STD(CLOSE,26);


BOLL_KONG:= REF(ALL(CLOSE>BOLLUP,2),2) and (close<BOLLUP);
BOLL_DUO:= REF(ALL(CLOSE<BOLLDOWN,2),2) and (CLOSE>BOLLDOWN);


//我想咨询怎么样配合前面的条件,如果前面YOYO止损或者棘轮止损没有触发或者已经触发,应该怎么设置这个反向的开仓条件?











hd:holding;


{
信号语句排列规则——先平后开
“费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:
}
持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;
{
您可以在查看菜单->交易系统模板 中设置自己需要的模板
}

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-13 10:56 | 显示全部楼层
具体逻辑是怎样的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-9-13 11:05 | 显示全部楼层
我简单描述下大概思路:
就是一个肯特纳通道,突破开仓,向有利位置前进0.5ATR加一手仓位。然后,用了YY止损(就是前一根收盘价-1.5倍ATR)和棘轮止损(最近10根最低价+5%*ATR*开仓步长)。

我是想加上一个条件,就是加上布林带,如果有2根在布林带以外然后回归布林带,就平掉原有持仓、反手做空1个单位仓位,就是到了中轨止盈,或者再用YY止损
但是按照上面的开仓条件,我不知道应该怎么样配合来实现这个过程
例如说,原来的程序里面,做空就只有原来的向下突破做空。但现在做空又有了原来做多条件下的反手,我就不知应该怎么组织这些语句了。能请技术人员协助实施吗?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-13 13:20 | 显示全部楼层
反手 就这样就行了呀。

if BOLL_KONG then
begin
sell(1,holding,market);
buyshort(holding=0,1,market);       
end


if BOLL_DUO then
begin
sellshort(1,holding,market);
buy(holding=0,1,market);       
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-9-13 14:59 | 显示全部楼层
假如是boll线由多反手做空,但原来做空的语句(就是突破肯特纳通道下轨后),可能这时候CLOSE的价格就高于做空时候的YY止损这些价格了,那又要怎么协调呢?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-13 15:02 | 显示全部楼层
你意思是前面的止损  触发 平了布林带触发的仓位?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-9-13 15:12 | 显示全部楼层
是的,原来做空部分,它怎么识别出来,是正常的向下突破做空,还是做多时候BOLL回调的做空呢?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-13 15:28 | 显示全部楼层
用全局变量标记吧。

VARIABLE:mark:=0;
if BOLL_KONG then
begin
sell(1,holding,market);
buyshort(holding=0,1,market);   
mark:=-1;   
end


if BOLL_DUO then
begin
sellshort(1,holding,market);
buy(holding=0,1,market);  
mark:=1;     
end

然后前面除了布林带外所有开仓地方 就写一个 mark:=0;的语句来重置全局变量。

另外 你止损地方也判断下mark值情况作为区分。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 11:56 , Processed in 0.176895 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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