وسائل لوڈ ہو رہے ہیں... لوڈنگ...

OKCoin کی نقل و حمل

مصنف:صفر، تاریخ: 2017-01-30 19:38:25
ٹیگز:ہائی فریکوئنسی

ٹرانسپلانٹ:https://github.com/richox/okcoin-leeks-reaper

اصل مصنفین نے کہا کہ جب میں نے فیس وصول کی تو یہ ناکام ہو گیا، میں نے صرف ٹرانسپورٹ کیا، کوئی ٹیسٹ نہیں کیا، اور سیکھنے میں دلچسپی رکھتا ہوں. موجد کی طرف سے مقداری ٹِک کی سطح کی ریٹرننگ کی حمایت کرتا ہے، جس میں گہرائی اور تجارت کی ریٹرننگ کی حمایت کی جاتی ہے، اور سیکھنے کی حکمت عملی کی منطق کو براہ راست ریٹرننگ کی جا سکتی ہے.

ذیل میں اصل وضاحت ہے

OKCoin کیلے کاٹنے والی مشین

یہ او کے کوائن بٹ کوائن ٹریڈنگ پلیٹ فارم پر ایک ہائی فریکوئنسی ٹریڈنگ روبوٹ پروگرام ہے جس نے جون 2016 میں حکمت عملی کی بنیادی شکل سے لے کر جنوری 2017 کے وسط تک کامیابی کے ساتھ ابتدائی طور پر لگائے گئے 6،000 بٹ کو 250،000 تک دھونا شروع کردیا تھا۔ حالیہ مرکزی بینک کی طرف سے بٹ کوائن پر سخت پالیسی کے باعث ، بڑے پلیٹ فارمز نے تقسیم کو روک دیا اور ٹرانزیکشن فیس وصول کرنا شروع کردی۔ یہ حکمت عملی عملی عملی میں ناکام ہوگئی ہے۔

image

یہ روبوٹ پروگرام دو اہم حکمت عملیوں پر مبنی ہے:

  1. رجحان کی حکمت عملی: جب قیمت میں رجحاناتی اتار چڑھاؤ ہوتا ہے تو بروقت آرڈر دیں اور اس کے بعد عمل کریں ، یہ کہاوت ہے۔مچھلیوں کا پیچھا
  2. توازن کی حکمت عملی: جب پوزیشن 50٪ سے انحراف کرتی ہے تو ، پٹی کو جاری کریں تاکہ پوزیشن 50٪ کی طرف آہستہ آہستہ واپس آجائے ، اور رجحان کے اختتام پر الٹ جانے سے روکنے کے ل.انکم بیگ، مچھلی کے پتے نہیں کھاتے

اس طریقہ کار میں پوزیشنوں کو متوازن کرنے کی ضرورت ہوتی ہے ، یعنی (سرمایہ + مالی اعانت = مالی اعانت) تاکہ پوزیشنوں میں 50٪ کے وقت خالص اثاثے قیمتوں میں اتار چڑھاؤ کے ساتھ نہ ہوں ، لیکن اس بات کا یقین کریں کہ جب رجحاناتی اتار چڑھاؤ ہوتا ہے تو یہ یقینی بناتا ہے۔گرنے سے گرنے تک

آپ کا شکریہ کہ آپ نے مندرجہ ذیل دو منصوبوں کا آغاز کیا:

شکریہ OKCoin:

بی ٹی سی: 3QFn1qfZMhMQ4FhgENR7fha3T8ZVw1bEeU


/*backtest
start: 2019-09-05 00:00:00
end: 2019-09-05 22:00:00
period: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","fee":[0,0]}]
mode: 1
*/

function LeeksReaper() {
    var self = {}
    self.numTick = 0
    self.lastTradeId = 0
    self.vol = 0
    self.askPrice = 0
    self.bidPrice = 0
    self.orderBook = {Asks:[], Bids:[]}
    self.prices = []
    self.tradeOrderId = 0
    self.p = 0.5
    self.account = null
    self.preCalc = 0
    self.preNet = 0

    self.updateTrades = function() {
        var trades = _C(exchange.GetTrades)
        if (self.prices.length == 0) {
            while (trades.length == 0) {
                trades = trades.concat(_C(exchange.GetTrades))
            }
            for (var i = 0; i < 15; i++) {
                self.prices[i] = trades[trades.length - 1].Price
            }
        }
        self.vol = 0.7 * self.vol + 0.3 * _.reduce(trades, function(mem, trade) {
            // Huobi not support trade.Id
            if ((trade.Id > self.lastTradeId) || (trade.Id == 0 && trade.Time > self.lastTradeId)) {
                self.lastTradeId = Math.max(trade.Id == 0 ? trade.Time : trade.Id, self.lastTradeId)
                mem += trade.Amount
            }
            return mem
        }, 0)

    }
    self.updateOrderBook = function() {
        var orderBook = _C(exchange.GetDepth)
        self.orderBook = orderBook
        if (orderBook.Bids.length < 3 || orderBook.Asks.length < 3) {
            return
        }
        self.bidPrice = orderBook.Bids[0].Price * 0.618 + orderBook.Asks[0].Price * 0.382 + 0.01
        self.askPrice = orderBook.Bids[0].Price * 0.382 + orderBook.Asks[0].Price * 0.618 - 0.01
        self.prices.shift()
        self.prices.push(_N((orderBook.Bids[0].Price + orderBook.Asks[0].Price) * 0.35 +
            (orderBook.Bids[1].Price + orderBook.Asks[1].Price) * 0.1 +
            (orderBook.Bids[2].Price + orderBook.Asks[2].Price) * 0.05))
    }
    self.balanceAccount = function() {
        var account = exchange.GetAccount()
        if (!account) {
            return
        }
        self.account = account
        var now = new Date().getTime()
        if (self.orderBook.Bids.length > 0 && now - self.preCalc > (CalcNetInterval * 1000)) {
            self.preCalc = now
            var net = _N(account.Balance + account.FrozenBalance + self.orderBook.Bids[0].Price * (account.Stocks + account.FrozenStocks))
            if (net != self.preNet) {
                self.preNet = net
                LogProfit(net)
            }
        }
        self.btc = account.Stocks
        self.cny = account.Balance
        self.p = self.btc * self.prices[self.prices.length-1] / (self.btc * self.prices[self.prices.length-1] + self.cny)
        var balanced = false
        
        if (self.p < 0.48) {
            Log("开始平衡", self.p)
            self.cny -= 300
            if (self.orderBook.Bids.length >0) {
                exchange.Buy(self.orderBook.Bids[0].Price + 0.00, 0.01)
                exchange.Buy(self.orderBook.Bids[0].Price + 0.01, 0.01)
                exchange.Buy(self.orderBook.Bids[0].Price + 0.02, 0.01)
            }
        } else if (self.p > 0.52) {
            Log("开始平衡", self.p)
            self.btc -= 0.03
            if (self.orderBook.Asks.length >0) {
                exchange.Sell(self.orderBook.Asks[0].Price - 0.00, 0.01)
                exchange.Sell(self.orderBook.Asks[0].Price - 0.01, 0.01)
                exchange.Sell(self.orderBook.Asks[0].Price - 0.02, 0.01)
            }
        }
        Sleep(BalanceTimeout)
        var orders = exchange.GetOrders()
        if (orders) {
            for (var i = 0; i < orders.length; i++) {
                if (orders[i].Id != self.tradeOrderId) {
                    exchange.CancelOrder(orders[i].Id)
                }
            }
        }
    }

    self.poll = function() {
        self.numTick++
        self.updateTrades()
        self.updateOrderBook()
        self.balanceAccount()
        
        var burstPrice = self.prices[self.prices.length-1] * BurstThresholdPct
        var bull = false
        var bear = false
        var tradeAmount = 0
        if (self.account) {
            LogStatus(self.account, 'Tick:', self.numTick, ', lastPrice:', self.prices[self.prices.length-1], ', burstPrice: ', burstPrice)
        }
        
        if (self.numTick > 2 && (
            self.prices[self.prices.length-1] - _.max(self.prices.slice(-6, -1)) > burstPrice ||
            self.prices[self.prices.length-1] - _.max(self.prices.slice(-6, -2)) > burstPrice && self.prices[self.prices.length-1] > self.prices[self.prices.length-2]
            )) {
            bull = true
            tradeAmount = self.cny / self.bidPrice * 0.99
        } else if (self.numTick > 2 && (
            self.prices[self.prices.length-1] - _.min(self.prices.slice(-6, -1)) < -burstPrice ||
            self.prices[self.prices.length-1] - _.min(self.prices.slice(-6, -2)) < -burstPrice && self.prices[self.prices.length-1] < self.prices[self.prices.length-2]
            )) {
            bear = true
            tradeAmount = self.btc
        }
        if (self.vol < BurstThresholdVol) {
            tradeAmount *= self.vol / BurstThresholdVol
        }
        
        if (self.numTick < 5) {
            tradeAmount *= 0.8
        }
        
        if (self.numTick < 10) {
            tradeAmount *= 0.8
        }
        
        if ((!bull && !bear) || tradeAmount < MinStock) {
            return
        }
        var tradePrice = bull ? self.bidPrice : self.askPrice
        while (tradeAmount >= MinStock) {
            var orderId = bull ? exchange.Buy(self.bidPrice, tradeAmount) : exchange.Sell(self.askPrice, tradeAmount)
            Sleep(200)
            if (orderId) {
                self.tradeOrderId = orderId
                var order = null
                while (true) {
                    order = exchange.GetOrder(orderId)
                    if (order) {
                        if (order.Status == ORDER_STATE_PENDING) {
                            exchange.CancelOrder(orderId)
                            Sleep(200)
                        } else {
                            break
                        }
                    }
                }
                self.tradeOrderId = 0
                tradeAmount -= order.DealAmount
                tradeAmount *= 0.9
                if (order.Status == ORDER_STATE_CANCELED) {
                    self.updateOrderBook()
                    while (bull && self.bidPrice - tradePrice > 0.1) {
                        tradeAmount *= 0.99
                        tradePrice += 0.1
                    }
                    while (bear && self.askPrice - tradePrice < -0.1) {
                        tradeAmount *= 0.99
                        tradePrice -= 0.1
                    }
                }
            }
        }
        self.numTick = 0
    }
    return self
}

function main() {
    var reaper = LeeksReaper()
    while (true) {
        reaper.poll()
        Sleep(TickInterval)
    }
}

متعلقہ

مزید

ہاپ ہاپ کا بادشاہیہ حکمت عملی ناکام ہوگئی ہے ، اور منافع صفر کے ساتھ اعلی تعدد کی چھوٹی فرق آمدنی سے حاصل ہوتا ہے۔

کانگ بائی979 self.vol到底是个啥?是一个ticker期间内所有交易量的总和吗?

دنTrader2018for (var i = 0؛ i < 15; i++) { self.prices[i] = trades[trades.length - 1].Price }; کیا یہ ایک چھوٹا سا مسئلہ نہیں ہے کہ قیمتوں کی صف میں ہر عنصر تازہ ترین قیمت ہے؟

کویو7035میرے پاس بہت سارے تبادلے ہیں جن میں کوئی فیس نہیں ہے اور وہ بہت گہری تجارت کرتے ہیں۔ کیا آپ اس حکمت عملی کو آزما سکتے ہیں؟ کیا آپ کے پاس رہنمائی ہے؟ میں تبادلے کے اکاؤنٹ کے لئے درخواست دینے میں مدد کرسکتا ہوں۔

بیجاسوبہت اچھا، افسوس کہ یہ کام نہیں کرتا، کیا یہ اب کام کرتا ہے؟

اسکائیفائرتبصرہ: فروخت کی قیمت: 2000، غیر سرکاری، ممکنہ رابطہ

راجیہاککیا کسی نے یہ تجربہ کیا ہے اور اس کے فوائد کے بارے میں بات کرنے کے لئے آیا ہے؟

ویلنتبصرے کب آئیں گے؟

ووکیان مینگایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر ، ایک بار پھر

جآپ کا شکریہ کہ آپ نے یہ حکمت عملی شیئر کی! exchange.CancelOrder ((orders[i].Id) یہاں منسوخی کا کوڈ تھوڑا سا پریشان کن ہے ، کیونکہ جانچ پڑتال کے دوران مسلسل منسوخی ، منسوخی۔ اس کے بعد ، ہم نے اس کے بارے میں مزید معلومات حاصل کیں ، اور ہم نے اس کے بارے میں مزید معلومات حاصل کیں۔ اس کے بعد میں نے اسے تبدیل کیا اور اسے ایک مفت ایکسچینج میں ڈال دیا ، اور یہ بہت اچھا محسوس ہوتا ہے۔

کلومیٹر اسٹوڈیو 66行prices需加.length

برف کا پھولیہ کونسی زبان ہے؟

صفر 平衡那里下单忘加上Price属性了。。已更正,有发现bug请及时提交.

آبدوزاس کے علاوہ ، یہ بھی کہا جاتا ہے کہ یہ ایک بہت ہی دلچسپ چیز ہے ، لیکن یہ ایک بہت ہی دلچسپ چیز ہے۔

1213761768جلدی نہ نکالیں

چانگ بے باکینہیں، بولی کی قیمت مانگ کی قیمت سے کم ہونی چاہئے، ایک خریدنے کی قیمت ہے، اور ایک فروخت کی قیمت ہے

بواکسیاوکبراہ کرم ، جب آپ بولی کی قیمت اور پوچھنے کی قیمت کا حساب لگاتے ہیں تو ، یہ ایسا لگتا ہے جیسے آپ نے بولی کی قیمت کو پوچھنے کی قیمت سے زیادہ نہیں سمجھا ہے ، لہذا اگر خرید و فروخت بہت قریب ہے تو ، اس کا حساب لگایا جاسکتا ہے کہ یہ زیادہ خرید و فروخت ہے ، کیا یہ مسئلہ ہوگا؟

میں مکھن سے محبت کرتا ہوںمیں نے ایک تبصرہ لکھا ہے کہ آپ سب کو میرا ویکی میٹ Hoo_tongxue شامل کرنے کی ضرورت ہے اور سب سے اہم بات یہ ہے کہ یہ مفت ہے۔

میں مکھن سے محبت کرتا ہوںاس کا چہرہ کافی موٹا ہے۔

چھوٹے کوئلے کے گولےکیا آپ کو معلوم ہے کہ یہ کونسی مارکیٹ ہے؟

صفراس کے بعد آپ کے پاس ایک نئی قیمت ہے جو آپ کو شروع کرنے کی ضرورت ہے، اور اس کے بعد آپ کو ایک تبدیلی کی ضرورت ہے.

دوبارہ اسٹوریج معجزہاس نے پہلے ہی ناکام ہوچکا ہے۔ اب یہ روبوٹ کی جنگ ہے۔

سُسکیٹھیک ہے، یہ سلاد کاٹنے کے لئے بہتر ہے ^_^

اسکائیفائربیچنے والا بیچ دے اور خریدار خرید لے اور تجھ سے جھگڑا نہ کرے۔

شادی شدہ خواتین بھیآپ نے کیا کہا؟ آپ نے کیا کہا؟ آپ نے کیا کہا؟

اےکّ 请问zaif.jp现在还是免手续费吗?怎么通过认证呢

شیاؤہوان001آئی ڈی دیکھیں

ج 在Zaif.jp上测试,买一卖一间经常就没有空间,用这个策略有什么问题吗?

جکیا یہ سچ ہے؟ باہر آکر لوگوں کو سبق سکھاؤ۔

شیاؤہوان001حیرت انگیز مصنف

جٹھیک ہے ، کچھ سوالات ہیں ، براہ کرم ، اور ایک اور پوسٹ ہے: https://www.botvs.com/bbs-topic/677

صفراگر آپ کے پاس اس حکمت عملی کے بارے میں کچھ سیکھنے یا سوالات ہیں تو ، براہ کرم فورم پر پوسٹ کریں ، شکریہ تعاون کے لئے!

صفرآپ کا شکریہ ، میں نے ایک پیرامیٹر شامل کیا ہے ، توازن آرڈر انتظار کا وقت ، اگر آپ بیک وقت پروسیسنگ کرنا چاہتے ہیں تو ، آپ ہر آرڈر کی شناخت کو آرڈر کے وقت کے ساتھ ریکارڈ کرسکتے ہیں ، اور پھر انتخابی طور پر منسوخ کرسکتے ہیں ، تاکہ تاخیر کو کم کیا جاسکے ، لیکن منطقی طور پر ، پہلے توازن دوبارہ کھولنا چاہئے ، کیونکہ تمام تبادلے آرڈر حاصل کرنے کے وقت کی خصوصیت کی حمایت نہیں کرتے ہیں ، لہذا پلیٹ فارم نے آرڈر میں یہ خصوصیت شامل نہیں کی ہے ، اس کے اپنے اعدادوشمار کی ضرورت ہے۔

شیاؤہوان001مجھے لگتا ہے کہ یہ ایک عجیب حکمت عملی ہے، مجھے یہ پسند ہے۔

صفرمیں نے کبھی یہ کوشش نہیں کی، آپ کو اس پر تحقیق کرنے کی ضرورت ہے۔

اوریون1708مشکل Z بڑی منتقلی۔ براہ کرم ، کیا حکمت عملی کے پیرامیٹرز کی ڈیفالٹ قیمت میں تبدیلی سے حکمت عملی پر بہت زیادہ اثر پڑتا ہے؟

صفرہاہاہا، شکریہ، شامل کر دیا گیا ہے۔

صفرجاوا اسکرپٹ

صفرتجارت کی کثرت

ایجاد کاروں کی مقدار - خواباس کے علاوہ ، یہ بھی کہا گیا ہے کہ مصنفین نے اس کے بارے میں معلومات جمع کروائی ہیں ، لیکن ان کی فیسوں کی وصولی کے بعد۔

شیاؤہوان001کیوں رجحان ساز حکمت عملی کو جھٹکا لاگت سے خوفزدہ ہونا چاہئے؟