
Subscribe to BTC

Subscribe to BTC
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
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
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
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
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.
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()
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

(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 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 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.
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
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
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
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.
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()
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

(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 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 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.
No activity yet