1

「OBV - 残高ボリューム」のトレーディング ビュー チャート出力とまったく同じ、python コード化された pandas ロジック出力を取得しようとしています。

OBV の Pine スクリプト リファレンスの一部:

study(title="On Balance Volume", shorttitle="OBV")
src = close
obv = cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
plot(obv, color=blue, title="Price_OBV")

Tradingview Wikiページに記載されている計算方法

オンバランス ボリュームには、テクニカル分析で最も簡単な計算の 1 つがあります。いくつかの条件に基づいた単純な足し算または引き算です。

  1. 現在の終値が前の終値よりも大きい場合: 前の OBV + 現在の出来高 = 現在の OBV

  2. 現在の終値が前の終値よりも低い場合: 前の OBV - 現在の出来高 = 現在の OBV

  3. 現在の終値が前の終値と等しい場合: 前の OBV = 現在の OBV

私が試したPythonコード:

def on_balance_volume(close_data, volume):
    """
    On Balance Volume.
    Formula:
    start = 1
    if CLOSEt > CLOSEt-1
        obv = obvt-1 + volumet
    elif CLOSEt < CLOSEt-1
        obv = obvt-1 - volumet
    elif CLOSEt == CLOSTt-1
        obv = obvt-1
    """
    catch_errors.check_for_input_len_diff(close_data, volume)
    obv = np.zeros(len(volume))
    obv[0] = 0
    for idx in range(0, len(obv)):
        if (close_data[idx] - close_data[idx-1]) > 0:
            obv[idx] = obv[idx-1] + volume[idx]
        elif (close_data[idx] - close_data[idx-1])<0:
            obv[idx] = obv[idx-1] - volume[idx]
#        elif close_data[idx] == close_data[idx-1]:
#            obv[idx] = obv[idx-1]
    return obv


df['obv']=on_balance_volume(df['close'],df['volume'])

注 : 取引ビューに表示されているものと正確に一致するボリューム入力を確認しました。

このデータ ソースを使用して出力を検証できます (データを取得するためのキーを生成します) DateLink

Python コードで正確な TV チャートの OBV 値を取得するために必要な変更は何ですか。

4

0 に答える 0