Exemplo n.º 1
0
 def test_stop_loss(self):
     crit = criteria.StopLoss(self.one, -0.2)
     self.assertFalse(crit.apply(self.data))
     self.assertFalse(crit.apply(self.data[:-2]))
     self.assertTrue(crit.apply(self.data[:-3]))
     crit = criteria.StopLoss(self.one, -0.02, percent=True)
     self.assertTrue(crit.apply(self.data))
     self.assertTrue(crit.apply(self.data[:-1]))
     self.assertFalse(crit.apply(self.data[:-2]))
     crit = criteria.StopLoss(self.one, -0.1, short=True)
     self.assertTrue(crit.apply(self.data))
     self.assertFalse(crit.apply(self.data[:-1]))
     crit = criteria.StopLoss(self.one, -0.02, short=True, percent=True)
     self.assertFalse(crit.apply(self.data))
     self.assertFalse(crit.apply(self.data[:-1]))
     self.assertTrue(crit.apply(self.data[:2]))
Exemplo n.º 2
0
 def test_stop_loss_strategy(self):
     enter_crit = criteria.Above(self.symbol.close, 25.88)
     exit_crit = criteria.StopLoss(self.symbol, -0.8)
     enter_crit_group = criteria_group.CriteriaGroup([enter_crit], Long(),
                                                     self.symbol)
     exit_crit_group = criteria_group.CriteriaGroup([exit_crit], LongExit(),
                                                    self.symbol)
     tp = trading_profile.TradingProfile(10000,
                                         trading_amount.StaticAmount(5000),
                                         trading_fee.StaticFee(0))
     strat = strategy.Strategy(self.d, [enter_crit_group, exit_crit_group],
                               tp)
     strat.simulate()
     report_overview = strat.report.overview()
     self.assertAlmostEqual(strat.realtime_data_frame.iloc[-2]['PL_MSFT'],
                            report_overview['net_profit'])
     self.assertTrue(
         np.isnan(strat.realtime_data_frame.iloc[0]['CHANGE_PERCENT_MSFT']))
     self.assertTrue(
         np.isnan(strat.realtime_data_frame.iloc[-1]['CHANGE_VALUE_MSFT']))
     self.assertEqual(strat.realtime_data_frame.iloc[0]['ACTIONS_MSFT'], 0)
     self.assertEqual(strat.realtime_data_frame.iloc[1]['ACTIONS_MSFT'], 1)
     self.assertEqual(strat.realtime_data_frame.iloc[-2]['ACTIONS_MSFT'],
                      -1)
     self.assertEqual(strat.realtime_data_frame.iloc[-1]['ACTIONS_MSFT'], 0)
     self.assertEqual(strat.realtime_data_frame.iloc[0]['STATUS_MSFT'], 0)
     self.assertEqual(strat.realtime_data_frame.iloc[1]['STATUS_MSFT'], 1)
     self.assertEqual(strat.realtime_data_frame.iloc[-3]['STATUS_MSFT'], 1)
     self.assertEqual(strat.realtime_data_frame.iloc[-2]['STATUS_MSFT'], 0)
     self.assertEqual(report_overview['trades'], 1)
     self.assertEqual(report_overview['winning_trades'], 0)
     self.assertEqual(report_overview['losing_trades'], 1)
     self.assertEqual(report_overview['lacking_capital'], 0)
     self.assertEqual(report_overview['gross_loss'],
                      report_overview['net_profit'])
     self.assertEqual(report_overview['ongoing_trades'], 0)
     self.assertEqual(report_overview['average_trading_amount'],
                      5003.5199999999995)
     self.assertEqual(report_overview['profitability'], 0.0)
Exemplo n.º 3
0
d.load_data()
rsi28 = technical_indicator.RSI(symbol.close, 28)
d.add_technical_indicator(rsi28)
sma100 = technical_indicator.SMA(symbol.close, 100)
d.add_technical_indicator(sma100)
sma100_previous = technical_indicator.Shift(sma100.value, 1)
d.add_technical_indicator(sma100_previous)
# Criteria
enter_crit_long1 = criteria.Above(rsi28.value, 60)
# SMA100 slope is moving up
enter_crit_long2 = criteria.Above(sma100.value, sma100_previous.value)
enter_crit_short1 = criteria.Below(rsi28.value, 40)
# SMA100 slope is moving down
enter_crit_short2 = criteria.Below(sma100.value, sma100_previous.value)
# Stop loss and take profit exit criteria
exit_crit_long1 = criteria.StopLoss(symbol, 0.01, percent=True)  # 1%
exit_crit_long2 = criteria.TakeProfit(symbol, 50)  # $100
exit_crit_short1 = criteria.StopLoss(symbol, 0.01, short=True,
                                     percent=True)  # 1%
exit_crit_short2 = criteria.TakeProfit(symbol, 50, short=True)  # $100
# Criteria Groups
enter_crit_group1 = criteria_group.CriteriaGroup(
    [enter_crit_long1, enter_crit_long2], Long(), symbol)
enter_crit_group2 = criteria_group.CriteriaGroup(
    [enter_crit_short1, enter_crit_short2], Short(), symbol)
exit_crit_group1 = criteria_group.CriteriaGroup([exit_crit_long1], LongExit(),
                                                symbol)
exit_crit_group2 = criteria_group.CriteriaGroup([exit_crit_long2], LongExit(),
                                                symbol)
exit_crit_group3 = criteria_group.CriteriaGroup([exit_crit_short1],
                                                ShortExit(), symbol)
Exemplo n.º 4
0
end = datetime.datetime(2015, 01, 01)
d = dataset.Dataset(sl, dc, start, end)
d.load_data()
sma100 = technical_indicator.SMA(symbol.close, 100)
d.add_technical_indicator(sma100)
high7 = technical_indicator.Max(symbol.close, 7)
d.add_technical_indicator(high7)
low7 = technical_indicator.Min(symbol.close, 7)
d.add_technical_indicator(low7)
# Enter Long
enter_crit_long1 = criteria.Above(symbol.close, sma100.value)
enter_crit_long2 = criteria.Equals(symbol.close, low7.value)
enter_crit_short1 = criteria.Below(symbol.close, sma100.value)
enter_crit_short2 = criteria.Equals(symbol.close, high7.value)
# Exit Long
exit_crit_long1 = criteria.StopLoss(symbol, 5)
exit_crit_long2 = criteria.TakeProfit(symbol, 10)
exit_crit_short1 = criteria.StopLoss(symbol, 5)
exit_crit_short2 = criteria.TakeProfit(symbol, 10)
# Criteria Groups
enter_crit_group1 = criteria_group.CriteriaGroup(
    [enter_crit_long1, enter_crit_long2], Long(), symbol)
enter_crit_group2 = criteria_group.CriteriaGroup(
    [enter_crit_short1, enter_crit_short2], Short(), symbol)
exit_crit_group1 = criteria_group.CriteriaGroup([exit_crit_long1], LongExit(),
                                                symbol)
exit_crit_group2 = criteria_group.CriteriaGroup([exit_crit_long2], LongExit(),
                                                symbol)
exit_crit_group3 = criteria_group.CriteriaGroup([exit_crit_short1],
                                                ShortExit(), symbol)
exit_crit_group4 = criteria_group.CriteriaGroup([exit_crit_short2],