移動平均 (KAMA) は,その名前通り,移動平均 (Moving Average) のカテゴリーに属しますが,伝統的な移動平均とは異なり,通常のMAよりもはるかに賢くなります. MAには多くの欠点があることは知っています.例えば,短期移動平均は価格傾向に近いので,非常に敏感ですが,誤った信号を出すことは簡単です.長期移動平均は傾向を把握するのに非常に正確ですが,市場価格がしばらく動いたときに非常にゆっくり反応することが多い.
KAMAの"スマートネス"は,現在の市場状態,すなわち波動性に基づいて,感度を調整できるという事実に反映されている.その実現形態は:ショック市場で,KAMAの変化は明らかに遅くなる.トレンドが来ると,それは迅速に反応する.
利点は,価格の"日間の動向"による取引コストを削減し,市場がスタートするときにトレンドに間に合うことができるということです.
その中でも,n,n1,n2は周期パラメータである.デフォルトでは,nサイクルの数は10である.n1は短期サイクルの数は2であり,n2は長期サイクルの数は30である.これはまた,KAMAの著者ペリー・カウフマンによって合意されたパラメータのセットである.nは方向性および不安定性計算効率のために使用され,n1とn2は高速移動平均と遅い移動平均の期間の数である.理論的には,n1のパラメータが大きいほど,スムーズなKAMAである.
KAMAは,まず方向 (DIR) と波動 (VIR) を計算し,次にそれらの2つに従って効率を比例して計算することによって計算される.効率 (ER) は価格変化の程度を測定し,方向/波動という単純な方法で計算される.計算結果は0から1の間である.ERの値が0に近いとき,市場は振動状態にある.ERの値が1に近いとき,市場は傾向状態にある.
効率 (ER) を計算する際には,スムージングコンスタント (CS) は,高速移動平均値と遅い移動平均値を組み合わせることで得ることができる.
効率性 * (高速 - 遅い) + 遅い
CSはトレンド操作の速度を表します.CSの計算式によると,CSの変化は常にERの変化に比例していることを発見できます.
次に,係数 (CQ) は,平滑した電力を基準に計算され,目的は,計算においてゆっくりサイクルパラメータがより重要な役割を果たすようにすることです.これはまた,より保守的なアプローチです.
KAMAの最終的な平滑度は係数 (CQ) によって決定される.KAMAの計算では,係数 (CQ) は最後の2つの移動平均平滑度の周期パラメータを決定する.すなわち:指数的な重み平均 (動的移動平均 (閉値,係数),2).
KAMA
ステップ1: KAMA を計算する
左上の角で,プログラミング言語: 私の言語を選択してください.タリブライブラリには既にKAMAが用意されていますが,外部パラメータ (n) サイクルが1つしかありません.n1とn2はデフォルトで2と30になっています.
この記事の戦略は参照としてのみ使用されます. 強いプログラミング能力を持つ読者は自分で書くことができます. 私の言語プログラミングプロセス中に,私たちはまたJavaScript言語と混ぜることができます.以下のコードに注意してください:
%% // Standard format for JavaScript within My language
scope.KAMA = function() {
var r = _C(exchange.GetRecords); // Get the K line array
if (r.length > 140) { // filter the length of the K line
var kama = talib.KAMA(r, 140); // Call talib library to calculate KAMA
Return kama[kama.length - 2]; // return the specific value of KAMA
}
Return;
}
%% // Standard format for JavaScript within My language
ステップ2:取引条件を計算し,注文をします
%%
scope.KAMA = function() {
var r = _C(exchange.GetRecords);
if (r.length > 140) {
var kama = talib.KAMA(r, 140);
Return kama[kama.length - 2];
}
Return;
}
%%
K^^KAMA; // Print KAMA on the chart
A:CLOSE; // print the closing price on the chart
K > REF(K, 1) && CLOSE > K,BK; // Open long position
K < REF(K, 1) && CLOSE < K,SK; // Open short position
K < REF(K, 1) || CLOSE < K,SP; // close long position
K > REF(K, 1) || CLOSE > K,BP; // close short position
ステップ3: 戦略信号フィルタリング方法を設定する
%%
scope.KAMA = function() {
var r = _C(exchange.GetRecords);
if (r.length > 140) {
var kama = talib.KAMA(r, 140);
Return kama[kama.length - 2];
}
Return;
}
%%
K^^KAMA;
A:CLOSE;
K > REF(K, 1) && CLOSE > K,BK;
K < REF(K, 1) && CLOSE < K,SK;
K < REF(K, 1) || CLOSE < K,SP;
K > REF(K, 1) || CLOSE > K,BP;
AUTOFILTER; // Enable one open and one close signal filtering mechanism
実際の取引環境に近づくために, 2ピップのスリップを実際に取引中の圧力をテストするために使用しました. テスト環境は次のとおりです:
バックテスト環境
利益の詳細
資金曲線
上記のバックテスト結果から,このシンプルなKAMA戦略は本当に期待に応えています. 2018年の仮想通貨の超大熊市でも,資本曲線は大きな引き下げを示さなかったし,長期ショック期間の市場での繰り返しオープンと閉鎖ポジションはなく,不必要な損失を引き起こしました. 後期には,2019年の牛市では非常に良いパフォーマンスがあります.
詳細については:https://www.fmz.com/strategy/155663
堅牢な戦略となる優れた戦略は磨き上げなければならない.この記事の戦略には,特定のフィルタリング条件,アクティブストップ・ロス,ストップ・ロス条件を追加するなど,最適化およびアップグレードするための多くのスペースがあります.移動平均の一種として,KAMAは通常の移動平均の利点とデメリットを受け継ぎ,同時に高揚します.予測不能な市場で,あなたが