Top > trade_rule
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • trade_rule へ行く。

*売買ルール [#c46a5a0c]
-売買ルールは「rule」ディレクトリの中に置きます。~
-最低必要な関数は、sell()とbuy()
-sell()
--stock,trade,dtが引数
---stock : 株のデータが入っている
---trade : 売買のデータが入っている
---dt : 日時のデータ
--希望価格と売買方法(成り、指値)を返す
-buy()
--stock,trade,dtが引数
---stock : 株のデータが入っている
---trade : 売買のデータが入っている
---dt : 日時のデータ
--希望価格と売買方法(成り、指値)を返す

*特殊な変数 [#uf0ccf49]
-trade.price
--一番新しい株価が入っている
-trade.price_history
--株価の履歴(配列)
--trade.price_history[-1] = trade.price
-trade.vals(配列)
--売買ルールのための数値が入っている。
--設定ファイル(「[[プロジェクトファイル>pyStockTrader/project]]」などで設定)
*例「simple.py」 [#g5623046]
単純な売買ルール。前の日より安くなったら買い、買った値段より高くなったら売る方式
 #!/usr/bin/python
 # coding: UTF-8
 #ライブラリのインポート
 from string import *
 import os
 import sys
 import datetime
 import time
 import locale
 import re
 import numpy as np
 sys.path.append('../lib/')
 import data_process as dp
 
 #買いルーチン
 def buy(stock,trade,dt):
 	data_num = 3
 	r = dp.get_data_by_day_num(stock,dt,data_num) #過去data_num個の株価をとってくる。
 	trade.price = r.close[-1] #最後の株価=最新の株価
 	last_price = int(r.close[-2]) #最後から2番目の株価
 	last_last_price = int(r.close[-3]) #最後から3番目の株価
 	buy_rate = float(trade.vals[0]) #比率、値は設定ファイルで設定
 	if(int(last_price) < int(last_last_price * buy_rate)): #ある比率より安くなっていたら買う
 		price = int(last_price) * buy_rate #買値の設定
 		if(int(r.open[-1]) < price): #今の値の方が安かったら、その値段に設定
 			price = int(r.open[-1])
 		buy_type = 0	#指値で買う
 		return price,buy_type
 	return 0,0 #ある比率より安くなかったら買わない
 #売りルーチン
 def sell(stock,trade,dt):
 	data_num = 3
 	sell_type = 0
 	r = dp.get_data_by_day_num(stock,dt,data_num) #過去data_num個の株価をとってくる。
 	trade.price = r.close[-1] #最後の株価=最新の株価
 	sell_rate = float(trade.vals[1]) #比率、値は設定ファイルで設定
 	now_rate = float(r.open[-1]) / float(trade.buy_price) #損切り用の比率
 	wish_sell_price = int(trade.buy_price)*sell_rate #希望価格の設定。買った値段のsell_rate倍
 	if(int(r.open[-1]) > wish_sell_price): #希望価格より高かったら
 		sell_type = 0	#指値で売る
 		wish_sell_price = int(r.open[-1]) #希望価格は最新価格
 	elif(now_rate < float(trade.vals[2])):	#ある比率より安くなっていたら損切り
 		sell_type = 1	#成り売り
 		wish_sell_price = int(r.open[-1]) #成りなので意味がないが一応
 	return wish_sell_price,sell_type #値を返す

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS