
Subscribe to BTC

Subscribe to BTC
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
Madeni para spekülasyonu için bir ticaret sistemi oluşturmak için, kişisel olarak çok sayıda bilgisayar ve finansal bilgi öğrenmeniz gerekir. (1) Veri yükleme
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
Adım 2: Bir strateji belirleyin Strateji kuralları çok basittir.
Hesabın başlangıç değeri 100000'dir, her hisse senedi aynı ağırlığa sahiptir
Verilerin alış sinyaline göre al ve satış sinyaline göre sat
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)
Adım 3: Geriye dönük test Yukarıdaki verilere ve stratejiye dayalı geriye dönük test
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
Adım 4: Analiz Stratejinin performansını analiz edin ve CSI 300 Endeksi ile karşılaştırın
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
Ana işlevi çalıştırın 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()
Yukarıda tanıtılan içerik sadece kripto para biriminin temelleri ile ilgilidir, bu da kripto para birimi aracılığıyla para kazanıp kazanamayacağımızla ilgilidir. Kripto para birimleri sadece geliri artırmak için bilimsel yöntemlerle değil, aynı zamanda para biriktirmenin yollarını bularak da para kazanıyor. Taşıma ücretleri küçüktür, ancak göz ardı edilmemelidir. Sık işlemler ve uzun işlem saatleri ile ücret birikiminin yılda 10.000 U'dan fazla olabileceğini hesapladım. Daha sonra, büyük işlem platformlarında ücretleri azaltmanın birkaç yaygın yolunu tanıtacağım. (1) Binance'in ücretlerinin düşürülmesi Binance şu anda dünyanın en büyük dijital para borsasıdır ve coin spekülasyonu yapmak istiyorsanız Binance'e kaydolmanız gerekir. İşlem ücreti, alınan varlıklardan düşülür. Örneğin, Ethereum/USDT satın alırsanız, ücret Ethereum olarak ödenir. Ethereum/USDT satarsanız, komisyon USDT olarak ödenir. Örnek. Hisse başına 3.452,55 USD fiyattan 10Ethereum için bir sipariş verirsiniz. İşlem ücreti = 10Ethereum*%0,1 = 0,01Ethereum Ya da hisse başına 3.452,55 USDT'den 10Ethereum satmak için bir emir verirsiniz. İşlem ücreti = (10Ethereum3,452.55USDT)%0.1 = 34.5255USDT Birçok kişinin bilmediği şey ise Binance işlem ücretinin de düşürülebilmesidir. Binance alım satım ücretlerinizi düşürmek istiyorsanız, aşağıdaki davet bağlantısını kullanarak kaydolmanız veya "Q022W7SC" davet kodunu kullanmanız gerekir. https://accounts.binance.com/tr/register?ref=Q022W7SC

(2) OKX ücretlerinin azaltılması OKX, birçok kullanıcı tarafından sevilen profesyonel bir dijital para birimi ticaret platformudur ve işlem ücretleri azaltılabilir. OKX, işlem hacmine bağlı olarak kullanıcılarını iki seviyeye ayırır: normal ve profesyonel. Sıradan kullanıcılar OKB pozisyonlarına göre derecelendirilirken, profesyonel kullanıcılar işlem hacimlerine ve varlık büyüklüklerine göre derecelendirilir. Farklı kademeler bir sonraki işlem günü için işlem ücretlerini belirler. Ücret seviyeleri hesaplanırken, coin işlem hacmi, teslimat ve sürekli sözleşmelerin toplam işlem hacmi (USDT teslimat sözleşmesi, coin tabanlı teslimat sözleşmesi, USDT sürekli sözleşmesi, coin tabanlı sürekli sözleşme), opsiyon sözleşmesi işlem hacmi ve varlık hacmi farklı ücret seviyelerinin koşullarını karşılıyorsa, kullanıcılar en yüksek seviyenin ücret indiriminden yararlanacaktır. Birinci yöntem: OKX'in resmi maksimum tasarruf oranı %20'dir. OKX'e kaydolmak ve ücretlerde %20 tasarruf etmek için aşağıdaki bağlantıyı kullanın. https://www.ouyi.business/join/BTC1ETH İkinci yöntem: OKX web sitesini açın ve geri ödeme yüzdesini görmek için kayıt sayfasındaki "Davet Kodu" kısmına "BTC1ETH" girin: en altta %20. Bu davet kodunu girdiğinizden emin olun, aksi takdirde %20 cashback yüzdesi alamazsınız. (3) FTX ücretlerinin azaltılması FTX şu anda çok hızlı büyüyen, sözleşmeli oyunculara daha fazla borsa, sözleşme oynuyorsanız FTX'e kayıt olmalısınız. FTX işlem ücretlerini düşürmek istiyorsanız, kayıt olmak için aşağıdaki davet bağlantısını kullanmalısınız. https://ftx.com/referrals#a=121031692 3, ticaret yolu uzun, ileri ile birlikte Komisyonun nasıl azaltılacağı hakkında daha fazla bilgi edinmek ister misiniz? telegram: btcethcool Ticaret çalışmalarına adanmış bir topluluk kurduk, sizi topluluğun içine çekmek için telegram arkadaşları ekleyin.
Madeni para spekülasyonu için bir ticaret sistemi oluşturmak için, kişisel olarak çok sayıda bilgisayar ve finansal bilgi öğrenmeniz gerekir. (1) Veri yükleme
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
Adım 2: Bir strateji belirleyin Strateji kuralları çok basittir.
Hesabın başlangıç değeri 100000'dir, her hisse senedi aynı ağırlığa sahiptir
Verilerin alış sinyaline göre al ve satış sinyaline göre sat
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)
Adım 3: Geriye dönük test Yukarıdaki verilere ve stratejiye dayalı geriye dönük test
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
Adım 4: Analiz Stratejinin performansını analiz edin ve CSI 300 Endeksi ile karşılaştırın
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
Ana işlevi çalıştırın 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()
Yukarıda tanıtılan içerik sadece kripto para biriminin temelleri ile ilgilidir, bu da kripto para birimi aracılığıyla para kazanıp kazanamayacağımızla ilgilidir. Kripto para birimleri sadece geliri artırmak için bilimsel yöntemlerle değil, aynı zamanda para biriktirmenin yollarını bularak da para kazanıyor. Taşıma ücretleri küçüktür, ancak göz ardı edilmemelidir. Sık işlemler ve uzun işlem saatleri ile ücret birikiminin yılda 10.000 U'dan fazla olabileceğini hesapladım. Daha sonra, büyük işlem platformlarında ücretleri azaltmanın birkaç yaygın yolunu tanıtacağım. (1) Binance'in ücretlerinin düşürülmesi Binance şu anda dünyanın en büyük dijital para borsasıdır ve coin spekülasyonu yapmak istiyorsanız Binance'e kaydolmanız gerekir. İşlem ücreti, alınan varlıklardan düşülür. Örneğin, Ethereum/USDT satın alırsanız, ücret Ethereum olarak ödenir. Ethereum/USDT satarsanız, komisyon USDT olarak ödenir. Örnek. Hisse başına 3.452,55 USD fiyattan 10Ethereum için bir sipariş verirsiniz. İşlem ücreti = 10Ethereum*%0,1 = 0,01Ethereum Ya da hisse başına 3.452,55 USDT'den 10Ethereum satmak için bir emir verirsiniz. İşlem ücreti = (10Ethereum3,452.55USDT)%0.1 = 34.5255USDT Birçok kişinin bilmediği şey ise Binance işlem ücretinin de düşürülebilmesidir. Binance alım satım ücretlerinizi düşürmek istiyorsanız, aşağıdaki davet bağlantısını kullanarak kaydolmanız veya "Q022W7SC" davet kodunu kullanmanız gerekir. https://accounts.binance.com/tr/register?ref=Q022W7SC

(2) OKX ücretlerinin azaltılması OKX, birçok kullanıcı tarafından sevilen profesyonel bir dijital para birimi ticaret platformudur ve işlem ücretleri azaltılabilir. OKX, işlem hacmine bağlı olarak kullanıcılarını iki seviyeye ayırır: normal ve profesyonel. Sıradan kullanıcılar OKB pozisyonlarına göre derecelendirilirken, profesyonel kullanıcılar işlem hacimlerine ve varlık büyüklüklerine göre derecelendirilir. Farklı kademeler bir sonraki işlem günü için işlem ücretlerini belirler. Ücret seviyeleri hesaplanırken, coin işlem hacmi, teslimat ve sürekli sözleşmelerin toplam işlem hacmi (USDT teslimat sözleşmesi, coin tabanlı teslimat sözleşmesi, USDT sürekli sözleşmesi, coin tabanlı sürekli sözleşme), opsiyon sözleşmesi işlem hacmi ve varlık hacmi farklı ücret seviyelerinin koşullarını karşılıyorsa, kullanıcılar en yüksek seviyenin ücret indiriminden yararlanacaktır. Birinci yöntem: OKX'in resmi maksimum tasarruf oranı %20'dir. OKX'e kaydolmak ve ücretlerde %20 tasarruf etmek için aşağıdaki bağlantıyı kullanın. https://www.ouyi.business/join/BTC1ETH İkinci yöntem: OKX web sitesini açın ve geri ödeme yüzdesini görmek için kayıt sayfasındaki "Davet Kodu" kısmına "BTC1ETH" girin: en altta %20. Bu davet kodunu girdiğinizden emin olun, aksi takdirde %20 cashback yüzdesi alamazsınız. (3) FTX ücretlerinin azaltılması FTX şu anda çok hızlı büyüyen, sözleşmeli oyunculara daha fazla borsa, sözleşme oynuyorsanız FTX'e kayıt olmalısınız. FTX işlem ücretlerini düşürmek istiyorsanız, kayıt olmak için aşağıdaki davet bağlantısını kullanmalısınız. https://ftx.com/referrals#a=121031692 3, ticaret yolu uzun, ileri ile birlikte Komisyonun nasıl azaltılacağı hakkında daha fazla bilgi edinmek ister misiniz? telegram: btcethcool Ticaret çalışmalarına adanmış bir topluluk kurduk, sizi topluluğun içine çekmek için telegram arkadaşları ekleyin.
No activity yet