1. 程式人生 > >卡夫曼自適應移動均線交易系統

卡夫曼自適應移動均線交易系統

傳統的移動均線包括簡單移動均線,加權移動均線以及指數式移動均線,它們有著固有的弱點——慢趨勢和滯後。

短週期的均線系統雖然能快速反映期貨價格的走勢,但是又難以抵抗價格“噪音”的干擾,多數情況下短週期所給出的趨勢訊號並不準確。

為了避免短期噪音產生的虛假訊號與長期趨勢中的滯後,考夫曼提出來“自適應的”均線系統,AMA。AMA可以在市場沿一個方向快速移動的時候,使用快的移動平均值,而在價格在橫盤的市場中拉鋸時,使用慢速的移動平均值。

AMA的計算公式為:

AMA=AMA[1]+C*(PRICE-AMA[1])

這個公式很像指數移動平均線的公式:

EMA=EMA[1]+C*(PRICE-EMA[1]),C=2/(N+1)

AMA的關鍵在於係數C,要完成抗干擾和滯後性的效果,只需當價格快速單向移動時,將C的值賦值為短週期的指數移動均線的係數,當期貨價格成橫盤狀態時,將C賦值為長週期的指數移動均線的係數即可。

如何知道價格變動時區間震盪還是單向突破呢?引出三個概念,價格方向、波動性和效率係數。

價格方向:len個時間週期中價格的淨變化。

direction = price –price[len];

波動性,市場噪音的數量,計算時使用len個時間週期中所有單週期價格變化的總和。

volatility = @sum(@abs(price –price[1]), n);

效率係數:價格方向除以波動性,表示方向移動與噪音移動的比。

Efficiency_Ratio =direction/volativity;

接下來建立效率係數與C的聯絡

整體思路是,趨勢明顯(ER=1)的時候,係數接近短週期均線係數fastest,波段明顯的時候(ER=0),係數接近長週期系數slowest

取係數的平方是讓平均線更趨近於保守,出現波段的時候應該更加謹慎。

fastest = 2/(N+1) = 2/(2+1) =0.6667;

slowest = 2/(N+1) = 2/(30+1) =0.0645;

smooth = ER*(fastest - slowest)+ slowest;

c = smooth*smooth;

為了與系統自適應特性保持一致,不能簡單的用上穿下穿均線來決定買入賣出。因此要設定一個過濾器。

過濾器=percentage*@std(AMA-AMA[1],n)          @std(series,n)是n個週期標準差

小的過濾器百分數可以用於較快的交易,比如外匯與期貨市場。

大的過濾器百分數可以用於較慢的交易,比如股票和利率市場。

通常,n=20

具體交易規則:

[email protected](AMA,n)>過濾器,買入

@highest(AMA,n)-AMA<過濾器,賣出


% 卡夫曼自適應移動平均線
% Written by Phillip Wan @2013/9/3
% Email:[email protected]

% clean work
tic;
clear;
clc;
close all;
format compact;


%% 匯入資料
Connect = yahoo;
Fields = {'Close'};
FromDate = '01-Sep-2011';
ToDate = '01-Sep-2013';
HS300 = fetch(Connect, '000300.SS', Fields, FromDate, ToDate);

n=5;    %定義區間長度
p=0.1;  %定義過濾器係數
fastlen=30; %定義長期平均週期
slowlen=2;  %定義短期平均週期
w=HS300(:,2);
equity=0;
equityday=zeros(length(w),1);
s=0;

ama=zeros(length(w),1);
ama(1:n)=w(1:n);
for i=n+1:length(w)
    %% 計算價格方向
    direction=abs(w(i,1)-w(i-n,1));
    %% 計算波動性
    p1=w(i-n:i-1);
    p2=w(i-n+1:i);
    vol=sum(abs(p1-p2));
    
    if vol~=0
    %% 計算效率係數(ER)
    er=direction/vol;
    fast=2/(fastlen+1);
    slow=2/(slowlen+1);
    smooth=er*(fast-slow)+slow;
    c=smooth*smooth;
    %% 計算AMA
    ama(i)=ama(i-1)+c*(w(i,1)-ama(i-1));
    else 
        ama(i)=ama(i-1);
    end

%% 設定過濾器
    amaminus=zeros(n-1,1);
    for t=i-n+1:i
        amaminus(t,1)=ama(t,1)-ama(t-1,1);
    end
    k=p*std(amaminus);
    
%% 根據過濾器進行交易
    if ama(i)-min(ama(i-n:i))>k
        s=s+1;
        equity=equity-w(i)*300;
    else if max(ama(i-n:i))-ama(i)<k
            s=s-1
            equity=equity+w(i)*300;
        end
    end
    equityday(i,1)=equity+s*w(i)*300;
end


    %% 作圖
figure;
subplot(2,1,1);
plot(HS300(:,2));
hold on;
grid on;
plot(ama,'g');
legend('HS300','AMA');
subplot(2,1,2);
plot(equityday);
grid on;


相關推薦

適應移動交易系統

傳統的移動均線包括簡單移動均線,加權移動均線以及指數式移動均線,它們有著固有的弱點——慢趨勢和滯後。 短週期的均線系統雖然能快速反映期貨價格的走勢,但是又難以抵抗價格“噪音”的干擾,多數情況下短週期所給出的趨勢訊號並不準確。 為了避免短期噪音產生的虛假訊號與長期趨勢中的

KAMA-庫適應移動

KAMA隸屬於MA(Moving Average,移動平均)大類,使用CrossOver(上穿,下穿)或者平滑曲線的斜率來生成交易訊號。KAMA“聰明”之處在於,能根據市場趨勢變化速度自主調節,避免震盪行情中的虛假訊號,同時消除長期趨勢中的滯後。在牛市和熊市中自

微信小程式 選項切換+swiper適應高度

如圖所示一個,具體步驟如下: 一、wxml部分 <view class="swiper-tab"> <view class="swiper-tab-item {{currentTab==0?'active':''}}" data-current="0" b

px轉換rem適應移動端螢幕

var fun = function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize

rem適應移動端佈局

現在的移動終端(手機,pad)螢幕大小各不一樣,為了適應每一種螢幕寬度而設計多款樣式明顯是不科學的,所以就有了自適應佈局的概念。 以前,實現自適應佈局的時候,我使用了CSS3 @media 監測視口寬

REM佈局,適應移動端JS分享(px自動轉化為rem)

!new function(){var a=this;a.width=750,a.fontSize=100,a.widthProportion=function(){var b=(document.body&&document.body.clientWidth

選項Tabs 設定適應視窗大小

$(window).resize(function() {     //"_tabs" 為easyui-tabs的id     $('#_tabs').tabs({         width : $

短線起爆點(移動15種戰法)

移動均線是我們投資者最常用的一個指標,但是我們很多投資者經常把引數改來改去的,或者是給自己找支撐位和壓力位。在日線上30天線跌破後,等待60日均線是否能支撐或者半年線等等。我在10來年的操作當中總結了一個操作模式非常好用,最能適合每天在盤中盯盤的投資者也就是說短線投資者。

股票量化分析(11)——第二個策略(5日移動、雙、MACD策略)

這裡主要用的是talib這個庫來求股票的指標,就免得造輪子。 移動均線有好幾個策略,不過都是簡單的策略,包括簡單的移動均線策略,雙均線交叉策略,macd線的策略。目前也就覺得macd線簡單好用。 先放一個簡單的策略——移動均線策略。這個策略是由下向上超過均線

使用pc端頁面適應移動

有時候我們會糾結PC頁面在手機頁面上無法正常顯示,超出螢幕,有些內容看不到,現在又了下面的程式碼,可以做到自適應手機螢幕寬度:在網頁的<head>中增加一個meta標籤:<meta name=”viewport” content=”width=device-

循序漸進:用python做金融量化分析(二)一條移動平均策略系統建立

在前言中我們講了些基礎知識,這一節正式開始從最簡單的移動平均線講起,移動平均線是在趨勢行情中應用最廣泛的策略,移動平均線有簡單算術平均線,指數平均線,加權平均線,還可以分為一條均線,兩條均線,三條均線策略等等,在這裡我們

移動端用rem使字體適應

對比 16px size 設置 自適應 使用 pre 感覺 字體大小  rem是css3引入的新的單位,與px和em相對比,我感覺rem更加便利,尤其是對移動端的字體自適應布局。  rem是根據HTML的字體大小進行設置的。  而HTML的基本字體大小是16px,所以可

rem - 移動前端適應適配布局解決方案和比較(轉載)

sel amp 有一點 也有 flexbox nbsp 人員 部分 font 原文鏈接:http://caibaojian.com/mobile-responsive-example.html 互聯網上的自適應方案到底有幾種呢?就我個人實踐所知,有這麽幾種方案:· 固定一個

圖片大小適應垂直居中的方法(移動端)

ans translate color width 方法 form relative left ati img{ position: relative; max-height: 100%; max-width: 100%; width: a

移動適應

flex var dom out ice cal one content viewport 此代碼加到head標簽裏面,加入後可隨不同機型的移動設備,設置html的fontSize大小,這樣子用rem可作為解決移動端自適應的方案 !function(N,M){funct

web前端-移動端響應式與適應

logs lac tro 可維護 禁止 網頁 藍色 媒體查詢 [0 一. 在HTML的頭部加入meta標簽     在HTML的頭部,也就是head標簽中增加meta標簽,告訴瀏覽器網頁寬度等於設備屏幕寬度,且不進行縮放,代碼如下: <meta name="view

webstorm下的sass自動編譯和移動適應實踐

info www .html ted 嘗試 ini 移動 工作文件夾 data http://www.fawwheel.com/shahramLu/p/6477731.html webstorm下的sass自動編譯和移動端自適應實踐 1、安裝Ruby 2、安裝s

eChars移動適應學習筆記

位置 16px out 其中 內部 pri base cal print 有時會出現一個圖表需要同時在PC、移動端上展現的場景。這需要 ECharts 內部組件隨著容器尺寸變化而變化的能力。為了解決這個問題,ECharts 完善了組件的定位設置,並且實現了類似 CSS Me

jsp頁面在 移動適應,chrome瀏覽器沒問題,可是safari瀏覽器有問題的解決方法

ref orm one 方法 viewport 轉載 min maximum 顯示 在網頁中設置的1px與物理像素中的1px不會相同,所以導致不同在不同手機上顯示結果都不相同,通過以下設置找到了適合當前網頁自適應不同手機、不同瀏覽器的辦法,代碼如下: “ <meta

移動適應rem的設置

需要 spa 移動端 size 開發 .get 字體大小 問題 one 一般所熟知的css樣式大小單位有px,em。 px:精確地描述元素大小,不隨屏幕大小的變化而變化; em:相對於父元素的大小,如果有層層嵌套的話會導致這個值非常大或者非常小。 在寫移動端頁面的時候為了使