2024-09-16

「ニコ角V2」フォント

今はフリーあるいはオープンソースのフォントが利用できる時代です。いろいろなフォントを紹介しているサイトはありますが、気に入ったデザインのフォントを自分なりのやり方で紹介しています。

今回紹介するフォントは「ニコ角V2」というフォントです。

フォント名 「ニコ角V2」フォント
収録字数 ひらがな・カタカナ・英数字以外は「M+ OUTLINE FONTS」「M PLUS 1」を利用しています。
配布ライセンス SIL Open Font License 1.1
配布サイト 丸文字「ニコ角フォント」(ver.2)のダウンロード|丸文字フォント(ニコ文字)配布所
  • 上記配布サイトのスペックには、フォント名が「ニコモジ+(プラス)」となっています。一方、「ニコモジ+(プラス)V2」というフォントも存在します。「ニコ角フォント」の説明によると、ニコモジ+の角ゴシック版ということなので、「ニコモジ+(プラス)」と区別をするため、本サイトではフォント名を「ニコ角V2」とて紹介しています。

nicokaku_v2.ttf の利用例を下記に示しました。

nicokaku_v2.ttf の利用例

使用したプログラム

スクリーンショット用に使用したプログラムは、本ブログの過去記事 [1] で紹介しています。

参考・関連サイト

  1. bitWalk's: 「ポプらむ☆キウイ」フォント [2024-08-27]
  2. bitWalk's: 「廻想体 ネクスト ユーピー B」フォント [2024-08-29]
  3. bitWalk's: 「源暎ぽっぷる」フォント [2024-09-02]
  4. bitWalk's: 「コーポレート・ロゴ(ラウンド)」フォント [2024-09-08]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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

2024-09-15

【備忘録】Plotly でローソク足チャート

Plotly はカナダのケベック州モントリオールに本社を置くテクニカル・コンピューティング企業で、オンライン・データ分析および可視化ツールを開発しています。Plotly は、個人や共同作業のためのオンラインのグラフ作成、分析、統計ツール、および Python、R、MATLAB、Perl、Julia、Arduino、JavaScript、REST 用の科学的グラフ作成ライブラリを提供しています。

Wikipedia より引用・翻訳、編集

Plotly を使えばチャートが Web ブラウザ上に表示され、データの情報をインタラクティブに確認できます。ローソク足チャートもプロットできるので、試してみました。

PNG 形式で出力した例

インタラクティブな使用感を得られる HTML で出力したファイルを本記事に埋め込もうとしましたが、うまくいかなかったので下記にアップしました。

コードと動作環境

下記の OS 環境で動作確認をしています。

RHEL 9.4 x86_64
Python 3.12.1
kaleido 0.2.1
plotly 5.24.1
yfinance 0.2.43

参考サイトをベースにして作成したサンプルコードを下記に示しました。

plotly_candlestick_n225.py

使い慣れていないので、最低限のプロットしかできませんが、経験値を上げて使いこなせるようにしたいと思っています。

参考サイト

  1. Candlestick charts in Python
  2. Candlestick traces in Python
  3. ローソク線のチャートを表示する|【Python】plotlyを使ってローソク足チャートを表示する [2023-10-12]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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

2024-09-08

「コーポレート・ロゴ(ラウンド)」フォント

今はフリーあるいはオープンソースのフォントが利用できる時代です。いろいろなフォントを紹介しているサイトはありますが、気に入ったデザインのフォントを自分なりのやり方で紹介しています。

今回紹介するフォントは「コーポレート・ロゴ(ラウンド)」というフォントです。

フォント名 「コーポレート・ロゴ(ラウンド)」
収録字数 源ノ角ゴシック」などに、独自のひらがな・カタカナデザインを乗せ、加工を加えたものになります。
配布ライセンス SIL Open Font License 1.1
配布サイト かわいい場面におすすめの「コーポレート・ロゴ(ラウンド)ver3」フォント無料DL – 転職サイト情報のLOGOTYPE.JP

Corporate-Logo-Rounded-Bold-ver3.otf の利用例を下記に示しました。

Corporate-Logo-Rounded-Bold-ver3.otf の利用例

使用したプログラム

スクリーンショット用に使用したプログラムは、本ブログの過去記事 [1] で紹介しています。

参考・関連サイト

  1. bitWalk's: 「ポプらむ☆キウイ」フォント [2024-08-27]
  2. bitWalk's: 「廻想体 ネクスト ユーピー B」フォント [2024-08-29]
  3. bitWalk's: 「源暎ぽっぷる」フォント [2024-09-02]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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

2024-09-06

【備忘録】パラボリック SAR

パラボリック SAR, Parabolic Stop And Reverse は、J.ウェルズ・ワイルダー・ジュニア氏 (J. Welles Wilder, Jr.) によって考案された手法で、証券などの取引商品やFXなどの為替取引において、市場価格の方向性が反転する可能性を見つけるためのものです。

トレンドフォロー(遅行)指標であり、強いトレンドの間、価格がパラボリックカーブ内に留まる傾向にあることに基づいて、トレーリング・ストップ・ロスを設定したり、エントリーポイントやエグジットポイントを決定したりするために使用されます。

Wikipedia より引用、翻訳・編集

先月 8 月 5 日の東京市場の歴史的な暴落を経験して、今さらながら先達が開発したテクニカル分析の手法を、自分でもプログラムを作って分析できるようにしようと思い、いろいろ調べています。

今回は上記 パラボリック SAR です。SAR の計算式は以下の通りです。

SAR = 前日の SAR + AF x (EP - 前日の SAR)

AF(Acceleration Factor): 加速因数

EP(Extreme Point): 買い持ちしている期間の最高値、または売り持ちしている期間の最安値

下記の OS 環境で動作確認をしています。

RHEL 9.4 x86_64
Python 3.12.1
jupyterlab 4.2.5
matplotlib 3.9.2
mplfinance 0.12.10b0
numpy 2.1.1
pandas 2.2.2
yfinance 0.2.43

以下の作業は JupyterLab 上でおこなっています。

まず、必要なパッケージをインポートします。

import matplotlib.pyplot as plt
import mplfinance as mpf
import numpy as np
import pandas as pd
import yfinance as yf

パラボリック SAR を算出する関数です。コードは、参考サイト [1] で紹介されているものを流用しました。

def psar(ohlc: pd.DataFrame, iaf: float = 0.02, maxaf: float = 0.2) -> dict:
    length = len(ohlc)
    high = ohlc['High'].tolist()
    low = ohlc['Low'].tolist()
    close = ohlc['Close'].tolist()

    psar = close[0:len(close)]
    psarbull = [None] * length
    psarbear = [None] * length

    bull = True
    af = iaf
    ep = low[0]
    price_high = high[0]
    price_low = low[0]

    for i in range(2, length):
        if bull:
            psar[i] = psar[i - 1] + af * (price_high - psar[i - 1])
        else:
            psar[i] = psar[i - 1] + af * (price_low - psar[i - 1])
        reverse = False

        if bull:
            if low[i] < psar[i]:
                bull = False
                reverse = True
                psar[i] = price_high
                price_low = low[i]
                af = iaf
        else:
            if high[i] > psar[i]:
                bull = True
                reverse = True
                psar[i] = price_low
                price_high = high[i]
                af = iaf

        if not reverse:
            if bull:
                if high[i] > price_high:
                    price_high = high[i]
                    af = min(af + iaf, maxaf)
                if low[i - 1] < psar[i]:
                    psar[i] = low[i - 1]
                if low[i - 2] < psar[i]:
                    psar[i] = low[i - 2]
            else:
                if low[i] < price_low:
                    price_low = low[i]
                    af = min(af + iaf, maxaf)
                if high[i - 1] > psar[i]:
                    psar[i] = high[i - 1]
                if high[i - 2] > psar[i]:
                    psar[i] = high[i - 2]

        if bull:
            psarbull[i] = psar[i]
        else:
            psarbear[i] = psar[i]

    return {
        'bear': np.array(psarbear, dtype='float64'),
        'bull': np.array(psarbull, dtype='float64'),
    }

過去半年分の日経平均株価 (^N225) の日足データを取得します。

symbol = '^N225'
ticker = yf.Ticker(symbol)
df = ticker.history(period='6mo')

mplfinance でローソク足チャート、SAR の下降トレンド (downtrend)、上昇トレンド (uptrend) をプロットしています。

dict_psar = psar(df)

fig, ax = plt.subplots(figsize=(12, 5))

apds  = [
    mpf.make_addplot(
        dict_psar['bear'],
        type='scatter',
        marker='o',
        markersize=5,
        color='magenta',
        label='downtrend',
        ax=ax
    ),
    mpf.make_addplot(
        dict_psar['bull'],
        type='scatter',
        marker='o',
        markersize=5,
        color='darkcyan',
        label='uptrend',
        ax=ax
    ),
]   

mpf.plot(
    df,
    type='candle',
    style='yahoo',
    addplot=apds,
    xrotation=0,
    ax=ax
)

ax.set_title('%s (%s)' % (ticker.info['longName'], symbol))
ax.legend(loc='best', fontsize=8, frameon=True)
ax.grid('both')

plt.subplots_adjust(left=0.15, right=0.85, bottom=0.05, top=0.95)
# plt.savefig('parabolic_sar_n225.png')
plt.show()

 

パラボリック SAR の算出に流用させていただいたコードは古いものですが、問題なく動作しました。コードの内容を咀嚼し、使いこなせるようにしたいと思います。

参考サイト

  1. Parabolic SAR implementation in Python – v-frog [2014-12-09]
  2. パラボリックSAR (SAR) — TradingView
  3. bitWalk's: 【備忘録】モメンタムとボリンジャーバンド [2024-08-10]
  4. bitWalk's: 【備忘録】フィボナッチ・リトレースメント [2024-08-12]
  5. bitWalk's: 【備忘録】一目均衡表 [2024-08-15]
  6. bitWalk's: 【備忘録】Wilder の RSI [2024-09-05]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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

2024-09-05

【備忘録】Wilder の RSI

RSI, Relative Strength Index は、相場の過熱感を 0% - 100% で表したオシレーター系のテクニカル指標です。J・ウエルズ・ワイルダー・ジュニア氏 (J. Welles Wilder, Jr.) が考案者で、1978年に発表されました。日本語では、「相対力指数」と呼ばれます。

RSI の数値が 70% 以上では「買われすぎ」を意味し、30% 以下では「売られすぎ」を意味します。

算出方法は

RSI = 値上がり幅の指数移動平均(α) ÷ (値上がり幅の指数移動平均(α) + 値下がり幅の指数移動平均(α)) × 100

α = 1/14 を使うことをワイルダーは推奨しています。つまり、14 日の修正移動平均です。

Wikipedia より引用・編集

先月 8 月 5 日の東京市場の歴史的な暴落を経験して、今さらながら先達が開発したテクニカル分析の手法を、自分でもプログラムを作って分析できるようにしようと思い、いろいろ調べています。

今回は上記 RSI です。

下記の OS 環境で動作確認をしています。

RHEL 9.4 x86_64
Python 3.12.1
jupyterlab 4.2.5
matplotlib 3.9.2
mplfinance 0.12.10b0
pandas 2.2.2
yfinance 0.2.43

以下の作業は JupyterLab 上でおこなっています。

まず、必要なパッケージをインポートします。

import matplotlib.pyplot as plt
import mplfinance as mpf
import pandas as pd
import yfinance as yf

Wilder の RSI を算出する関数です。参考サイト [1] で公開されている Python のコードを流用させていただきました。

def wilder_rsi(ohlc: pd.DataFrame, period: int = 14) -> pd.Series:
    delta = ohlc['Close'].diff()

    up, down = delta.copy(), delta.copy()
    up[up < 0] = 0
    down[down > 0] = 0

    _gain = up.ewm(com=(period - 1), min_periods=period).mean()
    _loss = down.abs().ewm(com=(period - 1), min_periods=period).mean()

    rs = _gain / _loss
    return pd.Series(100 - (100 / (1 + rs)), name='RSI')

過去1年分の日経平均株価 (^N225) の日足データを取得します。

symbol = '^N225'
ticker = yf.Ticker(symbol)
df = ticker.history(period='1y')

mplfinance でローソク足チャートとその移動平均(5 日, 25 日, 75 日)をプロットし、その下の二番目の領域に RSI をプロットします。チャートに手を加えたかったので mplfinance にプロットの全てを任せず、わざわざ matplotlib で扱えるようにしています。

# Wilder RSI
rsi = wilder_rsi(df)

fig, ax = plt.subplots(
    2, 1,
    gridspec_kw=dict(height_ratios=[2, 1], hspace=0),
    sharex=True, figsize=(12, 6)
)

apd_osc = [
    mpf.make_addplot(rsi, ylabel='RSI', color='black', width=0.5, ax=ax[1])
]

mpf.plot(
    df,
    type='candle',
    style='yahoo',
    mav=(5, 25, 75),
    addplot=apd_osc,
    ax=ax[0],
)

ax[0].set_title('%s (%s)' % (ticker.info['longName'], symbol))
ax[0].grid('both')

fb_rsi_up = dict(x=range(len(rsi)), y1=rsi.values, y2=50, where=50<rsi, color='blue', alpha=0.25, interpolate=True)
fb_rsi_dn = dict(x=range(len(rsi)), y1=rsi.values, y2=50, where=50>rsi, color='red', alpha=0.25, interpolate=True)
ax[1].fill_between(**fb_rsi_up)
ax[1].fill_between(**fb_rsi_dn)

ax[1].set_ylabel('Wilder RSI')
ax[1].grid('both')

ax2 = ax[1].twinx()
ax2.set_ylim(ax[1].get_ylim())
ax2.tick_params(axis='y')
ax2.set_yticks([30, 50, 70])
yticklabels2 = ax2.get_yticklabels()
yticklabels2[0].set_color('red')
yticklabels2[1].set_color('black')
yticklabels2[2].set_color('blue')
ax2.axhline(y=30, color='red', linewidth=0.75, linestyle='solid')
ax2.axhline(y=50, color='black', linewidth=0.75, linestyle='solid')
ax2.axhline(y=70, color='blue', linewidth=0.75, linestyle='solid')

plt.subplots_adjust(left=0.15, right=0.85, bottom=0.05, top=0.95)
# plt.savefig('rsi_wilder_n225.png')
plt.show()

 

RSI をただプロットするだけでは味気ないので、(実用的かどうかは別として)いろいろ修飾してみました。💦

参考サイト

  1. RSI calculation to match Tradingview
  2. RSI には2つの計算式があるけれど違いは何か [2023-09-26]
  3. bitWalk's: 【備忘録】モメンタムとボリンジャーバンド [2024-08-10]
  4. bitWalk's: 【備忘録】フィボナッチ・リトレースメント [2024-08-12]
  5. bitWalk's: 【備忘録】一目均衡表 [2024-08-15]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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

2024-09-02

「源暎ぽっぷる」フォント

今はフリーあるいはオープンソースのフォントが利用できる時代です。いろいろなフォントを紹介しているサイトはありますが、気に入ったデザインのフォントを自分なりのやり方で紹介しています。

今回紹介するフォントは「源暎ぽっぷる」というフォントです。

フォント名 源暎ぽっぷる
収録字数 漢字 約 7,000 文字を含む、全 9,318 グリフ
配布ライセンス SIL Open Font License 1.1
配布サイト 【フリーフォント】源暎ぽっぷる - 御琥祢屋
【フリーフォント】源暎フォント ダウンロード - 御琥祢屋

配布ファイルに同梱されていた readme_説明書.txt によると、「源暎ぽっぷる」はフトコロが広く、なだらかな曲線でまとめられたフリーハンドデザインの仮名と英数字、そしてモダンな LINE Seed JPの漢字等を合わせたPOP体風ゴシック体ファミリーということです。

GenEiPOPlePw-Bk.ttf の利用例を下記に示しました。

GenEiPOPlePw-Bk.ttf の利用例

使用したプログラム

スクリーンショット用に使用したプログラムは、本ブログの過去記事 [1] で紹介しています。

参考・関連サイト

  1. bitWalk's: 「ポプらむ☆キウイ」フォント [2024-08-27]
  2. bitWalk's: 「廻想体 ネクスト ユーピー B」フォント [2024-08-29]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



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