金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2671|回复: 0

简易文华模型改金字塔方法(原来用文华的小伙伴看过来)

[复制链接]

70

主题

190

帖子

275

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
发表于 2021-5-20 15:01 | 显示全部楼层 |阅读模式
本帖最后由 技术009 于 2021-5-24 15:52 编辑

这是一个简易文华模型改金字塔教程

1、简易模型改法
文华boll模型
MID:MA(CLOSE,N);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,M);//求M个周期内的收盘价的标准差
TOP:MID+P*TMP2;//布林通道上轨
BOTTOM:MID-P*TMP2;//布林通道下轨
CROSS(C,BOTTOM),BPK;//当最新价上穿下轨时,做多
CROSS(TOP,C),SPK;//当最新价下穿上轨时,做空
AUTOFILTER;

金字塔模型 简单改法:
input:n(26,5,300,1),M(26,1,100,1),P(2,1,10,1);//定义参数
MID:MA(CLOSE,N);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,M);//求M个周期内的收盘价的标准差
TOP:MID+P*TMP2;//布林通道上轨
BOTTOM:MID-P*TMP2;//布林通道下轨
CROSS(C,BOTTOM),BPK,TFILTER;
CROSS(TOP,C),SPK,TFILTER;

金字塔模型 新交易系统改法:
input:n(26,5,300,1),M(26,1,100,1),P(2,1,10,1);//定义参数
MID:MA(CLOSE,N);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,M);//求M个周期内的收盘价的标准差
TOP:MID+P*TMP2;//布林通道上轨
BOTTOM:MID-P*TMP2;//布林通道下轨
if CROSS(C,BOTTOM) and holding<=0 then begin//当收盘价上穿下轨且有空仓或无仓时
sellshort(1,1,market);//平空 第一个1代表100%成立,第二个1代表下单手数(下同)
buy(1,1,market);//开多
end
if CROSS(TOP,C) and holding>=0 then begin //当收盘价下穿上轨且有多仓或无仓时
sell(1,1,market);//平多
buyshort(1,1,market);//开空
end

2、解决AUTOFILTER
    通过实际工作中的交流,发现用户经简单转换后,稍了解下金字塔机制,改用Holding函数来控制,不再使用此函数的非常多,我想通过此贴,让大家少走弯路。  
     我们来研究下Autofilter的机制,它实际作用是,当我第一次满足条件后开仓,之后再满足条件不在开仓。即用成立条件和持仓来判断。
我们依然以文华的Boll模型为例:
(这里我们不用cross函数,因为它是一个点.为了更直观的达到效果,我们用C>bottom ;C<top来替代金叉,死叉)

文华boll模型
MID:MA(CLOSE,N);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,M);//求M个周期内的收盘价的标准差
TOP:MID+P*TMP2;//布林通道上轨
BOTTOM:MID-P*TMP2;//布林通道下轨
C>BOTTOM,BPK;//当最新价上穿下轨时,做多
TOP>C,SPK;//当最新价下穿上轨时,做空
AUTOFILTER;

现在我们在金字塔中用Holding函数可改为:
//中间变量
MID:MA(CLOSE,N);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,M);//求M个周期内的收盘价的标准差
TOP:MID+P*TMP2;//布林通道上轨
BOTTOM:MID-P*TMP2;//布林通道下轨
//交易条件
开多平空条件:=C>BOTTOM and holding<=0;//当最新价上穿下轨时,并且持空仓或无仓的情况下,做多
开空平多条件:=TOP>C and holding>=0;//当最新价下穿上轨时 并且持多仓或无仓的情况下,做空

//交易系统
加仓条件:=c>mid and holding=1;//当最新价大于中轨,且持一手多单,加仓
buy(加仓条件,手数,matket);
得到当前策略虚拟持仓量,多仓返回正数,空仓返回负数,无持仓返回0。

3、BARSBP、BARSSK、BAESSP在金字塔的实现
借助variable(全局变量)实现。
可以设置一个全局变量
以开多为例
variable:a=0;
if 开多条件 then begin
      buy();
      A:=A+1;//开始计数
end
……
……
if TYPEBAR(1 , 1)>0 then A:=A+1;//每根K线+1
补充:
typebar函数说明
得到当前位置之前上N次信号指定类型距当前周期
用法:
TYPEBAR(N,TYPE)N表示上次信号,
TYPE表示信号类型 0、无信号1、开多2、平多3、开空;4、平空
例如:TYPEBAR(2,1)表示:倒数第2个开多信号历时
更多variable用法请参考金字塔初级教程。

4、BKPRICE、BPPRICE、SKPRICE、SPPRICE在金字塔的实现。
金字塔对于开平仓价格 只有2个函数 enterprice(上次开仓价)和exitprice(上次平仓价)。
策略若需更灵活的使用,请参考variable(全局变量)的使用。
至于金字塔的后台是什么,它与图表程序化的差别,请看论坛置顶的帖子

5、crossup和crossdown在金字塔的实现。
这2个函数,在金字塔只有一个对应的函数cross. 只需要调整参数位置就能分别实现上穿和下穿。
比如 ma5金叉ma10 是cross(ma5,ma10);反过来ma5死叉ma10 则是cross(ma10,ma5) 仅仅需要调换下函数参数位置即可,非常方便。
6、hv,lv在金字塔的实现。
金字塔的hhv函数,这个和文化的是等效的,包含当前K在内。而hv,lv只需要进行简单的改写就能实现。
hv(h,N) 等效于ref(hhv(h,N),1)
lv(l,N)等效于 ref(llv(l,N),1)
7、import,CALL_PLUS在函数在金字塔的实现。
金字塔有多种进行数据,指标调用的函数可以使用。
这2个函数可以用stkindistkindiex(相比stkindi函数,可指定调用的数据量)函数完全替换,但是具体使用方式上有所不同。
例如,调用macd指标的macd值并赋值给变量A。
A:stkindi('RB00','macd.macd1',0,6,0);//调用rb00 在日线级别的macd指标的macd1变量的值。如果不指定品种,则默认是当前品种
具体写法这里不在赘述,用户可自行参考函数说明。
另外还有“引用操作符”和“用户函数”的2种引用方式,用户可在函数列表里搜搜对应关键词查找函数说明。这2个函数灵活性不如stkindi函数,但是在效率上会更高效。

8.CHECKSIG函数的效果如何在金字塔上实现。
CHECKSIG函数可以设置对交易信号的处理方式。在金字塔里有2种信号处理方式:走完K和固定间隔,顾名思义就是在K线走完时候检测信号和每固定时间间隔时候检测信号,但是这个不是在代码中编写的,而且外部的一个设置。

CHECKSIG的方式和我们金字塔的固定间隔模式最为接近。固定间隔可以设置任意时间间隔,一样也可以分笔级别。如下图所示:

有区别的地方是:
1.金字塔处理信号的模式 默认是针对所有信号的。CHECKSIG是需要指定信号类型。
2.没有对信号的复核。金字塔无论固定间隔还是走完K,检测到信号即下单,不存在延迟复核的功能


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 12:04 , Processed in 0.234747 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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