さつま芋の勉強日記

投機の勉強記録を中心に発信しています。

MENU

【FX雑談】Pythonでランダムチャートを作ってみました

 

まえがき

こんにちは、さつま芋です。

 

どうしてFX先生が胡散臭いのかに気づいてしまいました。

 

リスクの評価が緩すぎるんです。

 

「1日2万円ゲット」と煽る一方、「1日2万円ルーズ」には触れません。

 

投資リスクを評価しないところは実務的ではないと感じます。

 

さて、今回は偽チャートを作ってみました。

 

 

ランダムチャート

以前にも偽チャートを作ったことはあったのですが、ラインチャートでした。

 

今回はローソク足で それっぽくしてみました。

 

 

さらに移動平均線を付け足してみると次のとおりです。

 

 

 

あとがき

もっと技術力があれば繊細な値動きも具現化できるかもしれません。

私の経験則ですが、チャートパターンやプライスアクション自体の意味より、むしろトレード回数の制限という役割に注目したほうがいいと思っています。

 

自戒を込めて言うと、優位性を過大評価してしまうと足元を掬われてしまいます。

 

優位性という言葉の印象とは違い、100回の勝負で51回は勝っても49回は負けるくらい僅差だからこそ、見誤ってしまうのだと思います。

 

あくまで劣勢ではないだけの状態を優勢だと誤解すると、「1日2万円ゲット」の怖さが際立ちます。

 

# -*- coding: utf-8 -*-

# ライブラリの読み込み
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# import matplotlib.dates as mdates
import mplfinance as mpf
import pandas as pd
import numpy as np

# ランダムウォークのパラメータ
MEAN = 0.01  # 平均
STD = 0.3  # 標準偏差
N = 4000  # データ数

# 1分間隔のランダムウォークを生成
np.random.seed(0)
data = np.random.normal(MEAN, STD, N).cumsum()
df = pd.DataFrame(data, columns=["price"])

# インデックスを日時型に変換
df.index = pd.date_range("2023-01-01", periods=len(df), freq="15T")
df.index = pd.to_datetime(df.index)
# データを日足に分割し、4本値データを作成
df = df.resample("1D").ohlc()

df.index.name = 'datetime'

# dateの名称を復元
df.columns = ["open", "high", "low", "close"]

# データがない日を埋める
df = df.fillna(method="ffill")

 

mpf.plot(df, type="candle", style="binance", figratio=(20, 10), figscale=1.0,
         title="Random walk candlestick chart",
         ylabel="Price",
         ylabel_lower="Volume",
         mav=(5, 15))


def animate(i, fig, ax):
    # 既存のローソク足チャートを削除する
    ax.clear()
    # 新しいローソク足チャートを描画する
    mpf.plot(df.iloc[:i+1], type='candle', style='binance', ax=ax,
             tight_layout=False, show_nontrading=True)
    plt.xticks(rotation=45)
    ax.set_xlabel('datetime')
    ax.set_ylabel('price')
    ax.set_title('Random walk candlestick chart')
    ax.set_xlim(pd.Timestamp("2023-01-01"), pd.Timestamp("2023-02-14"))
    ax.set_ylim(-12, 18)
    return fig, ax


# FigureとAxesオブジェクトを作成する
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
# アニメーションオブジェクトを作成する
ani = animation.FuncAnimation(fig, animate, frames=len(df), interval=1000, fargs=(fig, ax))
# 余白を調整する
plt.subplots_adjust(bottom=0.2)
# アニメーションgifとして保存する
ani.save('Candle_Stick.gif', writer='pillow', dpi=100)

 

以上、さつま芋でした。

 

このエントリーをはてなブックマークに追加

ブログランキング・にほんブログ村へ

 

 

ブログランキング・にほんブログ村へ
にほんブログ村