毎日の OHLCV データを含む DataFrame があります。
次の方法で範囲を計算できます。
s['Range'] = s['High'] - s['Low']
単純。ここで、私が呼び出した新しい列を計算したいと思いますs['OIR']
(OIR = Open-In-Range)
この['OIR']
列はレンジ内で取引を開始したかどうかをチェックし、昨日の安値を上回り、昨日の高値を下回って取引を開始したかどうかをテストします。前の行を参照する必要がありますが、その方法がよくわかりません。戻り値は True/False になります。
ありがとう。
編集: StackExchange と Python は初めてです。サンプル データをドロップする場所がわからない。これがデータフレームの画像です。
http://i47.tinypic.com/142eb2a.png
サンプル データ: ディクショナリを DataFrame に変換
{'High': {<Timestamp: 2007-03-02 00:00:00>: 1384.5,
<Timestamp: 2007-03-05 00:00:00>: 1373.0},
'Last': {<Timestamp: 2007-03-02 00:00:00>: 1365.0,
<Timestamp: 2007-03-05 00:00:00>: 1351.5},
'Low': {<Timestamp: 2007-03-02 00:00:00>: 1364.25,
<Timestamp: 2007-03-05 00:00:00>: 1350.5},
'OIR': {<Timestamp: 2007-03-02 00:00:00>: False,
<Timestamp: 2007-03-05 00:00:00>: False},
'Open': {<Timestamp: 2007-03-02 00:00:00>: 1378.5,
<Timestamp: 2007-03-05 00:00:00>: 1356.75},
'Range': {<Timestamp: 2007-03-02 00:00:00>: 20.25,
<Timestamp: 2007-03-05 00:00:00>: 22.5},
'Volume': {<Timestamp: 2007-03-02 00:00:00>: 1706906,
<Timestamp: 2007-03-05 00:00:00>: 1984041}}
答え:
s['OIR'] = ((s['Open'] < s['High'].shift(1)) & (s['Open'] > s['Low'].shift(1)))