po testu na paper,super nastaveni mysellu surfwave

This commit is contained in:
David Brazda
2023-06-01 17:10:20 +02:00
parent 6d90b41cd3
commit 2f68667f08
4 changed files with 20 additions and 11 deletions

View File

@ -323,9 +323,7 @@ def next(data, state: StrategyState):
def populate_rsi_indicator():
#RSI14 INDICATOR
try:
rsi_buy_signal = False
rsi_dont_buy = False
rsi_length = 14
rsi_length = int(safe_get(state.vars, "rsi_length",14))
source = state.bars.close #[-rsi_length:] #state.bars.vwap
rsi_res = rsi(source, rsi_length)
rsi_value = trunc(rsi_res[-1],3)
@ -374,7 +372,7 @@ def next(data, state: StrategyState):
def buy_protection_enabled():
dont_buy_when = dict(AND=dict(), OR=dict())
##add conditions here
dont_buy_when['rsi_dont_buy'] = state.indicators.RSI14[-1] > safe_get(state.vars, "rsi_dont_buy_above",50)
dont_buy_when['rsi_too_high'] = state.indicators.RSI14[-1] > safe_get(state.vars, "rsi_dont_buy_above",50)
dont_buy_when['slope_too_low'] = slope_too_low()
result, cond_met = eval_cond_dict(dont_buy_when)
@ -386,12 +384,13 @@ def next(data, state: StrategyState):
dont_sell_when = dict(AND=dict(), OR=dict())
##add conditions here
#IDENTIFIKOVAT MOMENTUM - pokud je momentum, tak prodávat později
#IDENTIFIKOVAce rustoveho MOMENTA - pokud je momentum, tak prodávat později
#pokud je slope too high, pak prodavame jakmile slopeMA zacne klesat, napr. 4MA (TODO 3)
dont_sell_when['slope_too_high'] = slope_too_high() and not isfalling(state.indicators.slopeMA,4)
dont_sell_when['slopeMA_rising'] = isrising(state.indicators.slopeMA,2)
#toto docasne pryc dont_sell_when['slope_too_high'] = slope_too_high() and not isfalling(state.indicators.slopeMA,4)
dont_sell_when['AND']['slopeMA_rising'] = isrising(state.indicators.slopeMA,2)
dont_sell_when['AND']['rsi_not_falling'] = not isfalling(state.indicators.RSI14,3)
#dont_sell_when['rsi_dont_buy'] = state.indicators.RSI14[-1] > safe_get(state.vars, "rsi_dont_buy_above",50)
result, conditions_met = eval_cond_dict(dont_sell_when)
@ -427,8 +426,16 @@ def next(data, state: StrategyState):
#no cond group - takes first
#TEST BUY SIGNALu z cbartick_price - 3klesave za sebou
#buy_cond['tick_price_falling_trend'] = isfalling(state.cbar_indicators.tick_price,state.vars.Trend)
#slopeMA jde dolu, rsi jde nahoru
#buy mame kazdy potvrzeny, tzn. rsi falling muze byt jen 2
buy_cond['AND']['slopeMA_falling'] = isfalling(state.indicators.slopeMA,3)
buy_cond['AND']['rsi_is_rising'] = isrising(state.indicators.RSI14,2)
buy_cond["AND"]["rsi_buy_signal_below"] = state.indicators.RSI14[-1] < safe_get(state.vars, "rsi_buy_signal_below",40)
buy_cond["AND"]["ema_trend_is_falling"] = isfalling(state.indicators.ema,state.vars.Trend)
#puvodni buy conditiony
#buy_cond["AND"]["rsi_buy_signal_below"] = state.indicators.RSI14[-1] < safe_get(state.vars, "rsi_buy_signal_below",40)
#buy_cond["AND"]["ema_trend_is_falling"] = isfalling(state.indicators.ema,state.vars.Trend)
result, conditions_met = eval_cond_dict(buy_cond)
if result:

View File

@ -6,7 +6,7 @@ from appdirs import user_data_dir
NORMALIZED_TICK_BASE_PRICE = 30.00
LOG_RUNNER_EVENTS = False
#no print in console
QUIET_MODE = True
QUIET_MODE = False
#how many consecutive trades with the fill price are necessary for LIMIT fill to happen in backtesting
#0 - optimistic, every knot high will fill the order
#N - N consecutive trades required

View File

@ -420,7 +420,8 @@ class Strategy:
rt_out["trades"] = item
#get only last values from indicators, if there are any indicators present
if len(self.state.indicators) > 0:
#standardni indikatory plnime jen na confirmed bar pro real time
if len(self.state.indicators) > 0 and item['confirmed'] == 1:
rt_out["indicators"] = dict()
for key, value in self.state.indicators.items():
#odchyceny pripad, kdy indikatory jsou inicializovane, ale jeste v nich nejsou data, pak do WS nic neposilame
@ -429,7 +430,8 @@ class Strategy:
#zatim takto odchycene identifikatory, ktere nemaji list, ale dict - do budoucna predelat na samostatny typ "indicators_static"
except IndexError:
pass
#populate cbar indicators
#populate cbar indicators, plnime pokazde
if len(self.state.cbar_indicators) > 0:
for key, value in self.state.cbar_indicators.items():
try: