त्रिभुज सूट - मूल संस्करण

लेखक:लाल बर्फ, दिनांकः 2019-06-06 17:38:26
टैगःहेजपायथनत्रिकोणीय


#!python2
# -*- coding:utf-8 -*-
from time import sleep

Q3 = 0.5
tax = 0.0015   #交易费率,0.15%


class fmz_market():

    # 基础行情数据处理,根据传入的交易对,获取数据,返回行情dict
    def basic_data_handle(self, pair):
        pair_depth = {'sale_volume': 0, 'sale_price': 0, 'buy_volume': 0, 'buy_price': 0}
        depth = exchanges[pair].GetDepth()
        asks_infor = depth.Asks[0]
        bids_infor = depth.Bids[0]
        pair_depth['sale_volume'] = asks_infor.Amount
        pair_depth['sale_price'] = asks_infor.Price
        pair_depth['buy_volume'] = bids_infor.Amount
        pair_depth['buy_price'] = bids_infor.Price
        #Log(pair_depth)
        return pair_depth



    #进行参数计算
    def profit_calculation(self):
        profit_obtain = 0
        #先获取行情数据
        P1_depth = self.basic_data_handle(0)
        P2_depth = self.basic_data_handle(1)
        P3_depth = self.basic_data_handle(2)
        #买一价格整理
        p1_sale_price =float(P1_depth['sale_price'])
        p1_buy_price = float(P1_depth['buy_price'])
        p2_sale_price = float(P2_depth['sale_price'])
        p2_buy_price = float(P2_depth['buy_price'])
        p3_sale_price = float(P3_depth['sale_price'])
        p3_buy_price = float(P3_depth['buy_price'])

        #深度数据整理
        p1_sale_volume = float(P1_depth['sale_volume'])
        p1_buy_volume = float(P1_depth['buy_volume'])
        p2_sale_volume = float(P2_depth['sale_volume'])
        p2_buy_volume = float(P2_depth['buy_volume'])
        p3_sale_volume = float(P3_depth['sale_volume'])
        p3_buy_volume = float(P3_depth['buy_volume'])
        # 进行数据分析,正向交易费率,P1:EOS_USDT,P2:BTC_USDT,P3:EOS_ETH,卖出EOS,买入BTC,买入EOS(卖,买,买)
        if p1_buy_price / p2_sale_price > p3_sale_price:
            #总的手续费计算
            tax_account = (p1_buy_price + p3_sale_price*p2_sale_price + p3_sale_price*p2_sale_price) * Q3 * tax
            #总的获利计算
            profit_sum = (p1_buy_price / p2_sale_price - p3_sale_price) * Q3 * p2_buy_price
            Log('P1;',p1_buy_price,',P2:',p2_sale_price,',P3:',p3_sale_price,',tax_account:',tax_account,',profit_sum:',profit_sum)
            #如果总的获利 < 手续费,则直接退出
            if profit_sum < tax_account:
                return 0
            p1_accout_receive = p1_buy_price * Q3 * (1 - tax) #卖出EOS得到usdt,同时减去税
            p3_accout_used = p3_sale_price * Q3 * (1 + tax)  #计算买入Q3 EOS的时候,需要的BTC
            p2_accout_used =  p2_sale_price *  p3_accout_used * (1 + tax) #计算买入的BTC 需要耗费的USDT数量
            #获利总量计算
            profit_obtain = p1_accout_receive - p2_accout_used  #卖EOS得到的usdt - 买入同样数量的EOS需要的USDT
            return profit_obtain

        # 进行数据分析,逆向交易费率,P1:EOS_USDT,P2:BTC_USDT,P3:EOS_BTC,卖出EOS->BTC,卖出BTC,买入EOS(卖,卖,买)
        if p1_buy_price / p2_sale_price < p3_sale_price:
            # 总的手续费计算
            tax_account = (p3_buy_price * p2_buy_price + p3_buy_price * p2_buy_price + p1_sale_price) * Q3 * tax
            # 总的获利计算
            profit_sum = (p3_sale_price - p1_buy_price / p2_sale_price) * Q3 * p2_buy_price
            Log('P1;', p1_buy_price, ',P2:', p2_sale_price, ',P3:', p3_sale_price, ',tax_account:', tax_account, ',profit_sum:', profit_sum)
            # 如果总的获利 < 手续费,则直接退出
            if profit_sum < tax_account:
                return 0
            p3_accout_receive = p3_buy_price * Q3 * (1 - tax)  # 卖出EOS得到BTC,同时减去税
            p1_accout_used = p1_sale_price * Q3 * (1 + tax)  # 计算买入Q3 EOS的时候,需要的USDT
            p2_accout_receive = p2_buy_price * p3_accout_receive * (1 - tax)  # 计算卖出的BTC 得到的USDT数量
            # 获利总量计算
            profit_obtain = p2_accout_receive - p1_accout_used   #卖出的BTC得到的usdt - 买入EOS锁需要消耗的usdt
            return profit_obtain

        return 0

    #循环计算
    def profit_calculation_cycle(self):
        usdt_remain = 0
        for i in range(10000):
            profit_obtain = self.profit_calculation()
            usdt_remain = usdt_remain + profit_obtain
            if profit_obtain > 0:
                Log(u'EOS:',Q3,u'.....USDT:',usdt_remain)



def main():
    Log(exchange.GetAccount())
    Log("测试")
    fmz_market_instances = fmz_market()
    fmz_market_instances.profit_calculation_cycle()
    # fmz_market_instances.basic_data_handle(0)

संबंधित

अधिक

इवनमैं वास्तव में नहीं जानता कि क्या रणनीति है।

बीएनएमबीएनएमवास्तविक डिस्क त्रुटि 58 लाइन दिखाता है, कैसे इसे बदलने के लिए चलाने के लिए

gurengjun@yeah.netयह एक अच्छा रणनीति है, लेकिन यह पायथन के सिंटैक्स को अधिकतम करने के लिए नहीं है।

लोहे का मुक्केबाजक्यों नहीं अपडेट किया?

लाल बर्फक्या आपके पास कोई अच्छी सलाह है?