直前のTR拡縮と現在のTR拡縮の関係

直前のTR拡縮と現在のTR拡縮は負の比例関係

直前のTR(トゥルー・レンジ)の拡縮と現在のTRの拡縮がどのような関係にあるか調べてみた。足の種類は5分足である。TRの拡縮は標準化している。

グラフを見ると、直前のTRの拡縮と現在のTRの拡縮とは負の比例関係にあることが分かる。

サンプルプログラム

TRは正の値しか取らないためか、拡縮を標準化すると分布に偏りがある。そこで、先ずTRを対数変換し、それから拡縮を標準化している。

○以下のコマンドを「IPython console」にコピー&ペーストして「Enter」キーを2回押す。

import forex_system as fs
import matplotlib.pyplot as plt
import numpy as np
from datetime import datetime

fs.remove_temp_folder()

timeframe = 5
n = 6
x = np.empty(n)
y = np.empty(n)
plt.figure(figsize=(6, 20))
cnt = 0
for symbol in ['AUDUSD', 'EURUSD', 'GBPUSD', 'USDJPY', 'RANDOM']:
    cnt += 1
    plt.subplot(5, 1, cnt)
    for year in [2012, 2013, 2014, 2015, 2016]:
        start = datetime.strptime(str(year) + '.01.01 00:00',
                                  '%Y.%m.%d %H:%M')
        end = datetime.strptime(str(year) + '.12.31 23:59',
                                '%Y.%m.%d %H:%M')
        atr = fs.i_atr(symbol, timeframe, 1, 0)
        atr[atr==0] = np.nan
        atr = atr.dropna()
        atr = np.log(atr)
        change = atr - atr.shift(1)
        mean = np.mean(change[start:end])
        std = np.std(change[start:end])
        change = (change - mean) / std
        change0 = change[start:end]
        change1 = change.shift(1)[start:end]
        for i in range(n):
            x[i] = i - 2.5
            y[i] = np.mean(change0[(change1.shift(1) >= x[i] - 0.5) &
             (change1.shift(1) < x[i] + 0.5)])
        plt.plot(x, y, label=str(year))
    plt.title('Previous TR Change and Current TR Change (' + symbol + ')')
    plt.xlabel('Previous TR Change')
    plt.ylabel('Current TR Change')
    plt.xlim(-2.5, 2.5)
    plt.ylim(-0.2, 0.2)
    plt.legend(loc='upper right')
    plt.axvline(x=0, color='black', linestyle=':')
    plt.axhline(y=0, color='black', linestyle=':')
    plt.tight_layout()
plt.savefig('previous_tr_change_and_current_tr_change.png', dpi=150)
plt.show()

fs.remove_temp_folder()
(2017/02/12更新)