Cum să construiești un sistem de tranzacționare (pentru speculația cu monede, cea mai detaliată strategie)
  1. Pentru a construi un sistem de tranzacționare pentru speculațiile cu monede, trebuie să învățați personal o mulțime de cunoștințe informatice și financiare.
    (1) Încărcarea datelor

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

Pasul 2: Specificați o strategie
Regulile strategiei sunt foarte simple.

  • Valoarea inițială a contului 100000, fiecare stoc are aceeași pondere
  • Cumpărați în funcție de semnalul de cumpărare și vindeți în funcție de semnalul de vânzare al datelor

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)

Pasul 3: Backtesting
Backtesting bazat pe datele și strategia de mai sus

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

Pasul 4: Analiza
Analizați performanța strategiei și comparați-o cu cea a indicelui 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

Rulați funcția principală
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. Conținutul introdus mai sus se referă doar la elementele de bază ale criptomonedelor, care se referă la faptul dacă putem face bani prin intermediul criptomonedelor. Criptomonedele fac bani nu numai prin metode științifice de creștere a veniturilor, ci și prin găsirea unor modalități de a economisi bani. Taxele de manipulare sunt mici, dar nu trebuie ignorate. Am calculat că, în cazul tranzacțiilor frecvente și al orelor lungi de tranzacționare, acumularea comisioanelor poate ajunge la mai mult de 10.000 U pe an. În continuare voi prezenta câteva modalități obișnuite de reducere a comisioanelor pe platformele de tranzacționare mari.
    (1) Scăderea comisioanelor Binance
    Binance este în prezent cea mai mare bursă de valută digitală din lume și trebuie să vă înscrieți la Binance dacă doriți să speculați pe monede. Comisionul de tranzacție este dedus din activele primite. De exemplu, dacă cumpărați Ethereum/USDT, taxa este plătită în Ethereum. Dacă vindeți Ethereum/USDT, comisionul este plătit în USDT.
    Exemplu.
    Plasați un ordin pentru 10Ethereum la un preț de 3 452,55 USD pe acțiune.
    Taxa de tranzacție = 10Ethereum0.1% = 0.01Ethereum
    Sau plasați un ordin de vânzare a 10Ethereum la 3.452,55 USDT pe acțiune.
    Taxa de tranzacție = (10Ethereum
    3,452.55USDT)*0.1% = 34.5255USDT
    Ceea ce mulți oameni nu știu este că taxa de tranzacționare Binance poate fi, de asemenea, redusă. Dacă doriți să vă reduceți taxele de tranzacționare Binance, trebuie să utilizați link-ul de invitație de mai jos sau să utilizați codul de invitație "Q022W7SC" pentru a vă înregistra.
    https://accounts.binance.com/en/register?ref=Q022W7SC

(2) Reducerea taxelor OKX
OKX este o platformă profesională de tranzacționare a monedelor digitale, apreciată de mulți utilizatori, iar taxele de tranzacționare pot fi reduse.
În funcție de volumul de tranzacții, OKX își împarte utilizatorii în două niveluri: normal și profesional. Utilizatorii obișnuiți sunt clasificați în funcție de pozițiile lor OKB, în timp ce utilizatorii profesioniști sunt clasificați în funcție de volumul de tranzacționare și de mărimea activelor. Diferitele niveluri determină comisioanele de tranzacționare pentru următoarea zi de tranzacționare.
La calcularea nivelurilor de taxe, dacă volumul de tranzacționare a monedelor, volumul total de tranzacționare a contractelor de livrare și perpetue (contract de livrare USDT, contract de livrare bazat pe monede, contract perpetuu USDT, contract perpetuu bazat pe monede), volumul de tranzacționare a contractelor de opțiuni și volumul de active îndeplinesc condițiile diferitelor niveluri de taxe, utilizatorii vor beneficia de reducerea de taxe de cel mai înalt nivel.
Prima metodă: OKX are o rată maximă oficială de economisire de 20%. Utilizați link-ul de mai jos pentru a vă înregistra cu OKX și pentru a economisi 20% din taxe.
https://www.ouyi.business/join/BTC1ETH
A doua metodă: Deschideți site-ul OKX și introduceți "BTC1ETH" în "Codul de invitație" de pe pagina de înregistrare pentru a vedea procentul de cashback: 20% în partea de jos.
Asigurați-vă că introduceți acest cod de invitație, altfel nu puteți obține un procent de 20% cashback.
(3) Reducerea taxelor FTX
FTX este în prezent un foarte rapid în creștere, jucătorii de contract mai mult de schimb, trebuie să vă înregistrați FTX dacă jucați contractul. dacă doriți să reduceți taxele de tranzacționare FTX, trebuie să utilizați următorul link de invitație pentru a vă înregistra.
https://ftx.com/referrals#a=121031692
3, drumul de tranzacționare este lung, împreună cu înaintarea
Doriți să aflați mai multe despre cum să reduceți comisionul?
telegramă: btcethcool
Am înființat o comunitate dedicată studiului de tranzacționare, adăugați prieteni pe telegramă pentru a vă atrage în comunitate.

Subscribe to BTC
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.