# Jak vytvořit obchodní systém (spekulace na mince, nejpodrobnější strategie)

By [BTC](https://paragraph.com/@btc-98) · 2022-09-05

---

1.  Chcete-li vytvořit obchodní systém pro spekulace s mincemi, musíte se osobně naučit mnoho počítačových a finančních znalostí. (1) Načítání dat
    

Step 1: load dataset and generate features
==========================================

def prepare\_data(codes=\['000300.SH', '399006.SZ'\], start\_time="20100101", end\_time="20211231"): df = load\_data(codes, start\_time, end\_time)

    df\["rsi"\] = ta.RSI(df.close, timeperiod=14)
    df\["to_buy"\] = ""
    df.loc\[df\["rsi"\] <= 30, 'to_buy'\] = True
    df\['to_buy'\] = df\['to_buy'\].astype('bool')
    
    df\["to_sell"\] = ""
    df.loc\[df\["rsi"\] >= 70, 'to_sell'\] = True
    df\['to_sell'\] = df\['to_sell'\].astype('bool')
    return df
    

Krok 2: Určení strategie Pravidla strategie jsou velmi jednoduchá.

*   Počáteční hodnota účtu je 100000, každá akcie má stejnou váhu.
    
*   Nákup podle nákupního signálu a prodej podle prodejního signálu dat
    

Step 2: prepare strategy
========================

class SelectBySignal(object): def \__init_\_(self, signal\_buy='to\_buy', signal\_sell='to\_sell'): super(SelectBySignal, self).\__init_\_() self.signal\_buy = signal\_buy self.signal\_sell = signal\_sell

    def \__call_\_(self, context):
        bar = context\['bar'\].copy()
    
        acc = context\['acc'\]
        holding = acc.get_holding_instruments()
    
        to_buy = list(bar\[bar\[self.signal_buy\]\].index)
        to_sell = list(bar\[bar\[self.signal_sell\]\].index)
    
        instruments = to_buy + holding
        to_selected = \[\]
        for s in instruments:
            if s not in to_sell:
                to_selected.append(s)
        context\['selected'\] = to_selected
    
        n = len(to_selected)
        if n > 0:
            context\['weights'\] = {code:1/n for code in to_selected}
        else:
            context\['weights'\] = {}
        return False
    

class Strategy: def \__init_\_(self, algo=None): self.algo = algo self.acc = Account()

    def algo_processor(self, context):
        if self.algo(context) is True: #如果algo返回True,直接不运行，本次不调仓
            return None
        return context\['weights'\]
    
    def onbar(self, index, date, df_bar):
        self.acc.update_bar(date, df_bar)
        weights = self.algo_processor({'index': index, 'bar':df_bar, 'date':date, 'acc':self.acc})
        if weights is not None:
            self.acc.adjust_weights(date, weights)
    

Krok 3: Zpětné testování Zpětné testování na základě výše uvedených údajů a strategie

Step 3: backtest
================

class Backtest: def \__init_\_(self, df): self.df = df self.dates = self.df.index.unique() self.observers = \[\]

    def onbar(self, index, date):
        df_bar = self.df.loc\[date\]
        if type(df_bar) is pd.Series:
            df_bar = df_bar.to_frame().T
    
        df_bar.index = df_bar\['code'\]
        self.strategy.onbar(index, date, df_bar)
    
    def run(self, s):
        self.strategy = s
        for index, date in enumerate(self.dates):
            self.onbar(index, date)
        return self.get_results()
    
    def get_results(self):
        s = self.strategy
        df = s.acc.get_results_df()
        return df
    

Krok 4: Analýza Analyzujte výkonnost strategie a porovnejte ji s indexem CSI 300.

Step 4: analysis
================

def analysis(start, end, benchmarks=\[\]): equities = \[\] for benchmark in benchmarks: bench\_df = load\_from\_file(benchmark)\[start:end\] se = (bench\_df\['rate'\] + 1).cumprod() se.name = benchmark equities.append(se)

    path = os.path.dirname(\__file_\_)
    filename = os.path.dirname(path)+'/results/first_test.csv'
    if os.path.exists(filename):
        df = pd.read_csv(filename)
        df\['date'\] = df\['date'\].apply(lambda x: str(x))
        df.index = df\['date'\]
        se = (df\['rate'\] + 1).cumprod()
        se.name = 'strategy'
        equities.append(se)
    
    df_equities = pd.concat(equities, axis=1)
    df_equities.dropna(inplace=True)
    print(df_equities)
    
    from performance import PerformanceUtils
    
    df_ratios, df_corr, df_years = PerformanceUtils().calc_equity(df_equity=df_equities)
    return df_equities, df_ratios, df_corr, df_years
    

Spuštění hlavní funkce if \__name_\_ == '\__main_\_': date\_start = "20100101" date\_end = "20211231" df = prepare\_data(codes=\['000300.SH', '399006.SZ'\], start\_time=date\_start, end\_time=date\_end)

    algo = SelectBySignal(signal_buy='to_buy', signal_sell='to_sell')
    s = Strategy(algo=algo)
    
    b = Backtest(df=df)
    df = b.run(s)
    
    path = os.path.dirname(\__file_\_)
    df.to_csv(os.path.dirname(path) + '/results/first_test.csv')
    
    df_equities, df_ratios, df_corr, df_years = analysis(start=date_start, end=date_end, benchmarks=\['000300.SH'\])
    display(df_ratios)
    
    fig = plt.figure(figsize=(8, 6))
    ax1 = fig.add_subplot(2, 1, 1)
    ax2 = fig.add_subplot(2, 1, 2)
    df_equities.plot(ax=ax1)
    if df_years is not None:
        print(df_years)
        df_years.T.plot(kind='bar', ax=ax2, use_index=True)
    plt.show()
    

1.  Výše představený obsah se týká pouze základů kryptoměn, které souvisejí s tím, zda můžeme prostřednictvím kryptoměn vydělávat peníze. Kryptoměny vydělávají peníze nejen vědeckými metodami zvyšování příjmů, ale také hledáním způsobů, jak peníze ušetřit. Manipulační poplatky jsou sice malé, ale nelze je ignorovat. Vypočítal jsem, že při častých transakcích a dlouhých obchodních hodinách může kumulace poplatků za rok dosáhnout více než 10 000 U. Dále představím několik běžných způsobů, jak snížit poplatky na velkých obchodních platformách. (1) Snížení poplatků Binance Binance je v současnosti největší burza digitálních měn na světě a pokud chcete spekulovat na mince, musíte se na ni zaregistrovat. Poplatek za transakci se odečítá od přijatých aktiv. Pokud například koupíte Ethereum/USDT, poplatek se platí v Ethereu. Pokud prodáváte Ethereum/USDT, provize se vyplácí v USDT. Příklad. Zadáte objednávku na 10Ethereum za cenu 3 452,55 USD za akcii. Transakční poplatek = 10Ethereum\*0,1% = 0,01Ethereum Nebo zadáte příkaz k prodeji 10Ethereum za 3 452,55 USDT za akcii. Transakční poplatek = (10Ethereum\*3,452.55USDT)\*0.1% = 34.5255USDT Mnoho lidí neví, že transakční poplatek Binance lze také snížit. Pokud chcete snížit poplatky za obchodování na Binance, musíte se zaregistrovat pomocí níže uvedeného odkazu nebo použít kód pozvánky "Q022W7SC". [https://accounts.binance.com/en/register?ref=Q022W7SC](https://accounts.binance.com/en/register?ref=Q022W7SC)
    

![](https://storage.googleapis.com/papyrus_images/f19165fd4fc9618ab6baebf68984e39c008a70c171918ce030551d07965637b8.png)

(2) Snížení poplatků OKX OKX je profesionální platforma pro obchodování s digitálními měnami, kterou si oblíbilo mnoho uživatelů, a její transakční poplatky lze snížit. V závislosti na objemu transakcí rozděluje OKX své uživatele do dvou úrovní: normální a profesionální. Běžní uživatelé jsou hodnoceni podle svých pozic v OKB, zatímco profesionální uživatelé jsou hodnoceni podle objemu obchodů a velikosti aktiv. Jednotlivé úrovně určují poplatky za obchodování pro následující obchodní den. Při výpočtu výše poplatků, pokud objem obchodování s mincemi, celkový objem obchodování s dodacími a trvalými smlouvami (dodací smlouva USDT, dodací smlouva na bázi mincí, trvalá smlouva USDT, trvalá smlouva na bázi mincí), objem obchodování s opčními smlouvami a objem aktiv splňují podmínky různých úrovní poplatků, budou uživatelé využívat slevu z poplatku nejvyšší úrovně. První metoda: OKX má oficiální maximální úsporu 20 %. Pomocí níže uvedeného odkazu se zaregistrujte u společnosti OKX a ušetřete 20 % na poplatcích. [https://www.ouyi.business/join/BTC1ETH](https://www.ouyi.business/join/BTC1ETH) Druhý způsob: Otevřete webové stránky OKX a na registrační stránce zadejte do pole "Invitation Code" "BTC1ETH", abyste dole viděli procento cashbacku: 20 %. Nezapomeňte zadat tento kód pozvánky, jinak nemůžete získat 20 % cashback. (3) Snížení poplatků za FTX FTX je v současné době velmi rychle rostoucí, hráči smlouvy více výměnu, musíte se zaregistrovat FTX, pokud budete hrát smlouvu. pokud chcete snížit transakční poplatky FTX, musíte použít následující pozvánku odkaz k registraci. [https://ftx.com/referrals#a=121031692](https://ftx.com/referrals#a=121031692) 3, obchodní cesta je dlouhá, spolu s dopředu Chcete se dozvědět více o tom, jak snížit provizi? telegram: btcethcool Založili jsme komunitu věnovanou studiu obchodování, přidejte si přátele na telegramu, abyste se zapojili do komunity.

---

*Originally published on [BTC](https://paragraph.com/@btc-98/jak-vytvo-it-obchodn-syst-m-spekulace-na-mince-nejpodrobn-j-strategie)*
