c 语言boll型变量,My语言几种常见指标编写与跨指标模型的案例分析_春容的博客-程序员宅基地

技术标签: c 语言boll型变量  

发明者量化平台的My语言是一种函数高度集成且功能强大的量化编程语言,专为量化初学者量身定做,虽然它受众多初学者的欢迎,在功能上却一点不比别的编程语言逊色。在深度定制某些复杂策略方面,由于已经定制好的函数库十分强大,加上发明者量化平台本身对于各大交易所的API接口的出色支持,使你不仅在时间上节省很多写代码的时间,可以把精力主要放在策略逻辑的设计上,而且超低的费用(每天低至3元人民币的价格),让你无后顾之忧。

My语言不止适用于国内商品期货,对于数字货币相关交易也是无功能差别的同样支持。

本文将介绍几种常见指标的编写以及几个跨指标模型的案例分析。

几个常用的指标分类与编写

传统经典的K线形态包括:三足乌鸦,十字星,穿头破脚,一柱擎天,仙人指路,金针探底等等

指标方面,其中趋势类指标又分为:MA(均线组合),BOLL,PUBU(瀑布线),SAR(止损点)等等

摆动类指标:ATR(真实波幅)、KDJ(随机指标)、MACD、WR(威廉指标)等等

量仓分析指标 CJL(成交量)、DUALVOL(多空量比)、OBV(量能潮)

接下来,让我们用My语言在发明者量化平台上逐个实现以上这些经典形态和指标,实现的目的不是为了让读者直接用这些指标(当然,在某些条件下直接使用可能也没有问题),而是让读者可以基于这些指标进行审时度势,根据行情和自己自身的资金管理状况来对这些经典进行改良。正所谓兵无常势,以万变应万变才是金融市场的生存法则。

大阳线:开盘价即为最低价,收盘价即为最高价,K线涨幅大于4%

AA:=OPEN=LOW;

BB:=CLOSE=HIGH;

CC :=CLOSE/OPEN>1.04;

这里的逻辑综合判断条件为:AA&&BB&&CC

穿头破脚:两根K线组成,表示行情将要转向,当前K线的开收至少有4%的差值,如果是向上穿头破脚的类型,那么该K线应该收阳,同时当前K线的最高价和最低价要包住前一根K线。

A1:=REF(CLOSE,1);

A2:=REF(OPEN,1);

BB:C/O>1.04;

B1:=OPEN

B2:=CLOSE>A2;

这里的逻辑判断条件为:BB&&B1&&B2

趋势类指标

均线交叉:5日均线向上穿过10日均线(金叉);5日均线向下穿过10日均线(死叉)

MA5:=MA(CLOSE,5);

MA10:=MA(CLOSE,10);

金叉 CROSSUP(MA5,MA10);

死叉 CROSSDOWN(MA5,MA10);

这里大家可以看到,My语言的功能函数高度集成,一个判断均线交叉的函数,用户需要做的只是调用就行了,不必从新再从底层逻辑去构建逐个函数,且对于以后的调参也更加方便

同样的,对于三条均线的策略逻辑,假设5日均线、10日均线、30日均线多头排列,且持续3天,我们可以这样写:

MA5:=MA(CLOSE,5);

MA10:=MA(CLOSE,10);

MA30:=MA(CLOSE,30);

CC:=MA5>MA30 AND MA10>MA30;

BOLL通道: BOLL由下轨(BOTTOM)、上轨(TOP)、中线(MID)三者组成通道。通道变宽并向上时,价格在上轨之上,多头趋势来临。反之空头趋势来临。

用My语言的代码表示可以这样写:

MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨

TMP2:=STD(CLOSE,26);//求M个周期内的收盘价的标准差

TOP:MID+2*TMP2;//布林通道上轨

BOTTOM:MID-2*TMP2;//布林通道下轨

AA:=TOP>REF(TOP,1)&&BOTTOMREF(MID,1);

BB:=C>TOP;

这其中多头趋势的判断条件为:AA&&BB

SAR(止损点)指标:SAR向上穿过0,多头趋势;SAR向下穿过0,空头趋势。

首先我们在发明者量化策略代码编写界面下面的参数栏和回测页面的麦语言交易类库中定义以下参数:

a01b11a5add63d7a556177e7f07ae6e4.png

bc63ae0be62920d4d5cf97e6711f9caa.png

N 1 100 4

STEP 1 20 2

MVALUE 1 10 2

STEP1:=STEP/100;

MVALUE1:=MVALUE/10;

SARLINE:SAR(N,STEP1,MVALUE1),CIRCLEDOT;

//N个周期的抛物转向,步长为STEP1,极限值为MVALUE1.

CROSS(SARLINE,0),BPK;//抛物转向值上穿0,做多。

CROSS(0,SARLINE),SPK;//抛物转向值下穿0,作空。

AUTOFILTER;

摆动类指标

有过一定交易经验的人都知道,无论什么市场,其实百分之80的时间价格都是震荡状态,价格以趋势的方式运行只有很少的百分之20的时间。

因此,摆动类指标比趋势类指标更重要且对于交易的结果也影响更大,且在大部分震荡行情中,趋势类指标基本全部失效。而摆动指标却能跟随价格的波动而变化,摆动指标也可以称作随机指标。

摆动类指标特点:摆动指标值的变化有一个中间值,可将水平区域分为上半部和下半部,一般是反应价格变化的敏感程度的。

判断趋势来临用趋势类指标,判断趋势尾声用摆动类指标是一个不错的选择。

KDJ随机指标由K、D、J三条线组成,指标线介于0~100之间变化,J线低于20,进入超卖区,J线高于80,进入超买区。如果K线上穿D线可以做多,如果K线下穿D线可以做空。

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;

//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。

K:SMA(RSV,M1,1);//RSV的移动平均值

D:SMA(K,M2,1);//K的移动平均值

J:3*K-2*D;

BACKGROUNDSTYLE(1);

CROSS(K,D),BPK;//KD金叉,做多。

CROSS(J,20),BP;//J值上穿20

CROSS(D,K),SPK;//KD死叉,做空。

CROSS(80,J),SP;// J值下穿80

AUTOFILTER;

MACD指数平滑异同平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA)减去慢的指数移动平均线,MACD的意义和双移动平均线基本相同,当MACD从负数转向正数,是做多信号。当MACD从正数转向负数,是做空信号。

DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);

//短周期与长周期的收盘价的指数平滑移动平均值做差。

DEA:EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均

2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

CROSS(DIFF,DEA),BPK;//DIFF上穿DEA,做多。

CROSS(DEA,DIFF),SPK;//DIFF下穿DEA,做空。

AUTOFILTER;

跨指标模型案例

我们为什么要跨指标?

第一个原因:模型中跨指标,是技术面内部要素共振的一种交易思想,将多个不同分类指标交易思想结合在一起进行看盘断势。

第二个原因:趋势类指标在盘整行情中失效,单独使用摆动类指标无法判断当前行情状态,需要多个指标结合分析。

常用思路

趋势判断与精细分析相结合。

多条件同向判断。

震荡模型的例子

潮汐指数

ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100

衡量一定周期内价格波动情况:指数连续在一个小的区间内波动说明正处于盘整行情,否则为趋势行情。

震荡模型交易思路:潮汐指数判断盘整,KDJ摆动指标找入场点和出场点

这个模型我们可以这样写:

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;

K:SMA(RSV,M1,1);//RSV的移动平均值

D:SMA(K,M2,1);//K的移动平均值

J:3*K-2*D;

CMIVAL:ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100,NODRAW;

BACKGROUNDSTYLE(1);

K>D&&EVERY(CMIVAL<20,2),BPK;//盘整行情,KD金叉,做多。

CROSS(J,10)||CROSS(K,D),BP;// J值上穿10超卖或者KD金叉,平仓

D>K&&EVERY(CMIVAL<20,2),SPK;//盘整行情,KD死叉,做空。

CROSS(90,J)||CROSS(D,K),SP;// J值下穿90超买或者KD死叉,平仓

AUTOFILTER;

5b98ba9cb8c1331e5a9228d5804b7312.png

趋势模型的例子

趋势模型交易思路:EMA判断上涨趋势还是下跌趋势;ADX指数反映趋势的变动程度,趋势强入场,趋势弱观望。

EMA趋势判断交易系统:

UPPERMA:EMA(HIGH,30);//计算30根K线最高价的EMA

LOWERMA:EMA(LOW,30);//计算30根K线最低价的EMA

CROSSUP(C,UPPERMA),BPK;//收盘价上穿EMA,做多

CROSSDOWN(C,LOWERMA),SPK;//收盘价下穿EMA,做空

AUTOFILTER;

d3c683f4cf27012d550b33eb34d16294.png

EMA只能判断做多趋势和做空趋势,但是无法判断趋势的强弱,所以EMA在行情盘整中失效,所以我们需要寻找可以体现趋势强弱的指标:ADX指数

代码如下:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);

HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差

LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差

DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);

//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。

DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);

//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。

PDI:=DMP*100/TR;

MDI:=DMM*100/TR;

ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

ADX向上表示趋势强,ADX向下表示趋势弱。

1d1f68d1a9ac38764aab3d667a231174.png

接下来我们把这二者综合起来,就形成了基于ADX及EMA的交易系统

代码如下:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);

HD:=HIGH-REF(HIGH,1);

LD:=REF(LOW,1)-LOW;

DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);

DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);

PDI:=DMP*100/TR;

MDI:=DMM*100/TR;

ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

UPPERMA:=EMA(HIGH,30);

LOWERMA:=EMA(LOW,30);

CROSSUP(C,UPPERMA)&&EVERY(ADX>REF(ADX,1),2),BPK;

//当ADX连续两周期向上且当前价大于30根K线最高价的EMA满足买入条件

CROSSDOWN(C,LOWERMA)&&EVERY(ADX>REF(ADX,1),2),SPK;

//当ADX连续两周期向上且当前价下于30根K线最低价的EMA满足卖出条件

AUTOFILTER;

多个同类指标同向判断以精确分析,提高胜率

寻找多个趋势指标:布林通道(BOLL)、唐奇安通道、均线动态突破系统就是基于自适应的布林通道与自适应的唐奇安通道的突破系统

唐奇安通道:是美国期货市场传奇人物理查德·丹尼斯(Richard Dennis)发明的,是海龟法则的前身。其构成是由一定周期(一般都是20,案例中设置为可以改变的)内的最高价和最低价形成上轨和下轨,当价格冲破上下轨道时,冲破上轨是就是可能的买的信号;反之,冲破下轨时就是可能的卖的信号。

多指标模型交易思路:

昨日价格大于布林通道上轨,并且当日周期价格大于唐奇安通道上轨,开多单

昨日价格小于布林通道下轨,并且当日周期价格小于唐奇安通道下轨,开空单

持有多单时,价格小于自适应出场均线,平多单

持有空单时,价格大于自适应出场均线,平空单

我们可以这样写:

//当日市场波动

TODAYVOLATILITY:=STD(CLOSE,30);

//昨日市场波动

YESTERDAYVOLATILITY:=REF(TODAYVOLATILITY,1);

//市场波动的变动率

DELTAVOLATILITY:(TODAYVOLATILITY-YESTERDAYVOLATILITY)/TODAYVOLATILITY;

//计算自适应参数

LOOKBACKDAYS1:=LOOP2(BARPOS=30,20,REF(LOOKBACKDAYS1,1)*(1+DELTAVOLATILITY));

LOOKBACKDAYS2:=ROUND(LOOKBACKDAYS1,0);

LOOKBACKDAYS3:=MIN(LOOKBACKDAYS2,60);//60自适应参数的上限

LOOKBACKDAYS:=MAX(LOOKBACKDAYS3,20);//20自适应参数的下限

//自适应布林通道中轨

MIDLINE:=MA(CLOSE,LOOKBACKDAYS);

BAND:=STD(CLOSE,LOOKBACKDAYS);

//自适应布林通道上轨

UPBAND:=MIDLINE+2*BAND;

//自适应布林通道下轨

DNBAND:=MIDLINE-2*BAND;

//自适应唐奇安通道上轨

BUYPOINT:=HHV(HIGH,LOOKBACKDAYS);

//自适应唐奇安通道下轨

SELLPOINT:=LLV(LOW,LOOKBACKDAYS);

//自适应出场均线

LIQPOINT:=MIDLINE;

//昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,开多单

REF(C,1)>REF(UPBAND,1)&&HIGH>=REF(BUYPOINT,1),BK;

//持有多单时,昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,平多单

REF(C,1)

//持有多单时,价格小于自适应出场均线,平多单

BARSBK>=1&&LOW<=REF(LIQPOINT,1),SP;

//持有空单时,昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,平空单

REF(C,1)>REF(UPBAND,1)&&H>=REF(BUYPOINT,1),BP;

//昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,开空单

REF(CLOSE,1)

//持有空单时,价格大于自适应出场均线,平空单

BARSSK>=1&&HIGH>=REF(LIQPOINT,1),BP;

AUTOFILTER;

在编写过程中,大家要注意的是,在My语言中,“CROSSUP”、“CROSSDOWN”与“>”,“

以上,就是几种常见的技术指标和他们的结合运用,可以看得出,My语言是一种十分强大的脚本语言,除了友好的初学者学习体验,即使一个量化高手,也可以灵活运用这些指标和语法的组合创造出强大的交易策略,配合发明者量化平台的API接口的出色支持,量化开发者终于可以真正做到把精力都放在策略的研究和编写上,而不用为那些与量化交易毫无相关的交易系统的底层架构上,特别是这些年对于高频交易的限制越来越严格,无论数字货币还是国内商品期货,对于底层的交易系统架构显得越来越与量化交易本身不相干,各位读者还是应该把主要精力放在策略的逻辑设计上和对代码的有效执行上才是每个宽客的光明大道。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36075657/article/details/117517119

智能推荐

Vue项目中tinymce富文本的安装以及配置_保护我方发量的博客-程序员宅基地_tinymce安装

Vue项目中tinymce富文本的安装以及配置对于目前网上存在的许多富文本插件中,个人还是觉得tinymce相对比较强大一些。在使用配置的过程中,可能会出现配置不完全,导致使用不了的情况,下面把我个人使用的经验分享给大家,希望对你们有所帮助。安装tinymce插件命令npm i tinymce @packy-tang/vue-tinymce在main.js文件中全局引入tinymce相关文件(看项目需要,也可以在需要的组件中按需引入)import tinymce from 'tinymce'i

css高度动画_动画高度-正确的方法_cumian9828的博客-程序员宅基地

css高度动画Let’s be honest. Animating height can be a huge pain. For me, it’s been a constant battle between wanting to have nice animations, and not being willing to pay the enormous performance cost ass...

电气工程及自动化 (独立本科) 自考_gaap的博客-程序员宅基地

电气工程及自动化(独立本科) 【全国只有三个省有,电气工程及自动化 , 自考。】应该是比较可信的,参考:https://www.233.com/zikao/profess/gongxue/00702.html下面就,广西,黑龙江,四川。三省的情况进行,收集。广西2012年广西工学院自考电气工程与自动化专业(独立本科段)考试计划2011年10月25日来源:233网校网校课程...

Mac最佳python环境选择_IndexFziQ的博客-程序员宅基地

python2.7/3.+, how to choose?可能在刚刚接触python的时候,版本2.7和3.+到底选哪一个很纠结。再经过一次次地reset之后,得出了我的结论。升级python到最高版本。下载对应的Anaconda。在Anaconda中创建虚拟环境,可以直接选择项目需要的python版本,这样可以随着项目的改变自己设定,省去了很多麻烦。Install pythons...

iOS上架该怎么做?_biaolipian0851的博客-程序员宅基地

App Store上架指的是iOS应用从提交申请到上线的整个过程,它的目的是让应用展示在App Store上获取流量、用户。一、iOS上架的整体流程1、申请开发者账号苹果的开发者账号主要分为三种类型:个人账号、公司账号、企业账号,三者的费用以及权限等都不尽相同。开发者账号的申请过程一般需要一个星期左右的时间。一般开发者申请的都是个人或者公司的账号,因为企业账号的应用不能发布到App Stor...

SpringBoot启动Error creating bean with name 'userController': Unsatisfied depen_YaXinShi的博客-程序员宅基地

emmmm,我的错误是application里的数据库配置写错了,竟然会影响到springBoot自动配置的ioc的bean注入,我也是醉了,emmmm,还报Controller,mapper,全盘错误,,emmm,springboot引导类的的自动配置,自动扫描,真牛逼,错一个数据库文件,竟然都spring 依赖注入短线。。。。...

随便推点

dsl linux 使用教程,SpaceDSL天体动力学仿真库的介绍、编译和使用说明_weixin_39994806的博客-程序员宅基地

1. 介绍SpaceDSL是一个天体动力学仿真库。它使用C++编写,为天体动力学爱好者提供一个开放的框架以更自由的方式实现天体动力学仿真。本项目基于MIT协议开放源码,以供自由使用。本项目通过CMake构建,可以用于Windows、Linux和Mac OS。SpaceDSL库可以被编译成静态库、动态库和Python依赖库。当然也支持直接使用。1.1 核心特性SpaceDSL包含了有关天体动力学仿真...

安徽计算机二级vfp成绩,安徽省计算机二级vfp08年6月.doc_平安是福13031664853的博客-程序员宅基地

安徽省计算机二级vfp08年6月安徽高等学校(安徽考区)计算机水平考试试卷(二级Visual Foxpro语言)2008年6月份试卷单项选择题(每题1分,共40分)1.计算机能够自动工作,主要是因为采用了()A.二进制数制 B.大规模集成电路 C.程序设计语言 D.存储程序控制原理2.下列数值中最大的是()A.(10110)2 B.(120)8 C.(70)10 ...

华为nova3更新android10,nova星人请注意!华为nova 3全面开放EMUI9.0升级_保皇的博客-程序员宅基地

在今年7月底,华为发布了旗下nova系列新机——华为nova 3,主打爱自拍高颜值,凭借着出色的潮流外观和给力的配置,再加上易烊千玺的代言,让nova 3成为时尚人群的购机首选。最近,高颜值有实力的华为nova 3迎来了EMUI9.0全面升级。12月10日,华为EMUI给nova星人带来心心念念的好消息,华为nova 3正式全面开放EMUI9.0系统。此外,nova 2s、nova 3i、nova...

Redis以及Redis的缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题_酸宁宁的博客-程序员宅基地

Redis简介: Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间 件。 它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合 (Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和 地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:...

idea 锁定抛异常位置_Suc1的博客-程序员宅基地

以前用eclipse的时候,可以根据所抛出的异常进行调试,比如:出现了空指针异常,我想知道是哪一行抛出的,在eclipse中我只需在debug模式下把空指针异常这个名字设置进去,当遇到空指针异常时,eclipse就会自己停留在那一行,intellij idea如何实现这个功能呢? 1,debug窗口如下图,或者按快捷键ctrl+shif+f8进行设置2,点击+号,可以看到断点的几种...

Android开发中使用Glide V4 中Generated API特性_新根的博客-程序员宅基地

Android开发中使用Glide v4中Generated API来加载图片。

推荐文章

热门文章

相关标签