예제 #1
0
class CustomSimulation(Simulation):  #Custom
    def __init__(self, code=None):
        self.code = code
        self.record_every_stock = False

    def setting(self, params, fname=None):
        """複数の株だけど、いくつかの株に絞ってシミュレーションする場合は
        _fnameにファイル名を指定
        """
        if 'from' in params:
            self.set_date_from(params['from'])
        if 'to' in params:
            self.set_date_to(params['to'])
        print 'from:', self.date_from
        print 'to:', self.date_to
        if self.code is not None:
            self.simulate_a_stock(self.code)  # privateメソッドのため、親クラスのメソッドを直接呼び出す
        else:
            self.simulate_all_stocks(fname)

    def set_trading_system(self, params):
        self.trading_system = TradingSystem(params)

    def set_date_from(self, date):
        self.date_from = date

    def set_date_to(self, date):
        self.date_to = date

    def set_data_loader(self, data_loader):
        Simulation.data_loader = data_loader

    def set_record_dir(self, record_dir, setting_file_name, system_name,
                       version):
        self.recorder = \
            Recorder(os.path.join(record_dir,system_name,version))
        self.recorder.create_record_folder()
        self.recorder.record_setting(setting_file_name)

    def set_record_every_stock(self, true_or_false):
        self.record_every_stock = true_or_false
예제 #2
0
class CustomSimulation(Simulation): #Custom
    def __init__(self, code=None):
        self.code = code
        self.record_every_stock = False
        
    def setting(self, params, fname=None):
        """複数の株だけど、いくつかの株に絞ってシミュレーションする場合は
        _fnameにファイル名を指定
        """
        if 'from' in params:
            self.set_date_from(params['from'])
        if 'to' in params:
            self.set_date_to(params['to'])
        print 'from:', self.date_from
        print 'to:', self.date_to
        if self.code is not None:
            self.simulate_a_stock(self.code) # privateメソッドのため、親クラスのメソッドを直接呼び出す
        else:
            self.simulate_all_stocks(fname)
    
    def set_trading_system(self, params):
        self.trading_system = TradingSystem(params)
        
    def set_date_from(self, date):
        self.date_from = date
        
    def set_date_to(self, date):
        self.date_to = date
        
    def set_data_loader(self, data_loader):
        Simulation.data_loader = data_loader
        
    def set_record_dir(self, record_dir, setting_file_name, system_name, version):
        self.recorder = \
            Recorder(os.path.join(record_dir,system_name,version))
        self.recorder.create_record_folder()
        self.recorder.record_setting(setting_file_name)
        
    def set_record_every_stock(self, true_or_false):
        self.record_every_stock = true_or_false
예제 #3
0
data = DataToStock(data_dir, dbname)
estrangement_system = TradingSystem({
    'entries':
    EstrangementEntry({
        'span': 20,
        'rate': 5
    }),
    'exits': [StopOutExit(),
              EstrangementExit({
                  'span': 20,
                  'rate': 3.5
              })],  # stop_out_exitは最後につける(損切りの手仕舞いだから)
    'stops':
    AverageTrueRangeStop({'span': 20}),
    'filters':
    MovingAverageDirectionFilter({'span': 30})
})

recorder = Recorder()
recorder.record_dir = 'result/estrangement/test_simulation'

simulation = \
    Simulation({'trading_system':estrangement_system,
                'data_loader': data,
                'recorder':recorder})

recorder.create_record_folder()

#simulation.simulate_a_stock(8604) # code.csv
simulation.simulate_all_stocks(
    os.getcwd() + '/../data/test_stock.csv')  # _stats_for_each_stock.csv
예제 #4
0
                trade.volume = stock.unit
                print "trade",trade
                print "entry",trade.entry_date
                print "entry_price",trade.entry_price
                print "trade_type", trade.trade_type
                print "volume",trade.volume

        # check exit
        if trade is not None:
            trading_system.check_exit(trade, i)
            if trade.isclosed():
                trades.append(trade)
                print "exit",trade.exit_date
                print "exit_price",trade.exit_price
                trade = None
    return trades


con = sqlite.connect(os.getcwd()+'/../data/daily_stock_data.db')

recorder = Recorder()
recorder.record_dir = 'result/test'
recorder.create_record_folder()
recorder.record_setting(__file__) # 現在実行中のソースファイル名

results = [ simulate(code) for code in (7203,4063, 8604) ] 
results = [trades for trades in results if len(trades)!=0]

for trades in results: recorder.record_a_stock(trades) 
recorder.record_stats_for_each_stock(results)
recorder.record_stats(results)