From eae57dc619e35ee96c17da80f54f348aab397f25 Mon Sep 17 00:00:00 2001 From: David Brazda Date: Thu, 20 Apr 2023 15:12:30 +0200 Subject: [PATCH] podpora defenzivni krivky --- v2realbot/ENTRY_backtest_strategyVykladaci.py | 23 ++++++++++++++++-- v2realbot/__pycache__/config.cpython-310.pyc | Bin 2590 -> 2590 bytes .../strategy/StrategyOrderLimitVykladaci.py | 2 +- ...trategyOrderLimitVykladaci.cpython-310.pyc | Bin 6512 -> 6541 bytes 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/v2realbot/ENTRY_backtest_strategyVykladaci.py b/v2realbot/ENTRY_backtest_strategyVykladaci.py index e4558dd..7bf6873 100644 --- a/v2realbot/ENTRY_backtest_strategyVykladaci.py +++ b/v2realbot/ENTRY_backtest_strategyVykladaci.py @@ -44,6 +44,7 @@ stratvars = AttributeDict(maxpozic = 400, jevylozeno=0, vykladka=5, curve = [0.01, 0.01, 0.01, 0, 0.02, 0.02, 0.01,0.01, 0.01,0.03, 0.01, 0.01, 0.01,0.04, 0.01,0.01, 0.01,0.05, 0.01,0.01, 0.01,0.01, 0.06,0.01, 0.01,0.01, 0.01], + curve_def = [0.02, 0.02, 0.02, 0, 0, 0.02, 0, 0, 0, 0.02], blockbuy = 0, ticks2reset = 0.04, consolidation_bar_count = 10, @@ -96,11 +97,28 @@ def next(data, state: StrategyState): ##prvni se vyklada na aktualni cenu, další jdou podle krivky, nula v krivce zvyšuje množství pro následující iteraci #curve = [0.01, 0.01, 0, 0, 0.01, 0, 0, 0, 0.02, 0, 0, 0, 0.03, 0,0,0,0,0, 0.02, 0,0,0,0,0,0, 0.02] curve = state.vars.curve - + ##defenzivni krivka pro + curve_def = state.vars.curve_def #vykladani po 5ti kusech, když zbývají 2 a méně, tak děláme nový výklad vykladka = state.vars.vykladka #kolik muzu max vylozit kolikmuzu = int((int(state.vars.maxpozic) - int(state.positions))/int(state.vars.chunk)) + akt_pozic = int((int(state.positions))/int(state.vars.chunk)) #20 + max_pozic = int((int(state.vars.maxpozic))/int(state.vars.chunk)) #40 + + #mame polovinu a vic vylozeno, pouzivame defenzicni krivku + if (akt_pozic >= max_pozic/2): + state.ilog(e="DEF: Mame pul a vic vylozeno, pouzivame defenzivni krivku", akt_pozic=akt_pozic, max_pozic=max_pozic, curve_def=curve_def) + curve = curve_def + #zaroven docasne menime ticks2reset na defenzivni 0.06 + state.vars.ticks2reset = 0.06 + state.ilog(e="DEF: Menime tick2reset na 0.06", ticks2reset=state.vars.ticks2reset, ticks2reset_backup=state.vars.ticks2reset_backup) + else: + #vracime zpet, pokud bylo zmeneno + if state.vars.ticks2reset != state.vars.ticks2reset_backup: + state.vars.ticks2reset = state.vars.ticks2reset_backup + state.ilog(e="DEF: Menime tick2reset zpet na"+str(state.vars.ticks2reset), ticks2reset=state.vars.ticks2reset, ticks2reset_backup=state.vars.ticks2reset_backup) + if kolikmuzu < vykladka: vykladka = kolikmuzu if len(curve) < vykladka: @@ -178,7 +196,7 @@ def next(data, state: StrategyState): #state.indicators.roc.append(roc) #print("slope", state.indicators.slope[-5:]) - state.ilog(e="Slope "+str(slope), msg="lookback price:"+str(lookbackprice), lookbackoffset=lookback_offset, minimum_slope=minimum_slope, last_slopes=state.indicators.slope[-5:]) + state.ilog(e="Slope "+str(slope), msg="lookback price:"+str(lookbackprice), lookbackoffset=lookback_offset, minimum_slope=minimum_slope, last_slopes=state.indicators.slope[-10:]) else: state.ilog(e="Slope - not enough data", slope_lookback=slope_lookback) @@ -362,6 +380,7 @@ def init(state: StrategyState): state.indicators['slope'] = [] #static indicators - those not series based state.statinds['angle'] = {} + state.vars["ticks2reset_backup"] = state.vars.ticks2reset #state.indicators['roc'] = [] #state.ilog(e="INIT", stratvars=state.vars) diff --git a/v2realbot/__pycache__/config.cpython-310.pyc b/v2realbot/__pycache__/config.cpython-310.pyc index ef0b8b1f6173a79e71769bdd10d71d7d0023098f..56838a3a7cbb93a0b17ea521007eec2a6f9d1179 100644 GIT binary patch delta 19 ZcmbOyGEamnpO=@50SJB>ZR8T+0st#G1P1^B delta 19 ZcmbOyGEamnpO=@50SJoaH*$$^0RShj18o2R diff --git a/v2realbot/strategy/StrategyOrderLimitVykladaci.py b/v2realbot/strategy/StrategyOrderLimitVykladaci.py index 49ede6a..1b23059 100644 --- a/v2realbot/strategy/StrategyOrderLimitVykladaci.py +++ b/v2realbot/strategy/StrategyOrderLimitVykladaci.py @@ -111,7 +111,7 @@ class StrategyOrderLimitVykladaci(Strategy): if price is None: price=price2dec((self.state.interface.get_last_price(self.symbol))) ic(price) print("odesilame LIMIT s cenou/qty", price, size) - self.state.ilog(e="odesilame buy_l do if", price=price, size=size) + self.state.ilog(e="send buy to if", msg="S:"+str(size)+" P:"+str(price), price=price, size=size) order = self.state.interface.buy_l(price=price, size=size) print("ukladame pendingbuys") self.state.vars.pendingbuys[str(order)]=price diff --git a/v2realbot/strategy/__pycache__/StrategyOrderLimitVykladaci.cpython-310.pyc b/v2realbot/strategy/__pycache__/StrategyOrderLimitVykladaci.cpython-310.pyc index b05b3bf76168841f618c9021bedc2518eb5e8bdc..22523dc08e15554b3a4334f8f8a6381c4d58de26 100644 GIT binary patch delta 226 zcmexh)N9O}&&$ij00i-xjwyFG@=gK8G$m4U^$j7exNRvW=0!^6dsUB zyZ~5SFojo=A%$;psgSlbR0T|Zia;+jBSQ*9FoUMxrIiXL`3jk7 rRZPKFRm=(jR+=nDxJ;FuVHCsv|&i$0*S;6fW-wO2JU#E VGmD%+gzaQmktjx?%@rb|tN_@tFv