自适应均线的源代码以及改良

合集下载

[转][程序化交易]自适应均线交易系统tb源码

[转][程序化交易]自适应均线交易系统tb源码

[转][程序化交易]自适应均线交易系统tb源码//------------------------------------------------------------------------// 简称: MRJS_YM_SingleAMA_00// 名称: MRJS_YM_SingleAMA_00// 类别: 公式应用// 类型: 用户应用// 输出://------------------------------------------------------------------------Params//AMA相关Numeric FastAvgLength(2);Numeric SlowAvgLength(30);Numeric EffRatioLength(10);//系统相关Numeric ConfirmPeriod(3); //确认均线趋势次数Numeric StdMultiplier(1); //过滤器百分比//交易相关Numeric Slipes(2); //滑点Vars//AMA相关Numeric NetChg(0);Numeric TotChg(0);Numeric EffRatio(0);Numeric SmoothRatio(1);NumericSeries AMAValue;Numeric STDLen(0); //标准差长度Numeric PriceSTD(0);Numeric STDRatio(1); //进入标准差的倍数Bool LongIndicator(True);Bool ShortIndicator(True);Numeric i;Beginif(CurrentBar == 0){AMAValue = Close;}Else{NetChg = Abs( Close - Close[EffRatioLength] );TotChg = Summation( Abs( Close - Close[1] ), EffRatioLength );EffRatio = IIF(TotChg > 0, NetChg / TotChg, 0);SmoothRatio = Power( ( EffRatio * ( 2 / ( FastAvgLength + 1 ) - 2 / ( SlowAvgLength + 1 ) ) + 2 / ( SlowAvgLength + 1 ) ), 2 );AMAValue = AMAValue[1] + SmoothRatio * ( Close - AMAValue[1] );}STDLen=SlowAvgLength;PriceSTD=StandardDev(Close[1],STDLen);//当不持多仓的情况下,如果做多条件满足,则做多If(MarketPosition <>1 && AMAValue[1]-Lowest(AMAValue[1],ConfirmPeriod) > PriceSTD*STDRatio*StdMultiplier/100 ){Buy(0,Open+Slipes);PlotString ("top","jdc",Portfolio_TotalProfit,Red);}//当不持空仓的情况下,如果做空条件满足,则做空If(MarketPosition <>-1 && Highest(AMAValue[1],ConfirmPeriod)-AMAValue[1] > PriceSTD*STDRatio*StdMultiplier/100 ){SellShort(0,Open-Slipes);PlotString ("top","jkc",Portfolio_T otalProfit,Red);}PlotNumeric("PL",Portfolio_T otalProfit);End//------------------------------------------------------------------------// 编译版本 GS2010.12.08// 用户版本 2013/03/14 13:43// 版权所有 ymingcn// 更改声明 TradeBlazer Software保留对TradeBlazer平台// 每一版本的TrabeBlazer公式修改和重写的权利//-----------------------------------------------------------------原文见:自适应均线交易系统tb源码。

自适应均线原理修订稿

自适应均线原理修订稿

自适应均线原理WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-自适应均线原理自适应均线(一)QQ群:我们跟踪股票的走势,必然离不开均线作为参考。

均线系统是我们观察股票走势的基础。

短期均线不能很好地屏蔽市场的噪声,往往产生虚假的进场信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。

一个股票的10日内的突发性的上涨,如果用200日均线去观察,几乎看不出变化。

均线系统存在的问题,让我们每一个股市的参与者感到左右为难。

寻找最佳的移动平均值就成了大家乐此不疲的一种日常活动。

由于每次市场的波动,趋势的速度都是不同的,所以在每一波的波动中,采用多少周期的移动平均值才能最好地反映趋势的方向呢有一个流行的解决方法,就是针对某一只股票测试其历史数据的最佳移动平均值。

并且根据最近的、最符合其趋势的移动平均值去进行操作。

但是历史数据只代表已经走过的趋势,我们不可能回到过去进行交易。

通过分析我们使用的移动平均线,可以得出如下的结论:当价格沿一个方向快速移动时,短期的移动平均线是最好的。

当价格在横盘的过程中,长期移动平均线是最好的。

我们理想中的移动平均线是什么样子的呢?当价格无目标地移动时,它的反映会比较慢,像长期移动平均线;当价格有了快速变化的时候,它又能很快地跟上价格的走势,像短期移动平均线。

这样的移动平均线存在吗?当然存在!很多国外的股票技术分析书籍中都提到过这样的均线,把这种自适应的均线系统作为计算机自动交易系统中趋势判断最主要的手段。

最近在**的“黄金股道”的软件中,也见到过类似的均线,但是做了公式的加密。

其实这样的自适应均线每一个股票的软件都可以做到,并且非常简单。

自适应均线(二)QQ群:要构建自适应的均线,我们就必须先确定股票价格的趋势和速度。

当股票价格持续上涨或持续下跌的时候,自适应均线就应该采用短周期均线的平滑系数;而当市场处于横盘波动过程中的时候,自适应均线就应该采用长周期的平滑系数。

考夫曼自适应均线(python源代码)

考夫曼自适应均线(python源代码)

考夫曼自适应均线(python源代码)#!/usr/bin/env python# -*- coding: utf-8 -*-import pandas as pdimport numpy as npdef KAMA(series:pd.Series, cyc:int=10, fastest:int=2, slowest:int=30)->np.float64: '''考夫曼自适应均线指标函数 series: 接受 pandas 的 Series 格式的数值 cyc: int 指定数据的计算周期fastest: int 快线slowest: int 慢线输出值: np.float64 例程:kama = KAMA(series.close, cyc=10, fastest=2, slowest=30)''' length = series.shape[0] if length >= cyc: direction = (series.shift(cyc - 1) - series).abs() #价格方向volatility = series.diff(1).abs().rolling(cyc - 1).sum() #波动幅度 efficiency_ratio = direction / volatility #效率系数 fastest_ratio, slowest_ratio = 2 / (fastest + 1), 2 / (slowest + 1) #快线/慢线系数smooth = (efficiency_ratio * (fastest_ratio - slowest_ratio) + slowest_ratio) ** 2 #平滑系数 ama_array = np.zeros(length) first_value = True for i in range(length): if smooth[i] != smooth[i]: ama_array[i] = np.nan else: if first_value: ama_array[i] = series[i] first_value = False else: ama_array[i] = ama_array[i - 1] + smooth[i] * (series[i] - ama_array[i - 1]) return ama_array return Exception('错误警告:考夫曼自适应均线指标函数中传入的数据量不足!')。

自适应移动平均线(AMA)

自适应移动平均线(AMA)

自适应移动平均线(AMA)长期来说,价格会显示一种回归其本来价值的特性,在二维图形上显示一种收敛或者说回归均值的图形。

这似乎也反映了政府金融或利息政策改变所带来的影响。

一个超出市场平均波动周期的趋势则可能是一个好的趋势,一个波动周期如有特别变化的关键变量,则趋势有可能发生改变,在股市上通常表现为量能和价格区间的变化。

以下为Perry J.Kaufman的自适应移动平均系统,资料来源于其著作《Smarter Trading》。

关于移动平均由一个时间周期的价格平均值构成,并以单位时间的价格周期不断计算,加入新的一个单位时间的价格时去掉第一个单位时间的价格,并计算平均值。

一个过去几天的平均值,减少了人为的由消息引起的过激反应的影响。

平均较长的数据周期,给出了较平滑的趋势,其结果经常是长期市场方向的一个很好的代表,也反映了市场运行状况和人们对于利率和政策的预期。

趋势系统趋势计算把价格移动归纳为一个净方向,并假设价格将会继续沿着这个方向运动。

趋势跟踪系统则是对趋势作出反应,而不是对它们进行预期。

噪音一个持续横盘的期的波动水平,可以很方便的用来测量内在噪音。

如果一个趋势是由一个不大于市场内在噪音水平移动所引起的,那么这个趋势就是不可靠的。

自适应当市场沿着一个方向快速移动时,快得移动平均值是最好的。

当市场在横盘的市场中立拉锯时,慢的移动平均值是最好的。

三种价格波动性测量a. 简单地计算价格的净变化,从开始点到结束点。

这倾向于最保守的测量,因为它平滑了从开始到结尾之间发生的任何价格移动。

b. 高-低范围更好地描述了在周期内可能产生的任意极端值。

c. 所有变化总和,它是最概括的测量,因为能识别一个价格移动从高到低的次数。

自适应移动平均值步骤1:价格方向价格方向被表示为整个时间段中的净价格变化。

比如,使用n天的间隔(或n小时):步骤2:波动性波动性是市场噪音的总数量,计算了时间段内价格变化的总和volatility= @ sum( @ abs(price-price[1]),n)步骤3:效率系数(ER)方向移动对噪音之比,成为效率系数EREfficiency_Ratio = direction/volatility步骤4:变换上述系数为趋势速度为了应用于一个指数式移动平均值,比率将被变换为一个平滑系数c,依靠使用下面的公式,每天的均线速度可以简单地用改变平滑系数来改变,成为自适应性的。

自适应均线

自适应均线

{公称名称: AMA考夫曼自适用型均线}input:N(10,1,60),P1(2,1,60),Q1(30,1,60);DIRECTION:=(CLOSE - REF(CLOSE,N));XX:=ABS((CLOSE - REF(CLOSE,1)));VOLATILITY:=SUM(XX,N);ER:=ABS((DIRECTION / VOLATILITY));FASTC:=(2 / (P1 + 1));SLOWC:=(2 / (30 + 1));SSC:=((ER * (FASTC - SLOWC)) + SLOWC);CONSTANT:=(SSC * SSC);CC:=CLOSE;YY:=(REF(CLOSE,1) + (CONSTANT * (CLOSE - REF(CLOSE,1))));IF DA TACOUNT > N THENDD[N]:=CC[(N + 1)];FOR I=N + 1 to DA TACOUNT DODD[I]:=(DD[(I - 1)] + (CONSTANT[I] * (CC[I] - DD[(I - 1)])));AMA:DD,LINETHICK2,colorFFFF;DIR:=ABS(CLOSE-REF(CLOSE,10));VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),10);ER:=DIR/VIR;CS:=ER*(2/3-2/14)+2/14;CQ:=CS*CS;AMA1:EMA(DMA(CLOSE,CQ),2),COLORGREEN;FIL:=STD(AMA-REF(AMA,1),20);DRAWICON(FILTER(AMA-LLV(AMA,3)>FIL*0.1,10),AMA,1);自适应均线初步学习常见的计算均线的指标是ma(simple moving average) 和ema(exponential moving average),公式如下:SMA = SUM(CLOSE, N)/NEMA = (CLOSE(i)*P)+(EMA(i-1)*(1-P)) or(M*CLOSE(i)+(N-M)*EMA(i-1))/NMA有滞后的特点,因此在ema中对最近的价格给予较大的权重提高对趋势的跟踪效果。

Kaufman的自适应移动平均线(AMA)

Kaufman的自适应移动平均线(AMA)

Kaufman的自适应移动平均线(AMA)技术分析往往离不开均线系统,她是我们观察价格走势的基础。

短期均线贴近价格走势,灵敏度高,但会有很多噪声,产生虚假信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。

我们想得到这样的均线,当价格沿一个方向快速移动时,短期的移动平均线是最合适的;当价格在横盘的过程中,长期移动平均线是合适的。

为了达成以上目的,我们来看看Kaufman的自适应均线系统,下面是算法:步骤1:价格方向价格方向被表示为整个时间段中的净价格变化。

比如,使用n天的间隔(或n小时):direction = price – price[n];其中,direction是当前价格差或方向数值,price是当前价格(当日收盘价或小时收盘价),price[n]是n日前的收盘价(或n个周期前)。

步骤2:波动性波动性是市场噪音的总数量,它可以用许多不同的方法定义,但是这个计算使用了所有“日到日”或“小时到小时”的价格变化的总和(每一个都作为一个正数),在同样的n个周期上。

如下表达:volatility = @sum(@abs(price – price[1]), n);其中,volatility是指波动性数值,@abs是绝对值函数,@sum(value, n)是n个周期中的数值之和函数。

步骤3:效率系数(ER)以上两个成分被组合起来,以表达方向移动对噪音之比,称之为效率系数,ER:Efficiency_Ratio = direction/volativity;用“方向性”除以“噪音”,该系数的值就从0到1 变化。

当市场在全部n日以同一方向移动时,则方向=波动性,效率系数=1。

如果波动对于同样的价格移动是增加了,“波动性”就变得较大并且ER 往小于1的方向移动。

如果价格不变化,则方向=0,ER=0。

这个结果作为一个指数式平滑系数是方便的,它每天改变趋势线的一个百分比,ER=1就等效于100%,对应最快的移动平均线,它应当能有效工作,因为价格在一个方向上移动而没有回撤。

通达信指标公式源码自适应牛熊分界主图(有图)牛熊一目了然

通达信指标公式源码自适应牛熊分界主图(有图)牛熊一目了然

自适应牛熊分界主图(有图)牛熊一目了然短期均线不能很好地屏蔽市场的噪声,往往产生虚假的进场信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。

当价格沿一个方向快速移动时,短期的移动平均线是最好的。

当价格在横盘的过程中,长期移动平均线是最好的。

我们理想中的移动平均线是什么样子的呢?当价格无目标地移动时,它的反映会比较慢,像长期移动平均线;当价格有了快速变化的时候,它又能很快地跟上价格的走势,像短期移动平均线。

这样的移动平均线存在吗?当然存在!这就是考夫曼自适应均线(这是从网上找的,接下来的才是本人改编的)本人依据网上找的考夫曼自适应均线,在实战中不断摸索,确定了适合自己的参数。

同时,为了更加清晰显示当前市况,将市况划分为牛区和熊区,牛区持股,熊区观望。

均线(牛熊分界)红色代表牛市,绿色代表熊市,蓝色代表震荡市。

如此清晰,操作中还会被套吗?所以严格说来,这个指标应该是一个改编的指标,并不完全是原创,但由本人改编成这样的形式,在全网是独此一家的。

DIR2:=ABS(CLOSE-REF(CLOSE,30));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),30);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK1;牛熊分界:AMA2,STICK,COLORGRAY;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK1;AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK1;{K线}{牛熊分界之上阳线}STICKLINE(C>=O AND C>牛熊分界,H,L,0,0),COLORRED;STICKLINE(C>=O AND C>牛熊分界,C,O,2.8,1),COLORRED;{牛熊分界之上阴线}STICKLINE(C<=O AND C>牛熊分界,C,O,2.8,0),COLORRED;STICKLINE(C<=O AND C>牛熊分界,H,L,0,0),COLORRED;{牛熊分界之下阳线}STICKLINE(C>=O AND C<牛熊分界,H,L,0,0),COLORGREEN;STICKLINE(C>=O AND C<牛熊分界,C,O,2.8,1),COLORGREEN;{牛熊分界之下阴线}STICKLINE(C<=O AND C<牛熊分界,H,L,0,0),COLORGREEN;STICKLINE(C<=O AND C<牛熊分界,C,O,2.8,0),COLORGREEN;{写字}XX1:=C>牛熊分界AND 牛熊分界>REF(牛熊分界,1);DRAWTEXT_FIX(ISLASTBAR AND XX1,0.1,0.01,0,'【牛区持股】'),COLORRED;XX2:=C<牛熊分界AND 牛熊分界<=REF(牛熊分界,1);DRAWTEXT_FIX(ISLASTBAR AND XX2,0.1,0.01,0,'【熊区观望】'),COLORGREEN;。

趋势跟踪利器之二——自适应均线系统补充说明

趋势跟踪利器之二——自适应均线系统补充说明

趋势跟踪利器之二——自适应均线系统补充说明
本人上篇发布了《趋势跟踪利器之二——自适应均线系统》一文,很多读者在导入和调试公式的过程中遇到一些问题,这里做一个统一的补充说明:
1、关于参数
文章中的《考夫曼自适应均线指标》源码中使用了一个参数N,要注意设置到指标参数的参数列表中。

2、关于均线变色问题
文章中的《考夫曼自适应均线指标》源码不包含均线变色功能,如果需要这个功能,可以添加以下几行代码:
{变色功能}
IF(MAN>REF(MAN,1),MAN,DRAWNULL),COLORRED,LINETHI CK4,POINTDOT;
IF(MAN>REF(MAN,1),MAN,DRAWNULL),COLORRED,LINETHI CK1;
IF(MAN=REF(MAN,1),MAN,DRAWNULL),COLORWHITE,LINE THICK4,POINTDOT;
IF(MAN=REF(MAN,1),MAN,DRAWNULL),COLORWHITE,LINE THICK1;
IF(MAN<REF(MAN,1),MAN,DRAWNULL),COLORGREEN,LINE THICK1;
IF(MAN<REF(MAN,1),MAN,DRAWNULL),COLORGREEN,LINE THICK4,POINTDOT;
3、关于均线参数值
可以根据自己的情况选择,这个和使用普通均线是一样的。

本人习惯使用15。

考夫曼自适应均线(DOC)

考夫曼自适应均线(DOC)

{考夫曼自适应均线}input: n(9,1,60), p(2,1,60), Q(30,1,60);Direction:=CLOSE - REF( CLOSE , N ) ;XX:=ABS( CLOSE - REF( CLOSE , 1 ) ) ;V olatility:=SUM( XX , N ) ;ER:=ABS( Direction / V olatility ) ;FastC:= 2 / ( p + 1 ) ;SlowC:= 2 / ( q + 1 ) ;SSC:=ER * ( FastC - SlowC ) + SlowC ;Constant :SSC * SSC , Linethick0 ;YY:=REF( Close , 1 ) + Constant * ( CLOSE - REF( Close , 1 ) ) ;AA:=IF( SUM( 1 , 0 )= N + 1 , YY , 0 ) ;BB:=BarsLast( AA>0 ) ;DD:=REF( C , BB ) ;CC:CLOSE , Linethick0 ;for m=N + 2 to DA TACOUNT DODD[m]:=DD[m - 1] + Constant[m] * ( CC[m] - DD[m - 1] );AMA:DD;T1:=DD>REF(DD,1);T3:=NOT(T1) AND abs(DD-ref(DD,1))/DD*10000<n;T2:=NOT(T1 OR T3);PARTLINE(T1,DD),COLORRED,LINETHICK2;PARTLINE(T2,DD),COLORGREEN,LINETHICK2;PARTLINE(T3,DD),COLORBLUE,LINETHICK2;DRAWTEXT(ISLASTBAR AND T1,DD,'持\n股'),COLORRED,SHIFT1; DRAWTEXT(ISLASTBAR AND T2,DD,'持\n币'),COLORGREEN,SHIFT1; DRAWTEXT(ISLASTBAR AND T3,DD,'观\n望'),COLORBLUE,SHIFT1;考夫曼自适应变色均线系统N:1 100 10M:1 100 30通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;博易大师主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;PARTLINE(AMA2/REF(AMA2,1)>0.997,AMA2),COLORBLUE,LINETHICK2; PARTLINE(AMA2/REF(AMA2,1)>1.001,AMA2),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续)通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,5));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,10));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2;AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续1)我们跟踪股票的走势,必然离不开均线作为参考。

通达信自适应移动均线

通达信自适应移动均线

通达信自适应移动均线以下是通达信自适应移动均线(无源码的请下载附件导入)通达信自适应移动均线(盗用一下壹瓣杺埖老师所说的“自适应均线”这个概念)这个指标是根据已知来预测未来的,所以只是参考。

指标表面上只有一两条均线,但却是有玄机的。

简单说一下指标的原理:下图是一张用未来函数ZIG找出的股票前期波段高低点。

{公式在线提供:}试想如果有这么一条均线,前期(我指定为D=8天以前)的两个低点(或更多)在该均线处都受到支撑,即它经过点1、点2或点3,那么可以认为下一次股价回调到该均线时,将受到一定程度的支撑,如果支撑失败股价跌破该均线,则认为该均线将成为压力线。

我的目的便是找到这样的一条均线,以D天前的高低点为‘依据点’,如果周期为T的一条均线经过前期的‘依据点’最多,则画出该周期T的均线,EMA(C,T)。

其中周期T是是会根据情况自动调整的,也就是说画出的均线会自动调整到最佳。

如果同时有两条或两条以上均线有相同多个‘依据点’,则会自动画出两条或两条以上的均线。

当然,当股价盘整走势时,有时画出的均线并不具有参考价值。

而且为了说明方法,我举的例子是比较理想的。

上图是将均线附上去后的主图,图中的小人头是指假设小人头位置是最近一日的K线(通过调节D可以移动小人头,观察以前的均线情况)。

上图图中的均线经过1、3两点,在图中小人头标记的那天,我们可以预测下一个支撑位5以及后面的压力位6' 。

指标源码:{D:2 222 8}DRAWICON(CURRBARSCOUNT=D-7 AND NOT(CURRBARSCOUNT=1),L,4);{波段高低点}G:=ZIG((H+MAX(C,O))/2,5);G1:=G>REF(G,1) AND G>REFX(G,1);D1:=G<REF(G,1) AND G<REFX(G,1);D:=ZIG((L+MIN(C,O))/2,5);G2:=D>REF(D,1) AND D>REFX(D,1);D2:=D<REF(D,1) AND D<REFX(D,1);GG:=FILTER(G1 OR G2,5) AND CURRBARSCOUNT>D;DD:=FILTER(D1 OR D2,5) AND CURRBARSCOUNT>D;{前期高低点距今}GB1:=BARSLAST(GG);GB2:=REFV(GB1,GB1+1)+GB1+1;GB3:=REFV(GB1,GB2+1)+GB2+1;GB4:=REFV(GB1,GB3+1)+GB3+1;DB1:=BARSLAST(DD);DB2:=REFV(DB1,DB1+1)+DB1+1;DB3:=REFV(DB1,DB2+1)+DB2+1;DB4:=REFV(DB1,DB3+1)+DB3+1;{均线}E2:=EMA(C,20);A21:=REFV(100*ABS(G-E2)/E2,GB1)<2;A22:=REFV(100*ABS(G-E2)/E2,GB2)<2;A23:=REFV(100*ABS(G-E2)/E2,GB3)<2;A24:=REFV(100*ABS(G-E2)/E2,GB4)<2;B21:=REFV(100*ABS(D-E2)/E2,DB1)<2;B22:=REFV(100*ABS(D-E2)/E2,DB2)<2;B23:=REFV(100*ABS(D-E2)/E2,DB3)<2;B24:=REFV(100*ABS(D-E2)/E2,DB4)<2;CX2:=A21+A22+A23+A24+B21+B22+B23+B24,NODRAW;E3:=EMA(C,30);A31:=REFV(100*ABS(G-E3)/E3,GB1)<2;A32:=REFV(100*ABS(G-E3)/E3,GB2)<2;A33:=REFV(100*ABS(G-E3)/E3,GB3)<2;A34:=REFV(100*ABS(G-E3)/E3,GB4)<2;B31:=REFV(100*ABS(D-E3)/E3,DB1)<2;B32:=REFV(100*ABS(D-E3)/E3,DB2)<2;B33:=REFV(100*ABS(D-E3)/E3,DB3)<2;B34:=REFV(100*ABS(D-E3)/E3,DB4)<2;CX3:=A31+A32+A33+A34+B31+B32+B33+B34,NODRAW;E4:=EMA(C,40);A41:=REFV(100*ABS(G-E4)/E4,GB1)<2;A42:=REFV(100*ABS(G-E4)/E4,GB2)<2;A43:=REFV(100*ABS(G-E4)/E4,GB3)<2;A44:=REFV(100*ABS(G-E4)/E4,GB4)<2;B41:=REFV(100*ABS(D-E4)/E4,DB1)<2;B42:=REFV(100*ABS(D-E4)/E4,DB2)<2;B43:=REFV(100*ABS(D-E4)/E4,DB3)<2;B44:=REFV(100*ABS(D-E4)/E4,DB4)<2;CX4:=A41+A42+A43+A44+B41+B42+B43+B44,NODRAW;E5:=EMA(C,50);A51:=REFV(100*ABS(G-E5)/E5,GB1)<2;A52:=REFV(100*ABS(G-E5)/E5,GB2)<2;A53:=REFV(100*ABS(G-E5)/E5,GB3)<2;A54:=REFV(100*ABS(G-E5)/E5,GB4)<2;B51:=REFV(100*ABS(D-E5)/E5,DB1)<2;B52:=REFV(100*ABS(D-E5)/E5,DB2)<2;B53:=REFV(100*ABS(D-E5)/E5,DB3)<2;B54:=REFV(100*ABS(D-E5)/E5,DB4)<2;CX5:=A51+A52+A53+A54+B51+B52+B53+B54,NODRAW;E6:=EMA(C,60);A61:=REFV(100*ABS(G-E6)/E6,GB1)<2;A62:=REFV(100*ABS(G-E6)/E6,GB2)<2;A63:=REFV(100*ABS(G-E6)/E6,GB3)<2;A64:=REFV(100*ABS(G-E6)/E6,GB4)<2;MCX:=MAX(CX2,MAX(CX3,MAX(CX4,MAX(CX5,MAX(CX6,M AX(CX7,MAX(CX8,MAX(CX9,MAX(CX10,MAX(CX11,CX12))))))))));P2:=CX2=MCX AND MCX>1; P3:=CX3=MCX AND MCX>1; P4:=CX4=MCX AND MCX>1; P5:=CX5=MCX AND MCX>1;P6:=CX6=MCX AND MCX>1;P7:=CX7=MCX AND MCX>1; P8:=CX8=MCX AND MCX>1; P9:=CX9=MCX AND MCX>1; P10:=CX10=MCX AND MCX>1; P11:=CX11=MCX AND MCX&gNOTEXT01:IF(NOTEXTEE0>=REF(NOTEXTEE0,1) AND 周期>1,NOTEXTEE0,DRAWNULL),COLORRED,LINETHICK2;NOTEXT02:IF(NOTEXTEE0<=REF(NOTEXTEE0,1) AND 周期>1,NOTEXTEE0,DRAWNULL),COLORGREEN,LINETHICK2;DRAWNUMBER(ISLASTBAR,EMA(C,周期),EMA(C,周期));DRAWKLINE(H,O,L,C);。

AMA变速均线

AMA变速均线
CC:=REF(Close,BB);
AMA1:=REF(CC,1)+SE*(Close-REF(CC,1));
AMA2:DMA(CLOSE,SE),COLORFFAA00,LINETHICK2;
BUY:=CROSS(AMA1,AMA2) AND AMA2>REF(AMA2,1);
SELL:=CROSS(AMA2,AMA1);
2。自适应均线系统向上翘起时,系统告诉你:最近10个周期中,价格上涨的幅度要大于下跌的幅度,价格逐渐进入强势的状态。
3。自适应均线系统向下垂时,系统告诉你的情形和2的情形正好相反。
有关原理性的东西就说到这里了,下面给出自适应均线系统的指标公式,此公式在通达信、大智慧、飞狐软件中均调试通过:
只有在自适应均线向上移动的时候,才是我们进场操作的时机。
自适应均线(二)
要构建自适应的均线,我们就必须先确定股票价格的趋势和速度。当股票价格持续上涨或持续下跌的时候,自适应均线就应该采用短周期均线的平滑系数;而当市场处于横盘波动过程中的时候,自适应均线就应该采用长周期的平滑系数。
STICKLINE(ISLASTBAR,离场位1,离场位1,10,1),COLORFFFF00;
STICKLINE(ISLASTBAR,离场位2,离场位2,10,1),COLOR00FF00;
《Smarter Trading》中Kaufman的AMA系统
最新的成果便是阅读了《Smarter Trading》,根据里面的AMA构建方法自己编制了一套系统。通达信源码如下,貌似也可以运行在大智慧上,不过得改一下色彩函数。
{N:5 30 20}
DIRECTION:=CLOSE-REF(CLOSE,N);

自适应均线的源代码以及改良

自适应均线的源代码以及改良

自适应均线的源代码以及改良根据考夫曼的自适应均线原理,利用文华财经编了一下,还是不错的,现把源代码公布出来给大家参考。

交易指标即自适应均线的源代码,我根据指标改良了一下交易系统,考夫曼原来是采用均线值的变化率发出买卖信号,我觉得不是很好,就用最高最低价构建了一个智能均线带,采用最低最高价突破来发出信号,大家一起探讨阿。

交易指标:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMALOW:REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));交易模型:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:=REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));AMALOW:=REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));LOW>AMAHIGH,BK;CLOSE<AMACLOSE,SP;HIGH<AMALOW,SK;CLOSE>AMACLOSE,BP;AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));这还不是原书中定义的自适应均线。

考夫曼自适应均线系统

考夫曼自适应均线系统
and close>1.03*open
and close=hhv(close,21)
and close<1.25*llv(close,21)
and ref(close,1)<1.2*ref(llv(close,20),1)
and ref(close,1)<1.5*ref(llv(close,60),1)
187
tj1969

老师请问为什么winner(c)*100的数据与右下角的获利比例不对应.数据相差悬殊怎么处理.谢谢
吴 程

有两种原因:数据不完整,或者 数据没有除权 ,一般来说差距在误差范围内

朱晓鸣

AA:=vol>1.5*ref(vol,1)
and vol>ref(ma(vol,20),1)
PARTLINE(AMA,AMA>REF(AMA,1),rgb(255,0,0)),linethick3;

李 超

指标如图

李 超

考夫曼给出的指标用法是,自适应均线自下向上拐头(即均线翻红时),买进。自适应均线自上向下拐头(即均线翻绿时),卖出。

李 超

联合证券曾经利用这么一种交易方法对深证成指进行了测试,效果见下图,成功的规避了市场大幅下跌的风险,从而获得了显著的超额收益。

李 超

对于一个如此复杂变化着的市场, 我们期待一个自适应的系统,有自动学习和自动调整的功能,这样会比一个固定的系统做得更好一点。

李 超

自适应(Autofit)的概念来自于自动控制领域, 是指在新的环境或新的运行条件下,适当地改变原系统的结构或参数以保持系统的良好运行特征。

考夫曼自适应均线

考夫曼自适应均线

{考夫曼自适应均线}input: n(9,1,60), p(2,1,60), Q(30,1,60);Direction:=CLOSE - REF( CLOSE , N ) ;XX:=ABS( CLOSE - REF( CLOSE , 1 ) ) ;V olatility:=SUM( XX , N ) ;ER:=ABS( Direction / V olatility ) ;FastC:= 2 / ( p + 1 ) ;SlowC:= 2 / ( q + 1 ) ;SSC:=ER * ( FastC - SlowC ) + SlowC ;Constant :SSC * SSC , Linethick0 ;YY:=REF( Close , 1 ) + Constant * ( CLOSE - REF( Close , 1 ) ) ;AA:=IF( SUM( 1 , 0 )= N + 1 , YY , 0 ) ;BB:=BarsLast( AA>0 ) ;DD:=REF( C , BB ) ;CC:CLOSE , Linethick0 ;for m=N + 2 to DA TACOUNT DODD[m]:=DD[m - 1] + Constant[m] * ( CC[m] - DD[m - 1] );AMA:DD;T1:=DD>REF(DD,1);T3:=NOT(T1) AND abs(DD-ref(DD,1))/DD*10000<n;T2:=NOT(T1 OR T3);PARTLINE(T1,DD),COLORRED,LINETHICK2;PARTLINE(T2,DD),COLORGREEN,LINETHICK2;PARTLINE(T3,DD),COLORBLUE,LINETHICK2;DRAWTEXT(ISLASTBAR AND T1,DD,'持\n股'),COLORRED,SHIFT1; DRAWTEXT(ISLASTBAR AND T2,DD,'持\n币'),COLORGREEN,SHIFT1; DRAWTEXT(ISLASTBAR AND T3,DD,'观\n望'),COLORBLUE,SHIFT1;考夫曼自适应变色均线系统N:1 100 10M:1 100 30通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;博易大师主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;PARTLINE(AMA2/REF(AMA2,1)>0.997,AMA2),COLORBLUE,LINETHICK2; PARTLINE(AMA2/REF(AMA2,1)>1.001,AMA2),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续)通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,5));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,10));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2;AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续1)我们跟踪股票的走势,必然离不开均线作为参考。

自适应均线系统

自适应均线系统

自适应均线系统一、考夫曼的做法:自适应均线系统的交易法则,根据考夫曼《精明交易者》一书中的介绍,其基本交易法则为: 1. 当自适应移动平均值向上拐头时,买入;2. 当自适应移动平均值向下拐头时,卖出。

3. 当价格横向移动时,上述的交易方式将频繁产生进出交易的假信号。

为了避免假信号的干扰,应该向AMA交易系统中添加一个过滤器。

这个过滤器是根据自适应均线变化的标准差的百分比来确定。

根据这个原理,自适应均线的公式可做如下的完善: DIR:=ABS(CLOSE-REF(CLOSE,10));VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER:=DIR/VIR;CS:=ER*(2/3-2/14)+2/14;CQ:=CS*CS;AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN; FIL:=STD(AMA-REF(AMA,1),20);DRAWICON(FILTER(AMA-LLV(AMA,3)>FIL*0.1,10),AMA,1);二、我实际的操作方法:本人在使用自适应均线的中,并没有采用考夫曼的方式。

当自适应均线拐头向上时,必须使确认趋势,当连续两根日K线均处于自适应均线上方时,方可确认上用连续两天的日K线升趋势。

1.第一根日K线应该从自适应均线的下方向上穿越自适应均线;2.第二根日K 线,不论是阴线还是阳线,均不跌破自适应均线,这时,可确认股价进入上升趋势。

3. 买入点:以第一根穿越自适应均线的最高点【或者K线实体的高点】为标准,在后面的3天之内,股价高于这个标准的时候,为买入点。

4.卖出点:以连续2日的K线低于自适应均线为卖出信号,如果连续两天价格不能收在自适应均线的上方,则必须卖出。

通过在MACD股票论坛中的交流,对自适应均线的使用做了一些改动。

采用两条自适应均线,分别适用短周期和长周期。

并且对长周期均线做了三色处理。

交易法则:1、长周期均线为绿色时,不可操作;2、长周期为蓝色,股价穿越短周期均线时,可建50,的仓位;3、股价穿越长期均线时,可再建50,仓位;4、股价跌破短周期均线时,减掉50,仓位;5、股价跌破长周期均线时,卖出全部股票;6、长周期均线为红色时,代表持股。

优化MACD和优化均线指标源码及安装教程

优化MACD和优化均线指标源码及安装教程

优化MACD和优化均线指标源码及安装教程一. 指标源码优化MACD(ymacd)指标源码:DIFF: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DIFF2: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DIFF3: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DEA: EMA(DIFF,9),COLORC08000;DEA2: EMA(DIFF,9),COLORC08000;MACD : 2*(DIFF-DEA), COLORSTICK;PARTLINE(1>0,0),POINTDOT,COLORC0C0C0;优化均线(yjx)指标源码:MA1:EMA(CLOSE,5),LINETHICK1,COLOR00FFFF;MA2:EMA(CLOSE,10),LINETHICK1,COLOR0000FF;MA3:EMA(CLOSE,21),LINETHICK1,COLOR0DFF00;MA4:EMA(CLOSE,34),LINETHICK1,COLORFF80FF;MA5:EMA(CLOSE,55),LINETHICK1,COLORFF0000;MA6:EMA(CLOSE,89),LINETHICK1,COLORMAGENTA;MA7:EMA(CLOSE,34),LINETHICK1,COLORFF80FF;MA8:EMA(CLOSE,55),LINETHICK1,COLORA00000;MA9:EMA(CLOSE,55),LINETHICK1,COLORFF0000;安装教程见下一页二.安装教程本书中的指标可以装在博易大师、汇金操盘手等看盘软件中,因为大多数看盘软件操作界面与汇金操盘手差不多,所以本教程选用汇金操盘手软件,并以优化MACD指标的安装为例。

优化均线(yjx) 和优化MACD(ymacd)的安装过程相同。

考夫曼自适应均线

考夫曼自适应均线

{考夫曼自适应均线}input: n(9,1,60), p(2,1,60), Q(30,1,60);Direction:=CLOSE - REF( CLOSE , N ) ;XX:=ABS( CLOSE - REF( CLOSE , 1 ) ) ;V olatility:=SUM( XX , N ) ;ER:=ABS( Direction / V olatility ) ;FastC:= 2 / ( p + 1 ) ;SlowC:= 2 / ( q + 1 ) ;SSC:=ER * ( FastC - SlowC ) + SlowC ;Constant :SSC * SSC , Linethick0 ;YY:=REF( Close , 1 ) + Constant * ( CLOSE - REF( Close , 1 ) ) ;AA:=IF( SUM( 1 , 0 )= N + 1 , YY , 0 ) ;BB:=BarsLast( AA>0 ) ;DD:=REF( C , BB ) ;CC:CLOSE , Linethick0 ;for m=N + 2 to DA TACOUNT DODD[m]:=DD[m - 1] + Constant[m] * ( CC[m] - DD[m - 1] );AMA:DD;T1:=DD>REF(DD,1);T3:=NOT(T1) AND abs(DD-ref(DD,1))/DD*10000<n;T2:=NOT(T1 OR T3);PARTLINE(T1,DD),COLORRED,LINETHICK2;PARTLINE(T2,DD),COLORGREEN,LINETHICK2;PARTLINE(T3,DD),COLORBLUE,LINETHICK2;DRAWTEXT(ISLASTBAR AND T1,DD,'持\n股'),COLORRED,SHIFT1; DRAWTEXT(ISLASTBAR AND T2,DD,'持\n币'),COLORGREEN,SHIFT1; DRAWTEXT(ISLASTBAR AND T3,DD,'观\n望'),COLORBLUE,SHIFT1;考夫曼自适应变色均线系统N:1 100 10M:1 100 30通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;博易大师主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,N));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),N);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,M));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),M);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;PARTLINE(AMA2/REF(AMA2,1)>0.997,AMA2),COLORBLUE,LINETHICK2; PARTLINE(AMA2/REF(AMA2,1)>1.001,AMA2),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续)通达信主图源码(日线及以上周期)DIR1:=ABS(CLOSE-REF(CLOSE,5));VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5);ER1:=DIR1/VIR1;CS1:=ER1*(0.8-2/8)+2/8;CQ1:=CS1*CS1;AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE;DIR2:=ABS(CLOSE-REF(CLOSE,10));VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10);ER2:=DIR2/VIR2;CS2:=ER2*(0.8-2/24)+2/24;CQ2:=CS2*CS2;AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2;AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;考夫曼自适应变色均线系统(续1)我们跟踪股票的走势,必然离不开均线作为参考。

Python绘制移动均线方法含源代码

Python绘制移动均线方法含源代码

Python绘制移动均线⽅法含源代码⽬录1、获取数据2、计算移动均线3、绘制K线及移动均线上⼀篇《》,讲解了数据获取、K线图绘制及成交量绘制等内容。

本篇将在上⼀篇的基础上,继续讲解移动均线的绘制。

1、获取数据我们从恒有数⾦融数据社区,获取股票市场历史⾏,情数据。

我们获取2021年3⽉1号⾄2021年6⽉1号,恒⽣电⼦(600570.SH)的⽇⾏情数据,并做简单处理,代码及执⾏结果如下。

加载取数与绘图所需的函数包import pandas as pdimport datetimefrom hs_udata import set_token,stock_quote_dailyfrom mpl_finance import candlestick_ohlcimport matplotlib as mplimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesmpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显⽰为⽅块的问题def GetData(stock_code,start,end):#stock_code:获取股票数据的股票代码# start:开始⽇期# end:结束⽇期date_start=datetime.datetime.strptime(start,'%Y-%m-%d')date_end =datetime.datetime.strptime(end,'%Y-%m-%d')data = pd.DataFrame([])while date_start<date_end:# 获取⽇⾏情数据,接⼝说明见 https:///datas/332/# adjust_way枚举值为:0-不复权,1-前复权,2-后复权,此处取前复权data_i = stock_quote_daily(en_prod_code=stock_code,trading_date=date_start.strftime('%Y%m%d'),adjust_way = 1)data=pd.concat([data,data_i],axis=0) # 将⾏情数据按⾏拼接date_start+=datetime.timedelta(days=1) # ⽇期变量⾃增# 返回⾏情数据return data#1、获取⾏情数据stock_code = "600570.SH" # 恒⽣电⼦股票代码是600570.SHstart='2021-03-01'end ='2021-06-01'set_token(token = 'xxxxxxxxxxxxxxxxxxxxxxxx') # 注册恒有数之后,获取并替换tokendata = GetData(stock_code,start,end)#2、数据处理data = data.loc[data.turnover_status=='交易'] # 剔除⾮交易⽇data_price = data[['trading_date','open_price','high_price','low_price','close_price','business_amount']] # 选取⽇期与⾼开低收价格data_price.set_index('trading_date', inplace=True) # 将⽇期作为索引data_price = data_price.astype(float) # 将价格数据类型转为浮点数# 将⽇期格式转为 candlestick_ohlc 可识别的数值data_price['Date'] = list(map(lambda x:mdates.date2num(datetime.datetime.strptime(x,'%Y-%m-%d')),data_price.index.tolist()))data_price2、计算移动均线#3、计算均值data_price['MA5']=data_price['close_price'].rolling(window=5).mean()data_price['MA10']=data_price['close_price'].rolling(window=10).mean()data_price['MA20']=data_price['close_price'].rolling(window=20).mean()data_pricetitle=3、绘制K线及移动均线将绘制移动均线的代码,添加⾄K线图绘制代码中;源代码及绘制图⽚如下:#4、绘制图⽚fig = plt.figure(figsize=(12,10))grid = plt.GridSpec(12, 10, wspace=0.5, hspace=0.5)#(1)绘制K线图#K线数据ohlc = data_price[['Date','open_price','high_price','low_price','close_price']]ohlc.loc[:,'Date'] = range(len(ohlc)) # 重新赋值横轴数据,绘制K线图⽆间隔#绘制K线ax1 = fig.add_subplot(grid[0:8,0:12]) # 设置K线图的尺⼨candlestick_ohlc(ax1, ohlc.values.tolist(), width=.7, colorup='red', colordown='green')#(2)绘制均线ax1.plot(range(len(data_price)), data_price['MA5'], color='red', lw=2, label='MA (5)')ax1.plot(range(len(data_price)), data_price['MA10'], color='blue', lw=2, label='MA (10)')ax1.plot(range(len(data_price)), data_price['MA20'], color='green', lw=2, label='MA (20)')#设置标注plt.title(stock_code,fontsize = 14) # 设置图⽚标题plt.ylabel('价格(元)',fontsize = 14) # 设置纵轴标题plt.legend(loc='best') # 绘制图例ax1.set_xticks([]) # ⽇期标注在成交量中,故清空此处x轴刻度ax1.set_xticklabels([]) # ⽇期标注在成交量中,故清空此处x轴#(3)绘制成交量#成交量数据data_volume = data_price[['Date','close_price','open_price','business_amount']]data_volume['color'] = data_volume.apply(lambda row: 1 if row['close_price'] >= row['open_price'] else 0, axis=1) # 计算成交量柱状图对应的颜⾊,使之与K线颜⾊⼀致data_volume.Date = ohlc.Date#绘制成交量ax2 = fig.add_subplot(grid[8:10,0:12]) # 设置成交量图形尺⼨ax2.bar(data_volume.query('color==1')['Date'], data_volume.query('color==1')['business_amount'], color='r') # 绘制红⾊柱状图ax2.bar(data_volume.query('color==0')['Date'], data_volume.query('color==0')['business_amount'], color='g') # 绘制绿⾊柱状图plt.xticks(rotation=30)plt.xlabel('⽇期',fontsize = 14) # 设置横轴标题#修改横轴⽇期标注date_list = ohlc.index.tolist() # 获取⽇期列表xticks_len = round(len(date_list)/(len(ax2.get_xticks())-1)) # 获取默认横轴标注的间隔xticks_num = range(0,len(date_list),xticks_len) # ⽣成横轴标注位置列表xticks_str = list(map(lambda x:date_list[int(x)],xticks_num)) # ⽣成正在标注⽇期列表ax2.set_xticks(xticks_num) # 设置横轴标注位置ax2.set_xticklabels(xticks_str) # 设置横轴标注⽇期plt.show()到此这篇关于Python绘制移动均线⽅法含源代码的⽂章就介绍到这了,更多相关Python绘制移动均线内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

优化MACD和优化均线指标源码及安装教程

优化MACD和优化均线指标源码及安装教程

优化MACD和优化均线指标源码及安装教程一. 指标源码优化MACD(ymacd)指标源码:DIFF: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DIFF2: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DIFF3: EMA(CLOSE,8) - EMA(CLOSE,17),COLOR3300FF;DEA: EMA(DIFF,9),COLORC08000;DEA2: EMA(DIFF,9),COLORC08000;MACD : 2*(DIFF-DEA), COLORSTICK;PARTLINE(1>0,0),POINTDOT,COLORC0C0C0;优化均线(yjx)指标源码:MA1:EMA(CLOSE,5),LINETHICK1,COLOR00FFFF;MA2:EMA(CLOSE,10),LINETHICK1,COLOR0000FF;MA3:EMA(CLOSE,21),LINETHICK1,COLOR0DFF00;MA4:EMA(CLOSE,34),LINETHICK1,COLORFF80FF;MA5:EMA(CLOSE,55),LINETHICK1,COLORFF0000;MA6:EMA(CLOSE,89),LINETHICK1,COLORMAGENTA;MA7:EMA(CLOSE,34),LINETHICK1,COLORFF80FF;MA8:EMA(CLOSE,55),LINETHICK1,COLORA00000;MA9:EMA(CLOSE,55),LINETHICK1,COLORFF0000;安装教程见下一页二.安装教程本书中的指标可以装在博易大师、汇金操盘手等看盘软件中,因为大多数看盘软件操作界面与汇金操盘手差不多,所以本教程选用汇金操盘手软件,并以优化MACD指标的安装为例。

优化均线(yjx) 和优化MACD(ymacd)的安装过程相同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自适应均线的源代码以及改良根据考夫曼的自适应均线原理,利用文华财经编了一下,还是不错的,现把源代码公布出来给大家参考。

交易指标即自适应均线的源代码,我根据指标改良了一下交易系统,考夫曼原来是采用均线值的变化率发出买卖信号,我觉得不是很好,就用最高最低价构建了一个智能均线带,采用最低最高价突破来发出信号,大家一起探讨阿。

交易指标:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMALOW:REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));交易模型:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:=REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));AMALOW:=REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));LOW>AMAHIGH,BK;CLOSE<AMACLOSE,SP;HIGH<AMALOW,SK;CLOSE>AMACLOSE,BP;AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));这还不是原书中定义的自适应均线。

按原书中定义,应该是:AMA:=CONST*CLOSE+(1-CONST)*REF(AMA,1); 显然原书中的定义排除了人为的N,因此更加自然。

可惜对AMA的定义需要向前引用ref(AMA,1),在文化中无法得到支持,这是文化平台需要改进的一个重大缺陷。

目前还想不出如何在文化中完整实现原书中的定义。

尝试用 AMA:=DMA(CLOSE, CONST); 得到的结果竟成了一直线适应均线系统(四)一、考夫曼的做法:自适应均线系统的交易法则,根据考夫曼《精明交易者》一书中的介绍,其基本交易法则为:1.当自适应移动平均值向上拐头时,买入;2.当自适应移动平均值向下拐头时,卖出。

当价格横向移动时,上述的交易方式将频繁产生进出交易的假信号。

为了避免假信号的干扰,应该向AMA交易系统中添加一个过滤器。

这个过滤器是根据自适应均线变化的标准差的百分比来确定。

根据这个原理,自适应均线的公式可做如下的完善:DIR:=ABS(CLOSE-REF(CLOSE,10));VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),10);ER:=DIR/VIR;CS:=ER*(2/3-2/14)+2/14;CQ:=CS*CS;AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN;FIL:=STD(AMA-REF(AMA,1),20);DRAWICON(FILTER(AMA-LLV(AMA,3)>FIL*0.1,10),AMA,1);二、我实际的操作方法:本人在使用自适应均线的中,并没有采用考夫曼的方式。

当自适应均线拐头向上时,必须使用连续两天的日K线确认趋势,当连续两根日K线均处于自适应均线上方时,方可确认上升趋势。

1.第一根日K线应该从自适应均线的下方向上穿越自适应均线;2.第二根日K线,不论是阴线还是阳线,均不应跌破自适应均线,这时,可确认股价进入上升趋势。

3.以第一根穿越自适应均线的最高点【或者K线实体的高点】为标准,在后面的3天之内,股价高于这个标准的时候,为买入点。

4.卖出点也是以连续2日的K线低于自适应均线为卖出信号,如果连续两条价格不能收在自适应均线的上方,则必须卖出。

自适应均线STICKLINE(C<=O,H,L,0,0),COLORWHITE; a:=(2*c+o+h+l)/5;X1:wMA(a,5),coloryellow;X2:wMA(x1,8),coloryellow,linethick2; X3:wMA(X2,13),colorred;x4:wma(x3,21),colorred,linethick2; x5:wma(x4,34),colorffffff; x6:wma(x5,55),colorffffff,linethick2; ———————————————————————————————自适应均线系统包含短线(黄色),中线(红色),长线(白色)三套均线1、细黄色线上穿粗黄色线,短线买入;下穿,卖出。

2、细红色线上穿粗红色线,中线买入;下穿,卖出。

3、细黄色线上穿粗黄色线时,如果在红色线附近,则最好。

4、所有买入时,K线必须在金叉附近。

自适应均线系统,最好的均线系统{n=10}DIR:=ABS(CLOSE-REF(CLOSE,n));VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),n);ER:=DIR/VIR;CS:=ER*(2/3-2/31)+2/31;CQ:=CS*CS;AMA:DMA(CLOSE,CQ),COLORGREEN;AMA1:IF(AMA>REF(AMA,1),AMA,DRAWNULL),COLORRED;如果自适应均线系统的周期n=10,那么:1。

自适应均线系统横向移动时,系统告诉你:最近的10个周期中,价格上涨的幅度和下跌的幅度基本相当,(是幅度,而不是周期数);2。

自适应均线系统向上翘起时,系统告诉你:最近10个周期中,价格上涨的幅度要大于下跌的幅度,价格逐渐进入强势的状态。

3。

自适应均线系统向下垂时,系统告诉你的情形和2的情形正好相反。

MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10);CROSS(MA5,MA10) &&MA5>REF(MA5,1) &&REF(MA5,1)>REF(MA5,2)&&MA10>REF(MA10,1) &&REF(MA10,1)>REF(MA10,2),BPK;{5均线上穿10均线且均线成多头排列,买平买开}CROSS(MA10,MA5) &&MA5<REF(MA5,1) &&REF(MA5,1)<REF(MA5,2)&&MA10<REF(MA10,1) &&REF(MA10,1)<REF(MA10,2),SPK;{5均线下穿10均线且均线成空头排列,卖平卖开}本模型虽然只用了简单的均线结合,但实用效果还是不错(这个均线参数可以改成5,8),目前存在的问题是对行情反应较慢,我想以此为基础加以完善,希望大家多提宝贵意见。

1、如果价格超过均线数值的百分之几,就不许开仓,可以防止价格出现大幅跳跃情况下的错误开仓。

2、如果开仓错误,应及时止损。

MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10);CROSS(MA5,MA10) &&MA5>REF(MA5,1) &&REF(MA5,1)>REF(MA5,2)&&MA10>REF(MA10,1) &&REF(MA10,1)>REF(MA10,2)&&(MA5-REF(MA5,1))/MA5*100<1,BPK;{5均线上穿10均线且均线成多头排列且向上跳空幅度不太于1%,买平买开}止损指令暂时没有加入~我觉得止损点不是很好把握~正在研究中~有什么好的思路和建议请发贴说明想要达到的目的~再来修改。

这个交易模型开发的意路是:以均线为基础~追求稳定的长期收益~故对行情的反映不是很快~请大家多提宝贵意见。

WJX:85;ZJX:50;AQX:15;V1:=(2*CLOSE+HIGH+LOW)/4;V2:=LLV(LOW,10);VA:=HHV(HIGH,10);B:=EMA((V1-V2)/(VA-V2)*100,10);BB:=EMA((0.667*REF(B,1)+0.333*B),2); ZSX:B,COLORYELLOW;ZLX:EMA(0.382*REF(B,2)+0.618*B,12),COLORYELLOW;STICKLINE(B>BB,B,BB,COLORRED,0);STICKLINE(B<=BB,B,BB,COLORBLUE,0); ZSX>REF(ZLX,1);ZLX>REF(ZLX,1);考夫曼的ama,自适应移动平均线交易模型:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:=REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1)); AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));AMALOW:=REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1)); LOW>AMAHIGH,BK;CLOSE<AMACLOSE,SP;HIGH<AMALOW,SK;CLOSE>AMACLOSE,BP;。

相关文档
最新文档