FXシステムの使い方(プログラム) (2017/04/11)

FXシステムのプログラムについて簡単に説明する。

FXシステムのインポート

FXシステムをインポートする。

import forex_system as fs

convert_minute_to_period()

分を計算期間に変換する。例として60分が5分足では足何本分になるかを表示する。

period = fs.convert_minute_to_period(60, 5)
print(period)


12

get_signal()

シグナルを求める。例としてZスコアが-0.5以下で買いエントリー、0以上で買いエグジット、+0.5以上で売りエントリー、0以下で売りエグジットとするシグナルを最初の5個のみ表示する。

symbol = 'USDJPY'
timeframe = 1440
sl = 0
tp = 0
zscore1 = fs.i_zscore(symbol, timeframe, 3, 'MODE_SMA', 1)
buy_entry = zscore1 <= -0.5
buy_exit = zscore1 >= 0.0
sell_entry = zscore1 >= 0.5
sell_exit = zscore1 <= 0.0
signal = fs.get_signal(buy_entry, buy_exit, sell_entry, sell_exit, symbol,
                       timeframe, sl, tp)
print(signal.head())


2007-01-01    0
2007-01-02    0
2007-01-03   -1
2007-01-04   -1
2007-01-05    0
Name: close, dtype: int64

「sl」は損切り(stop loss)、「tp」は利食い(take profit)の設定で、pips単位で設定する。「0」に設定した場合は、損切り、または利食いを行わない。

i_atr()

ATRを求める。例としてATR(USDJPY、日足、3本、1本前の足)を最初の10個のみ表示する。

atr1 = fs.i_atr('USDJPY', 1440, 3, 1)
print(atr1.head())


2007-01-01     0.000010
2007-01-02     0.000010
2007-01-03    39.899997
2007-01-04    40.249997
2007-01-05     0.736667
2007-01-08     0.893333
2007-01-09     0.783333
2007-01-10     0.896667
2007-01-11     0.755000
2007-01-12     0.908333
Freq: B, dtype: float64

2007年1月1日と1月2日は「0.00001」となっているが、存在する最初のデータより前はこの数値で埋めているので、ただの仕様である。他の関数でも同様である。

また、1月3日と1月4日は数値が大きすぎるが、最初に近いデータではこういうことがある。データは2007年からあるが、検証では2008年から使うようにすれば問題はないだろう。他の関数でもやはり同様である。

i_close()

終値を求める。例として終値(USDJPY、日足、1本前の足)を最初の5個のみ表示する。

close1 = fs.i_close('USDJPY', 1440, 1)
print(close1.head())


2007-01-01      0.00001
2007-01-02    119.05000
2007-01-03    118.83000
2007-01-04    119.37000
2007-01-05    119.05000
Name: close, dtype: float64

i_hl_band()

HLバンドを計算する。例としてHLバンド(USDJPY、日足、3本、1本前の足)を最初の5個のみ表示する。

hl_band1 = fs.i_hl_band('USDJPY', 1440, 3, 1)
print(hl_band1.head())


                 high        low      middle
2007-01-01    0.00001    0.00001    0.000010
2007-01-02    0.00001    0.00001    0.000010
2007-01-03  119.08000    0.00001   59.540005
2007-01-04  119.68000  118.45000  119.065000
2007-01-05  119.68000  118.45000  119.065000

i_highest()

高値の位置を求める。例として高値の位置(USDJPY、日足、3本、1本前の足)を最初の5個のみ表示する。

highest1 = fs.i_highest('USDJPY', 1440, 3, 1)
print(highest1.head())


2007-01-01    0
2007-01-02    0
2007-01-03    1
2007-01-04    0
2007-01-05    1
Name: high, dtype: int64

i_lowest()

安値の位置を求める。例として安値の位置(USDJPY、日足、3本、1本前の足)を最初の5個のみ表示する。

lowest1 = fs.i_lowest('USDJPY', 1440, 3, 1)
print(lowest1.head())


2007-01-01    0
2007-01-02    0
2007-01-03    2
2007-01-04    1
2007-01-05    2
Name: low, dtype: int64

i_roc()

変化率を求める。例として変化率(USDJPY、日足、1本、1本前の足)を最初の5個のみ表示する。

roc1 = fs.i_roc('USDJPY', 1440, 1, 1)
print(roc1.head())


2007-01-01    1.000000e-05
2007-01-02    1.190500e+09
2007-01-03   -1.847963e-01
2007-01-04    4.544307e-01
2007-01-05   -2.680741e-01
Name: close, dtype: float64

i_trend_duration()

トレンド継続期間を求める。トレンドについては様々な理解があるが、ここではレートが移動平均線より上なら上昇トレンド、下なら下落トレンドと見なすこととする。その継続期間(単位は足)を求め、符号は上昇トレンドならプラス、下落トレンドならマイナスとする。

例としてトレンド継続期間(USDJPY、日足、3本、単純移動平均、1本前の足)を最初の5個のみ表示する。

trend_duration1 = fs.i_trend_duration('USDJPY', 1440, 3, 'MODE_SMA', 1)
print(trend_duration1.head())


2007-01-01    0
2007-01-02    0
2007-01-03    1
2007-01-04    0
2007-01-05    0
dtype: int64

i_zscore()

Zスコアを求める。ここでのZスコアとは(終値-移動平均) / 移動標準偏差という式で求めたものである。

例としてZスコア(USDJPY、日足、3本、単純移動平均、1本前の足)を最初の5個のみ表示する。

zscore1 = fs.i_zscore('USDJPY', 1440, 3, 'MODE_SMA', 1)
print(zscore1.head())


2007-01-01    0.000010
2007-01-02    0.000010
2007-01-03    0.575748
2007-01-04    1.055712
2007-01-05   -0.122757
Name: close, dtype: float64

time_hour()

インデックスの時を返す。例としてインデックスの時(USDJPY、30分足)を最初の5個のみ表示する。

close1 = fs.i_close('USDJPY', 30, 1)
hour = fs.time_hour(close1.index)
print(hour.head())


2007-01-01 00:00:00    0
2007-01-01 00:30:00    0
2007-01-01 01:00:00    1
2007-01-01 01:30:00    1
2007-01-01 02:00:00    2
dtype: int32

time_month()

インデックスの月を返す。例としてインデックスの月(USDJPY、日足)を最初の5個のみ表示する。

close1 = fs.i_close('USDJPY', 1440, 1)
month = fs.time_month(close1.index)
print(month.head())


2007-01-01    1
2007-01-02    1
2007-01-03    1
2007-01-04    1
2007-01-05    1
dtype: int32