Pine脚本转换为Python的原因,为何转换后的“平衡时数量-OBV指标”与TradingView图表值不匹配

时间:2019-05-31 19:05:52

标签: python-3.x pandas dataframe pine-script tradingview-api

我一直在尝试获取与“ OBV-平衡量”上的交易视图图表输出完全相同的python编码的熊猫逻辑输出

一些用于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. 如果当前收盘价大于先前的收盘价,则:前一个OBV +当前交易量=当前OBV

  2.   
  3. 如果当前收盘价低于先前的收盘价,则:前一个OBV-当前交易量=当前OBV

  4.   
  5. 如果当前收盘价等于先前的收盘价,则:前一个OBV =当前的OBV

  6.   

我尝试过的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'])
  

注意:我验证了与输入内容完全匹配的音量输入   显示在tradingview中。

您可以使用此数据源来验证输出(生成密钥以获取数据) DateLink

要在python代码中获取确切的电视图表OBV值,我需要做些什么更改。

0 个答案:

没有答案