def start(self): # int pos = Bars - counted_bars; # double MinMax_Svice[2]; MinMax_Svíce = Cena(přesnost=self._info['DIGITS']) # while(pos > 0) # { for data in data_z_csv(self._csv_soubor): self.data = data # print('BAR {} {}'.format(data['BAR'], data['OPEN TIME'])) # if data['BAR'] == 18686: # print('DEBUGUJU') MinMax_Svíce[BUY] = data['HIGHT'] + self.spred_v_pointech MinMax_Svíce[SELL] = data['LOW'] self._přepočítám_profit_při_otevření() self.znamení_sklizně = self.imam_znameni_ke_sklizni() # assert self.znamení_sklizně == data['znamení sklizně'] # sklizeň if self.znamení_sklizně: if self.imam_profit(): self.zavru_vse_pri_otevreni_svice() self.da_li_seju = self._da_li_třeba_zaset() assert self.da_li_seju == data['da li seju'] # setba if self.da_li_seju: #print('TOZ SEJU') self.ohrada[BUY] = data[ 'OPEN'] + self.odstup_v_pointech + self.spred_v_pointech self.ohrada[SELL] = data['OPEN'] - self.odstup_v_pointech assert self.ohrada[SELL] == data['medvědí ohrada'] assert self.ohrada[BUY] == data['býčí ohrada'] self.čekaná[BUY] = self.ohrada[BUY] self.čekaná[SELL] = self.ohrada[SELL] self.hranice[BUY] = MinMax_Svíce[BUY] self.hranice[SELL] = MinMax_Svíce[SELL] assert self.hranice[BUY] == data['hranice býka'] assert self.hranice[SELL] == data['hranice medvěda'] self.prepocitam_obchody(směrem=BUY) self.prepocitam_obchody(směrem=SELL) # růst for směrem in BUY, SELL: if self.hranice[směrem] > 0 and ( self.hranice[směrem] - MinMax_Svíce[směrem]) * self.směr[směrem] < 0: self.hranice[směrem] = MinMax_Svíce[směrem] self.prepocitam_obchody(směrem) # // včíl máme zjištěné koliko obchodů s eběhem svíce otevře # // nevíme sice v jakém pořadí, ale nejméně příznivý scénář beru takto # // hore počítám, že s eotevřely aj všechny protipozice, takže zisk je o to nižší # // a dole naopak počítám s otevřenými všemi horními pozicemi # // při zavření je to jasné, tam budou jistě otevřeny horní i dolní pozice # prepocitam_profit_na_svici(pos); self._přepočítám_profit_na_svíci() yield data
def __iter__(self, AOSy = []): for data in data_z_csv(self.zdrojové_csv, self.mapa_tříd): if data[OPEN_TIME].timestamp == 0: print('Přeskakuji svíčku {} koja nemá ceny'.format(data[BAR])) continue self.data = data # for aos in AOSy: # funkce_události = aos.get('pří_otevření_svíčky', None) # if callable(funkce_události): # funkce_události(self) # print(data[OPEN]) # print('-' * 44) # print('BAR {} {}'.format(data['BAR'], data['OPEN TIME'])) if self.počáteční_čas is None: self.počáteční_čas = data[OPEN_TIME] if self.počet_svíček is None: self.počet_svíček = data[BAR] self.konečný_čas = data[OPEN_TIME] self.zisk_při_otevření = self.obchody.zisk(data[OPEN]) self.obchody.swapuji(data[OPEN_TIME]) self.samoj_bolšoj_otevřený_zisk[OPEN] = max(self.samoj_bolšoj_otevřený_zisk[OPEN] or 0, self.zisk_při_otevření) self.samaja_bolšaja_otevřená_ztráta[OPEN] = min(self.samaja_bolšaja_otevřená_ztráta[OPEN] or 0, self.zisk_při_otevření) celkový_zisk = self.zisk_při_otevření + self.obchody.uložený_zisk + self.obchody.swap self.samoj_bolšoj_celkový_zisk[OPEN] = max(self.samoj_bolšoj_celkový_zisk[OPEN] or 0, celkový_zisk) self.samaja_bolšaja_celková_ztráta[OPEN] = min(self.samaja_bolšaja_celková_ztráta[OPEN] or 0, celkový_zisk) self.znamení_sklizně = self.__imam_znameni_ke_sklizni() # assert self.znamení_sklizně == data['znamení sklizně'] # sklizeň if self.znamení_sklizně is True: if self.zisk_při_otevření + self.obchody.swap > self.info['sklízím při zisku']: self.obchody.zavřu_obchody(čas_zavření = data[OPEN_TIME], cena_zavření = data[OPEN]) self.medvědiště = None self.býčiště = None else: umenšeno = self.obchody.umenším_pozice(čas_zavření = data[OPEN_TIME], cena_zavření = data[OPEN]) if umenšeno: self.medvědiště.přitáhni_k_ceně(data[OPEN]) self.býčiště.přitáhni_k_ceně(data[OPEN]) self.znamení_setby = self.__da_li_třeba_zaset() if self.znamení_setby is True: # vytáhnu z info odstup = self.info['odstup'] rozestup = self.info['rozestup'] # dosadím a spočítám # self.ohrada = {HORE: data[OPEN] + odstup + spred, DOLE: data[OPEN] - odstup} self.medvědiště = generátor_medvědů(start = data[OPEN], odstup = odstup, rozestup = rozestup) self.býčiště = generátor_býků(start = data[OPEN], odstup = odstup, rozestup = rozestup) for čekaná, klíč in (self.býčiště, HIGHT), (self.medvědiště, LOW): if čekaná is not None: k_ceně = data[klíč] for nová_cena in čekaná(k_ceně): # GAP if čekaná < data[OPEN]: if not čekaná < self.předchozí_data[CLOSE]: self.obchody.zruším_obchod_gapem(směrem = čekaná.směrem, čas = data[OPEN_TIME], cena = nová_cena, velikost = self.info['sázím loty']) else: self.obchody.otevřu_nový_obchod(směrem = čekaná.směrem, cena = nová_cena, velikost = self.info['sázím loty'], čas = data[OPEN_TIME]) # print('nový obchod z ' + směr, nová_cena, čekaná) self.samoj_bolšoj_býk = max(self.samoj_bolšoj_býk or 0, self.obchody.býci.velikost ) self.samoj_bolšoj_medvěd = max(self.samoj_bolšoj_medvěd or 0, self.obchody.medvědi.velikost) velikost_postavení = self.obchody.velikost self.samaja_bolšaja_velikost[HORE] = max(self.samaja_bolšaja_velikost[HORE] or 0, velikost_postavení) self.samaja_bolšaja_velikost[DOLE] = min(self.samaja_bolšaja_velikost[DOLE] or 0, velikost_postavení) for KLÍČ_NA_CENĚ in HIGHT, LOW, CLOSE: zisk = self.obchody.zisk(data[KLÍČ_NA_CENĚ]) self.samoj_bolšoj_otevřený_zisk[KLÍČ_NA_CENĚ] = max(self.samoj_bolšoj_otevřený_zisk[KLÍČ_NA_CENĚ] or 0, zisk) self.samaja_bolšaja_otevřená_ztráta[KLÍČ_NA_CENĚ] = min(self.samaja_bolšaja_otevřená_ztráta[KLÍČ_NA_CENĚ] or 0, zisk) celkový_zisk = zisk + self.obchody.uložený_zisk + self.obchody.swap self.samoj_bolšoj_celkový_zisk[KLÍČ_NA_CENĚ] = max(self.samoj_bolšoj_celkový_zisk[KLÍČ_NA_CENĚ] or 0, celkový_zisk) self.samaja_bolšaja_celková_ztráta[KLÍČ_NA_CENĚ] = min(self.samaja_bolšaja_celková_ztráta[KLÍČ_NA_CENĚ] or 0, celkový_zisk) yield self self.předchozí_data = data
def __iter__(self, AOSy=[]): for data in data_z_csv(self.zdrojové_csv, self.mapa_tříd): if data[OPEN_TIME].timestamp == 0: print('Přeskakuji svíčku {} koja nemá ceny'.format(data[BAR])) continue self.data = data # for aos in AOSy: # funkce_události = aos.get('pří_otevření_svíčky', None) # if callable(funkce_události): # funkce_události(self) # print(data[OPEN]) # print('-' * 44) # print('BAR {} {}'.format(data['BAR'], data['OPEN TIME'])) if self.počáteční_čas is None: self.počáteční_čas = data[OPEN_TIME] if self.počet_svíček is None: self.počet_svíček = data[BAR] self.konečný_čas = data[OPEN_TIME] self.zisk_při_otevření = self.obchody.zisk(data[OPEN]) self.obchody.swapuji(data[OPEN_TIME]) self.samoj_bolšoj_otevřený_zisk[OPEN] = max( self.samoj_bolšoj_otevřený_zisk[OPEN] or 0, self.zisk_při_otevření) self.samaja_bolšaja_otevřená_ztráta[OPEN] = min( self.samaja_bolšaja_otevřená_ztráta[OPEN] or 0, self.zisk_při_otevření) celkový_zisk = self.zisk_při_otevření + self.obchody.uložený_zisk + self.obchody.swap self.samoj_bolšoj_celkový_zisk[OPEN] = max( self.samoj_bolšoj_celkový_zisk[OPEN] or 0, celkový_zisk) self.samaja_bolšaja_celková_ztráta[OPEN] = min( self.samaja_bolšaja_celková_ztráta[OPEN] or 0, celkový_zisk) self.znamení_sklizně = self.__imam_znameni_ke_sklizni() # assert self.znamení_sklizně == data['znamení sklizně'] # sklizeň if self.znamení_sklizně is True: if self.zisk_při_otevření + self.obchody.swap > self.info[ 'sklízím při zisku']: self.obchody.zavřu_obchody(čas_zavření=data[OPEN_TIME], cena_zavření=data[OPEN]) self.medvědiště = None self.býčiště = None else: umenšeno = self.obchody.umenším_pozice( čas_zavření=data[OPEN_TIME], cena_zavření=data[OPEN]) if umenšeno: self.medvědiště.přitáhni_k_ceně(data[OPEN]) self.býčiště.přitáhni_k_ceně(data[OPEN]) self.znamení_setby = self.__da_li_třeba_zaset() if self.znamení_setby is True: # vytáhnu z info odstup = self.info['odstup'] rozestup = self.info['rozestup'] # dosadím a spočítám # self.ohrada = {HORE: data[OPEN] + odstup + spred, DOLE: data[OPEN] - odstup} self.medvědiště = generátor_medvědů(start=data[OPEN], odstup=odstup, rozestup=rozestup) self.býčiště = generátor_býků(start=data[OPEN], odstup=odstup, rozestup=rozestup) for čekaná, klíč in (self.býčiště, HIGHT), (self.medvědiště, LOW): if čekaná is not None: k_ceně = data[klíč] for nová_cena in čekaná(k_ceně): # GAP if čekaná < data[OPEN]: if not čekaná < self.předchozí_data[CLOSE]: self.obchody.zruším_obchod_gapem( směrem=čekaná.směrem, čas=data[OPEN_TIME], cena=nová_cena, velikost=self.info['sázím loty']) else: self.obchody.otevřu_nový_obchod( směrem=čekaná.směrem, cena=nová_cena, velikost=self.info['sázím loty'], čas=data[OPEN_TIME]) # print('nový obchod z ' + směr, nová_cena, čekaná) self.samoj_bolšoj_býk = max(self.samoj_bolšoj_býk or 0, self.obchody.býci.velikost) self.samoj_bolšoj_medvěd = max(self.samoj_bolšoj_medvěd or 0, self.obchody.medvědi.velikost) velikost_postavení = self.obchody.velikost self.samaja_bolšaja_velikost[HORE] = max( self.samaja_bolšaja_velikost[HORE] or 0, velikost_postavení) self.samaja_bolšaja_velikost[DOLE] = min( self.samaja_bolšaja_velikost[DOLE] or 0, velikost_postavení) for KLÍČ_NA_CENĚ in HIGHT, LOW, CLOSE: zisk = self.obchody.zisk(data[KLÍČ_NA_CENĚ]) self.samoj_bolšoj_otevřený_zisk[KLÍČ_NA_CENĚ] = max( self.samoj_bolšoj_otevřený_zisk[KLÍČ_NA_CENĚ] or 0, zisk) self.samaja_bolšaja_otevřená_ztráta[KLÍČ_NA_CENĚ] = min( self.samaja_bolšaja_otevřená_ztráta[KLÍČ_NA_CENĚ] or 0, zisk) celkový_zisk = zisk + self.obchody.uložený_zisk + self.obchody.swap self.samoj_bolšoj_celkový_zisk[KLÍČ_NA_CENĚ] = max( self.samoj_bolšoj_celkový_zisk[KLÍČ_NA_CENĚ] or 0, celkový_zisk) self.samaja_bolšaja_celková_ztráta[KLÍČ_NA_CENĚ] = min( self.samaja_bolšaja_celková_ztráta[KLÍČ_NA_CENĚ] or 0, celkový_zisk) yield self self.předchozí_data = data
def start(self): # int pos = Bars - counted_bars; # double MinMax_Svice[2]; MinMax_Svíce = Cena(přesnost = self._info['DIGITS']) # while(pos > 0) # { for data in data_z_csv(self._csv_soubor): self.data = data # print('BAR {} {}'.format(data['BAR'], data['OPEN TIME'])) # if data['BAR'] == 18686: # print('DEBUGUJU') MinMax_Svíce[BUY] = data['HIGHT'] + self.spred_v_pointech MinMax_Svíce[SELL] = data['LOW'] self._přepočítám_profit_při_otevření() self.znamení_sklizně = self.imam_znameni_ke_sklizni() # assert self.znamení_sklizně == data['znamení sklizně'] # sklizeň if self.znamení_sklizně: if self.imam_profit(): self.zavru_vse_pri_otevreni_svice() self.da_li_seju = self._da_li_třeba_zaset() assert self.da_li_seju == data['da li seju'] # setba if self.da_li_seju: #print('TOZ SEJU') self.ohrada[BUY] = data['OPEN'] + self.odstup_v_pointech + self.spred_v_pointech self.ohrada[SELL] = data['OPEN'] - self.odstup_v_pointech assert self.ohrada[SELL] == data['medvědí ohrada'] assert self.ohrada[BUY] == data['býčí ohrada'] self.čekaná[BUY] = self.ohrada[BUY] self.čekaná[SELL] = self.ohrada[SELL] self.hranice[BUY] = MinMax_Svíce[BUY] self.hranice[SELL] = MinMax_Svíce[SELL] assert self.hranice[BUY] == data['hranice býka'] assert self.hranice[SELL] == data['hranice medvěda'] self.prepocitam_obchody(směrem = BUY) self.prepocitam_obchody(směrem = SELL) # růst for směrem in BUY, SELL: if self.hranice[směrem] > 0 and (self.hranice[směrem] - MinMax_Svíce[směrem] ) * self.směr[směrem] < 0: self.hranice[směrem] = MinMax_Svíce[směrem] self.prepocitam_obchody(směrem) # // včíl máme zjištěné koliko obchodů s eběhem svíce otevře # // nevíme sice v jakém pořadí, ale nejméně příznivý scénář beru takto # // hore počítám, že s eotevřely aj všechny protipozice, takže zisk je o to nižší # // a dole naopak počítám s otevřenými všemi horními pozicemi # // při zavření je to jasné, tam budou jistě otevřeny horní i dolní pozice # prepocitam_profit_na_svici(pos); self._přepočítám_profit_na_svíci() yield data
def __iter__(self, AOSy=[]): první_svíčka = True for data in data_z_csv(self.zdrojové_csv, self.mapa_tříd): if data[OPEN_TIME].timestamp == 0: print("Přeskakuji svíčku {} koja nemá otevírací dobu".format(data[BAR])) continue if data[OPEN].prodej == 0: print("Přeskakuji svíčku {} koja nemá ceny".format(data[BAR])) continue if data[BB_MAIN].prodej == 0: print("Přeskakuji svíčku {} koja nemá bb indikátor".format(data[BAR])) continue self.data = data # for aos in AOSy: # funkce_události = aos.get('pří_otevření_svíčky', None) # if callable(funkce_události): # funkce_události(self) # print(data[OPEN]) # print('-' * 44) # print('BAR {} {}'.format(data['BAR'], data['OPEN TIME'])) # print('*'*44) # print(data[BAR], data[OPEN_TIME], data[OPEN]) # print('-'*44) if první_svíčka is True: self.statistika.na_první_svíčce() první_svíčka = False self.obchody.swapuji(data[OPEN_TIME]) self.statistika.pří_otevření_svíčky() zisk_při_otevření = self.statistika.zisk_při_otevření self.znamení_sklizně = self.__imam_znameni_ke_sklizni() # sklizeň if self.znamení_sklizně is True: if zisk_při_otevření + self.obchody.swap > self.info["sklízím při zisku"]: print("-" * 44) print("sklízím při dosažení zisku") self.obchody.zavřu_obchody(čas_zavření=data[OPEN_TIME], cena_zavření=data[OPEN]) # self.medvědiště = None # self.býčiště = None # else: # umenšeno = self.obchody.umenším_pozice(čas_zavření = data[OPEN_TIME], cena_zavření = data[OPEN]) # if umenšeno: # self.medvědiště.přitáhni_k_ceně(data[OPEN]) # self.býčiště.přitáhni_k_ceně(data[OPEN]) # if self.znamení_setby is True: # vytáhnu z info odstup = self.info["odstup"] rozestup = self.info["rozestup"] bb_hore = data[BB_HORE] bb_main = data[BB_MAIN] bb_dole = data[BB_DOLE] open = data[OPEN] hight = data[HIGHT] low = data[LOW] # nejprve zadám objednávky for cena in generuji_býky(od_ceny=bb_hore.prodej, k_ceně=hight.nákup + rozestup, rozestup=rozestup): if cena in self.býci.keys(): continue protiobchod = self.medvědi.get(cena + rozestup, None) if protiobchod is not None: protiobchod.stoploss(cena) else: self.čekám_hore.append(cena) for cena in generuji_medvědy(od_ceny=bb_dole.prodej, k_ceně=low.prodej - rozestup, rozestup=rozestup): if cena in self.medvědi.keys(): continue protiobchod = self.býci.get(cena - rozestup, None) if protiobchod is not None: protiobchod.stoploss(cena) else: self.čekám_dole.append(cena) # pak zavřu stoplosy self.obchody.zavřu_stoplos(od_ceny=low, k_ceně=hight) # a otevřu for cena in generuji_býky(od_ceny=open.nákup, k_ceně=hight.nákup, rozestup=rozestup): if cena in self.čekám_hore: self.obchody.otevřu_nový_obchod( směrem=HORE, cena=cena, velikost=self.info["sázím loty"], čas=data[OPEN_TIME] ) self.čekám_hore.remove(cena) for cena in generuji_medvědy(od_ceny=open.prodej, k_ceně=low.prodej, rozestup=rozestup): if cena in self.čekám_dole: self.obchody.otevřu_nový_obchod( směrem=DOLE, cena=cena, velikost=self.info["sázím loty"], čas=data[OPEN_TIME] ) self.čekám_dole.remove(cena) self.statistika.pří_zavření_svíčky() yield self self.předchozí_data = data