Top > pyStockTrader > TradeAlgorithm 売買アルゴリズム
このルールに従えばどんなアルゴリズムにも対応するはず。 一般的なものは以下のモジュールを使えるかも 特殊な変数
例「simple.py」単純な売買ルール。前の日より安くなったら買い、買った値段より高くなったら売る方式 #!/usr/bin/python3 # coding: UTF-8 import numpy as np #買い def buy(stock,dt): data_num = 3 trade=stock.trade tmp=np.where(stock.simulation.date<=dt) epos=np.max(tmp) if epos < data_num: return 0,0 spos=epos-data_num #過去3個の株価をとってくる trade.price = stock.simulation.close[epos] #最後の株価=最新の株価 last_price = int(stock.simulation.close[epos-1]) #最後から2番目の株価 last_last_price = int(stock.simulation.close[epos-2]) #最後から3番目の株価 buy_rate = stock.algorithm_vals[0] #比率、値は設定ファイルで設定 if(float(last_price) < float(last_last_price * buy_rate)): #ある比率より安くなっていたら買う price = float(last_price) * buy_rate #買値の設定 if(float(stock.simulation.close[epos]) < price): #今の値の方が安かったら、その値段に設定 price = float(stock.simulation.close[epos]) buy_type = 0 #指値で買う return price,buy_type return 0,0 #ある比率より安くなかったら買わない #売り def sell(stock,dt): data_num = 3 sell_type = 0 trade=stock.trade tmp=np.where(stock.simulation.date<=dt) epos=np.max(tmp) if epos < data_num: return 0,0 spos=epos-data_num trade.price = stock.simulation.close[epos] #最後の株価=最新の株価 sell_rate = stock.algorithm_vals[1] #比率、値は設定ファイルで設定 now_rate = float(stock.simulation.open[epos]) / float(trade.buy_price) wish_sell_price = int(trade.buy_price)*sell_rate #希望価格の設定。買った値段のsell_rate倍 if(int(stock.simulation.close[epos]) > wish_sell_price): #希望価格より高かったら sell_type = 0 #指値で売る wish_sell_price = int(stock.simulation.close[epos]) #希望価格は最新価格 elif(now_rate < stock.algorithm_vals[2]) #ある比率より安くなっていたら損切り sell_type = 1 #成り売り wish_sell_price = int(stock.simulation.close[epos]) #成りなので意味がないが一応 return wish_sell_price,sell_type #値を返す |