PyAlgoTradeの日本語解説ブログ

PyAlgoTrade の勝手に日本語解説ブログ。日本語の内容に関して保証はいたしておりません。必ず本家のサイトをご確認ください。

2015年9月20日日曜日

PyAlgoTradeで使える移動平均いろいろ

仕様を調べていたら、売買まで進みません。まあ、間違った使い方で無駄に一喜一憂するよりはマシ、マーケットは明日もあいている。ということで、


移動平均については以下の4つをサポートしているが、SMAとEMA以外は呼び出し方が違う。



  • SMA(Simple Moving Average)・・・単純移動平均線
  • EMA(Exponential Moving Average)・・・指数移動平均線
  • WMA(Weighted Moving Average)・・・加重移動平均線
  • VWAP (Volume Weighted Average Price) 出来高加重移動平均

SMA->EMA->WMAの順に直近の価格が優先される。このソフトの場合のWMAは比率を自分で決めることができる。
たとえば、昨日:一昨日を3:1で平均を取ったのが以下のサンプル。とはいえほぼ昨日の株価になってしまうので、10日分ぐらいはブレンドするよね。

VMAPは所属しているライブラリが違う。また、引数としては株価データを全部渡す。計算には価格と出来高が必要だから。ちなみに読み方は「ブイワップ」でかっこいい。
株価がVWAPを上回っている時は、今日買った人全員の損益を合計したらプラス、逆に株価がVWAPを下回っている場合はマイナスになる。

それでは、全部計算してみましょう


#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
from pyalgotrade.technical import ma
from pyalgotrade.technical import vwap
from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed

logging.basicConfig(filename='/tmp/exec.log')

class MyStrategy(strategy.BacktestingStrategy):
    def __init__(self, feed, instrument):
        strategy.BacktestingStrategy.__init__(self, feed)
 self.__sma = ma.SMA(feed[instrument].getCloseDataSeries(), 15)
 self.__ema = ma.EMA(feed[instrument].getCloseDataSeries(), 15)
 self.__wma = ma.WMA(feed[instrument].getCloseDataSeries(), (1,2))
 self.__vwap =vwap.VWAP(feed[instrument], 15)
        self.__instrument = instrument

    def onBars(self, bars):
        bar = bars[self.__instrument]
        self.info("%f sma:%s ema:%s wma:%s vwap:%s " % (bar.getClose(),self.__sma[-1],self.__ema[-1],self.__wma[-1],self.__vwap[-1]))


# Load the yahoo feed from the CSV file
feed = yahoofeed.Feed()
feed.addBarsFromCSV("orcl", "orcl-2000.csv")

# Evaluate the strategy with the feed's bars.
myStrategy = MyStrategy(feed, "orcl")
myStrategy.run()

次はRSIなどのモメンタムかな。

0 件のコメント:

コメントを投稿