# Bir ticaret sistemi nasıl oluşturulur (coin spekülasyonu için, en ayrıntılı strateji)

By [BTC](https://paragraph.com/@btc-97) · 2022-08-31

---

1.  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
    

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

def prepare\_data(codes=\['[000300.SH](http://000300.SH)', '[399006.SZ](http://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
    

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)
    

Adım 3: Geriye dönük test Yukarıdaki verilere ve stratejiye dayalı geriye dönük test

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
    

Adım 4: Analiz Stratejinin performansını analiz edin ve CSI 300 Endeksi ile karşılaştırın

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](http://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](http://000300.SH)', '[399006.SZ](http://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.  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 = (10Ethereum_3,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](https://accounts.binance.com/tr/register?ref=Q022W7SC)
    

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

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

---

*Originally published on [BTC](https://paragraph.com/@btc-97/bir-ticaret-sistemi-nas-l-olu-turulur-coin-spek-lasyonu-i-in-en-ayr-nt-l-strateji)*
