发明者量化平台的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,空头趋势。

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

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;

趋势模型的例子

趋势模型交易思路: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;

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向下表示趋势弱。

接下来我们把这二者综合起来,就形成了基于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接口的出色支持,量化开发者终于可以真正做到把精力都放在策略的研究和编写上,而不用为那些与量化交易毫无相关的交易系统的底层架构上,特别是这些年对于高频交易的限制越来越严格,无论数字货币还是国内商品期货,对于底层的交易系统架构显得越来越与量化交易本身不相干,各位读者还是应该把主要精力放在策略的逻辑设计上和对代码的有效执行上才是每个宽客的光明大道。

c 语言boll型变量,My语言几种常见指标编写与跨指标模型的案例分析相关推荐

  1. c语言 字符型变量,C语言中字符型变量与整型变量的联系

    1)字符型变量可以与整型变量一样进行算术运算(使用字符数据的ASCII码值进行运算的) 例1: char  m = 'A'; char  n = 32;     //char类型直接赋值整型,此整型为 ...

  2. c 语言boll型变量,极少人知道的BOLL指标使用技巧 一旦学会终身受益!

    很多炒股的朋友都喜欢研究各种各样的指标和战法,殊不知研究多了,自己会乱,长远的投资,只要真正的掌握一个指标和战法,用以极致,那么也是能够稳定获利的,我知道很多老股民朋友喜欢用BOLL这个指标来帮助自己 ...

  3. c语言int型变量写入char数组的方法

    c语言int型变量写入char数组的方法 #include<stdio.h>int main() {int iMum = 1000000;int iReNum = 0;char cArra ...

  4. c语言中整形变量,C语言基本数据类型:整型(int)用法详解

    1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整 ...

  5. C语言--bool型变量问题详解

    环境linux下 GCC编译器 #include <stdio.h> #include <stdbool.h> #include <string.h> int ma ...

  6. c语言中有布尔型变量,C语言的布尔型(bool)

    Technorati 标签: C,布尔,boolean,_Bool,stdbool.h 也许很多人都和我一样,不知道现在的C语言已经有了布尔型:从C99标准开始,类型名字为"_Bool&qu ...

  7. C语言字符型变量的存储和取值

    目录 1.问题引入 2.字符型变量的存储 3.字符型变量的取值 4.字符型变量中的-128 5.取值转换图 1.问题引入 我们知道,在C语言中,一个字符型数据占8个bit位,那么当我们定义一个字符型数 ...

  8. c语言字符型运算符,C语言试题:数据类型、运算符与表达式

    <C语言试题:数据类型.运算符与表达式>由会员分享,可在线阅读,更多相关<C语言试题:数据类型.运算符与表达式(4页珍藏版)>请在人人文库网上搜索. 1.3 数据类型.运算符与 ...

  9. 计算机编程c 语言实型数据,C语言-基础教程-C语言实型数据

    C语言-基础教程-C语言实型数据 分类:计算机等级 | 更新时间:2016-07-08| 来源:转载 2.4.1 实型常量 实型常量又称浮点常量,是一个十进制表示的符号实数.符号实数的值包括整数部分. ...

最新文章

  1. 单词接龙pascal程序
  2. C++设计模式--观察者模式(Observer)
  3. 易混淆的c++知识点
  4. Oracle 学习笔记(四) Oracle表空间和数据文件
  5. Yii在控制层中引入模版进行渲染的几种方式。
  6. UDP socket查询高速缓存
  7. 三种T检验的详细区分
  8. 海洋cms宝塔定时linux,海洋cms设置宝塔计划任务自动采集
  9. Amazon AWS 中国区的那些坑
  10. 各类PDA及手机硬重启方法
  11. 【Unity性能优化】静态资源优化——Audio优化
  12. 2020起重机司机(限桥式起重机)作业考试题库及起重机司机(限桥式起重机)实操考试视频
  13. C++ using的使用
  14. 超级细菌战:一场人类无法打赢的战争
  15. BT-Panel Linux自动磁盘挂载工具
  16. 怎样搭建自己的网站,如何利用花生壳建立个人简易静态网站?
  17. 服务器修改文件名卡死,知道地址修改服务器文件名
  18. NY8B062D 九齐单片机之ADC芯片
  19. fpga的jtag接口扫不到器件_FPGA中AS和JTAG接口的使用
  20. vivo Pad好不好 vivo Pad值不值得买

热门文章

  1. Microsoft Windows操作系统版本介绍
  2. 基于Keras的Python实践 3 chapter 印第安人糖尿病诊断
  3. CNC:CNC计算机数控系统技术之常见机床、CNC各部分、CNC编程软件之详细攻略
  4. python识别excel文件格式 ——(专栏:基于python编写简单office阅卷程序②)
  5. 用matlab怎么仿真升降压电路,升降压直流斩波电路及matlab仿真.doc
  6. 三星推出的第一款Android操作系统手机
  7. springboot html 动态数据转pdf
  8. PWN lotto [pwnable.kr]CTF writeup题解系列10
  9. java.lang.ArithmeticException: Non-terminating decimal expansion;
  10. 建设工程法规专科【10】