بائنن کی حکمت عملی دو، اعلی اور کم پوائنٹس کو ہٹا دیں

مصنف:علاقائی کلاس کی مقدار، تاریخ: 2020-04-09 21:44:22
ٹیگز:بائننس

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

اہم مواد!!

  • اس تحقیق کو دیکھنا ضروری ہے۔https://www.fmz.com/digest-topic/5294♦ حکمت عملی کے اصولوں، خطرات، تجارت کی جانچ پڑتال، پیرامیٹرز کو کیسے ترتیب دیا جائے، کھلی پوزیشنوں اور کل فنڈز کے تناسب وغیرہ کے بارے میں معلومات حاصل کریں۔
  • پچھلی تحقیق کو ڈاؤن لوڈ کرنے اور اپنی تحقیق کے ماحول میں اپ لوڈ کرنے کی ضرورت ہے۔ اصل ترمیم دوبارہ چلتی ہے۔ اگر آپ نے اس رپورٹ کو دیکھا ہے تو ، تازہ ترین ہفتہ کے اعداد و شمار کو تازہ کاری کریں۔
  • حکمت عملیوں کو براہ راست دوبارہ نہیں کیا جا سکتا، انہیں تحقیق کے ماحول میں دوبارہ کیا جانا چاہئے۔
  • حکمت عملی کا کوڈ اور ڈیفالٹ پیرامیٹرز صرف تحقیق کے لئے ہیں ، اور حقیقی ڈسک پر کام کرنے کے لئے محتاط رہنا ضروری ہے ، اپنے خطرے کو برداشت کریں۔
  • کوڈ عوامی ہے اور آپ اسے خود تبدیل کرسکتے ہیں۔ اگر آپ کو کوئی مسئلہ درپیش ہے تو ، تبصرے اور رائے کا خیرمقدم کرتے ہیں ، بہتر ہے کہ آپ انوینٹرز بائنن گروپ میں شامل ہوں (مطالعات میں شامل ہونے کا طریقہ موجود ہے)
  • اس کی حکمت عملی کو پورے اسٹاک موڈ میں چلنا چاہئے۔حکمت عملی بائنن کی حمایت کرتی ہے ، روبوٹ کی تخلیق میں پہلے سے طے شدہ ٹرانزیکشن جوڑے اور K لائن سائیکل کا استعمال کیا جاتا ہے ، حکمت عملی K لائن کا استعمال نہیں کرتی ہے۔

حکمت عملی کے اصول

اس حکمت عملی کے تحت، آپ کو ایک جوڑی میں بی ٹی سی شامل کرنے کی ضرورت ہوگی۔ پچھلے دو مہینوں کی کارکردگی (تقریبا 3 گنا تک لیورج ، اعداد و شمار کو 4.8 تک اپ ڈیٹ کیا گیا ہے):img

اسٹریٹجک منطق

1۔ مارکیٹ اور اکاؤنٹ کو اپ ڈیٹ کریں ، پہلی بار چلنے پر ابتدائی قیمت ریکارڈ کی جائے گی ((نئی شامل کردہ کرنسیوں کا حساب شامل ہونے کے وقت کے مطابق کیا جاتا ہے) 2. انڈیکس کو اپ ڈیٹ کریں ، انڈیکس کا مطلب ہے سکے - بٹ کوائن قیمت کا اشاریہ = mean ((sum)) ((بٹ کوائن کی قیمت / بٹ کوائن کی قیمت) / ((بٹ کوائن کی ابتدائی قیمت / بٹ کوائن کی ابتدائی قیمت)) 3. انحراف انڈیکس کے مطابق زیادہ کام کرنے کا فیصلہ ، انحراف کے سائز کے مطابق پوزیشنوں کا فیصلہ 4۔ آرڈر کرنا اور مقدار کا فیصلہ آئس ماؤنٹین کی طرف سے کیا جاتا ہے اور قیمت کے مطابق کیا جاتا ہے۔اگر آپ کو کوئی مسئلہ ہے تو ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔ 5.再次循环

حکمت عملی کے پیرامیٹرز

img

  • Trade_symbols: تجارت کی جانے والی کرنسی ، جس کی ضرورت ہے کہ وہ اپنے آپ کو تحقیق کے پلیٹ فارم کے مطابق فلٹر کرے ، یا BTC میں شامل ہو
  • trade_value: سکوں کی قدر کو برقرار رکھنے کے لئے ، آپ کو اپنے کل سرمایہ کاری پر منحصر ہونے کی ضرورت ہے ، جس سے آپ کو اپنے ماحول کے جائزے کے ذریعے فائدہ اٹھانے کی صلاحیت کا اندازہ ہوسکتا ہے۔
  • ایڈجسٹ_ویلیو: معاہدہ کی قیمت (USDT قیمت) ایڈجسٹ انحراف کی قیمت ، بہت زیادہ ایڈجسٹمنٹ سست ہے ، 20 سے کم نہیں ہوسکتی ہے ، ورنہ کم سے کم ٹرانزیکشن تک نہیں پہنچ سکتی ہے۔
  • Ice_value: آئس مین کی تفویض کردہ قدر ، جو بھی 20 سے کم نہیں ہوسکتی ہے ، اصل میں منتخب کریں ایڈجسٹ_ویلیو/آئس_ویلیو میں سے چھوٹا
  • ری سیٹ: تاریخی ڈیٹا کو دوبارہ ترتیب دیں

اسٹریٹجک خطرات

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


//向上偏离最大的币的索引
var highIndex=0;
//向下偏离最大的币的索引
var lowIndex=0;

var trade_symbols = Trade_symbols.split(',')
var symbols = trade_symbols
var index = 1 //指数
if(trade_symbols.indexOf('BTC')<0){
    symbols = trade_symbols.concat(['BTC'])
}
var update_profit_time = 0
var assets = {}
var trade_info = {}
var exchange_info = HttpQuery('https://fapi.binance.com/fapi/v1/exchangeInfo')
if(!exchange_info){
    Log('无法连接网络')
    return
}
exchange_info = JSON.parse(exchange_info)
for (var i=0; i<exchange_info.symbols.length; i++){
    if(symbols.indexOf(exchange_info.symbols[i].baseAsset) > -1){
       assets[exchange_info.symbols[i].baseAsset] = {amount:0, hold_price:0, value:0, bid_price:0, ask_price:0, 
                                                     btc_price:0, btc_change:1,btc_diff:0,
                                                     realised_profit:0, margin:0, unrealised_profit:0}
       trade_info[exchange_info.symbols[i].baseAsset] = {minQty:parseFloat(exchange_info.symbols[i].filters[1].minQty),
                                                         priceSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[0].tickSize)))),
                                                         amountSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[1].stepSize))))
                                                        }
    }
}
assets.USDT = {unrealised_profit:0, margin:0, margin_balance:0, total_balance:0, leverage:0, update_time:0}

function updateAccount(){ //更新账户和持仓
    var account = exchange.GetAccount()
    var pos = exchange.GetPosition()
    if (account == null || pos == null ){
        Log('update account time out')
        return
    }
    assets.USDT.update_time = Date.now()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].margin = 0
        assets[trade_symbols[i]].unrealised_profit = 0
        assets[trade_symbols[i]].hold_price = 0
        assets[trade_symbols[i]].amount = 0
        assets[trade_symbols[i]].unrealised_profit = 0
    } 
    for(var j=0; j<account.Info.positions.length; j++){
        var pair = account.Info.positions[j].symbol 
        var coin = pair.slice(0,pair.length-4)
        if(symbols.indexOf(coin) < 0){continue}
        assets[coin].margin = parseFloat(account.Info.positions[j].initialMargin) + parseFloat(account.Info.positions[j].maintMargin)
        assets[coin].unrealised_profit = parseFloat(account.Info.positions[j].unrealizedProfit)
    }
    assets.USDT.margin = _N(parseFloat(account.Info.totalInitialMargin) + parseFloat(account.Info.totalMaintMargin),2)
    assets.USDT.margin_balance = _N(parseFloat(account.Info.totalMarginBalance),2)
    assets.USDT.total_balance = _N(parseFloat(account.Info.totalWalletBalance),2)
    assets.USDT.unrealised_profit = _N(parseFloat(account.Info.totalUnrealizedProfit),2)
    assets.USDT.leverage = _N(assets.USDT.margin/assets.USDT.total_balance,2)
    
    if(pos.length > 0){
        pos = JSON.parse(exchange.GetRawJSON())
        for(var k=0; k<pos.length; k++){
            var pair = pos[k].symbol
            var coin = pair.slice(0,pair.length-4)
            if(symbols.indexOf(coin) < 0){continue}
            assets[coin].hold_price = parseFloat(pos[k].entryPrice)
            assets[coin].amount = parseFloat(pos[k].positionAmt)
            assets[coin].unrealised_profit = parseFloat(pos[k].unRealizedProfit)
        }
    }
}

function updateIndex(){ //更新指数
    var init_prices = {}
    if(!_G('init_prices') || Reset){
        for(var i=0; i<trade_symbols.length; i++){
            init_prices[trade_symbols[i]] = (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
        }
        Log('保存启动时的价格')
        _G('init_prices',init_prices)
    }else{
        init_prices = _G('init_prices')
        var temp = 0
        
        highIndex=0;
        lowIndex=0;
        var highChange;var lowChange;
        //本次计算找出最大偏离的高低分
        for(var i=0; i<trade_symbols.length; i++){
            assets[trade_symbols[i]].btc_price =  (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            if(!init_prices[trade_symbols[i]]){
                Log('添加新的币种',trade_symbols[i])
                init_prices[trade_symbols[i]] = assets[trade_symbols[i]].btc_price 
                _G('init_prices',init_prices)
            }
            assets[trade_symbols[i]].btc_change = _N(assets[trade_symbols[i]].btc_price/init_prices[trade_symbols[i]],4)
            if(i==0){
                highChange=assets[trade_symbols[i]].btc_change;
                lowChange=assets[trade_symbols[i]].btc_change;
            }
            
            if(highChange<assets[trade_symbols[i]].btc_change){
                highChange=assets[trade_symbols[i]].btc_change;
                highIndex=i;
            }
            if(lowChange>assets[trade_symbols[i]].btc_change){
                lowChange=assets[trade_symbols[i]].btc_change;
                lowIndex=i;
            }
        }
        
        for(var i=0; i<trade_symbols.length; i++){
            assets[trade_symbols[i]].btc_price =  (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            assets[trade_symbols[i]].btc_change = _N(assets[trade_symbols[i]].btc_price/init_prices[trade_symbols[i]],4)
            if(i!=lowIndex&&i!=highIndex){ //去掉高低分的影响
                temp += assets[trade_symbols[i]].btc_change
            }
        }
        //因为去掉了最高最低分,所以减2
        index = _N(temp/(trade_symbols.length-2), 4)
    }
    
}

function updateTick(){ //更新行情
    var ticker = HttpQuery('https://fapi.binance.com/fapi/v1/ticker/bookTicker')
    try {
        ticker = JSON.parse(ticker)
    }catch(e){
        Log('get ticker time out')
        return
    }
    for(var i=0; i<ticker.length; i++){
        var pair = ticker[i].symbol 
        var coin = pair.slice(0,pair.length-4)
        if(symbols.indexOf(coin) < 0){continue}
        assets[coin].ask_price = parseFloat(ticker[i].askPrice)
        assets[coin].bid_price = parseFloat(ticker[i].bidPrice)
        assets[coin].ask_value = _N(assets[coin].amount*assets[coin].ask_price, 2)
        assets[coin].bid_value = _N(assets[coin].amount*assets[coin].bid_price, 2)
    }
    updateIndex()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].btc_diff = _N(assets[trade_symbols[i]].btc_change - index, 4)
    }
}

function trade(symbol, dirction, value){ //交易
    if(Date.now()-assets.USDT.update_time > 10*1000){
        Log('更新账户延时,不交易')
        return
    }
    var price = dirction == 'sell' ? assets[symbol].bid_price : assets[symbol].ask_price
    var amount = _N(Math.min(value,Ice_value)/price, trade_info[symbol].amountSize)
    if(amount <= trade_info[symbol].minQty){
        Log(symbol, '合约价值偏离或冰山委托订单的大小设置过小,达不到最小成交, 至少需要: ', _N(trade_info[symbol].minQty*price,0))
        return
    }
    exchange.IO("currency", symbol+'_'+'USDT')
    exchange.SetContractType('swap')
    exchange.SetDirection(dirction)
    var f = dirction == 'buy' ? 'Buy' : 'Sell'
    var id = exchange[f](price, amount, symbol)
    if(id){
        exchange.CancelOrder(id) //订单会立即撤销
    }
}

function updateStatus(){ //状态栏信息
        var table = {type: 'table', title: '交易对信息更新', 
             cols: ['Symbol', 'amount', 'hold_price',  'price', 'diff', 'value', 'margin', 'unrealised_profit'],
             rows: []}
        var infoList;
    for (var i=0; i<symbols.length; i++){
        var price = _N((assets[symbols[i]].ask_price + assets[symbols[i]].bid_price)/2, trade_info[symbols[i]].priceSize)
        var value = _N((assets[symbols[i]].ask_value + assets[symbols[i]].bid_value)/2, 2)
        if(i==lowIndex){
           infoList = [symbols[i]+"Low", assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, assets[symbols[i]].btc_diff, value, _N(assets[symbols[i]].margin,3), _N(assets[symbols[i]].unrealised_profit,3)]    
        }else if(i==highIndex){
           infoList = [symbols[i]+"High", assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, assets[symbols[i]].btc_diff, value, _N(assets[symbols[i]].margin,3), _N(assets[symbols[i]].unrealised_profit,3)]
        }else{
           infoList = [symbols[i], assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, assets[symbols[i]].btc_diff, value, _N(assets[symbols[i]].margin,3), _N(assets[symbols[i]].unrealised_profit,3)]
        }
        table.rows.push(infoList)
    }
    var logString = _D() + '   ' + JSON.stringify(assets.USDT) + ' Index:' + index + '\n'
    LogStatus(logString + '`' + JSON.stringify(table) + '`')
    
    if(Date.now()-update_profit_time > Log_profit_interval*1000){
        LogProfit(_N(assets.USDT.margin_balance,3))
        update_profit_time = Date.now()
    }
    
}

function onTick(){ //策略逻辑部分
    for(var i=0; i<trade_symbols.length; i++){
        var symbol = trade_symbols[i]
        if(assets[symbol].ask_price == 0){ continue }
        var aim_value = -Trade_value * _N(assets[symbol].btc_diff/0.01,1)
        
        if(i!=lowIndex&&i!=highIndex){ //高低分的货币不交易
           if(aim_value - assets[symbol].ask_value > Adjust_value&&assets[symbol].ask_value<Max_amount){
              trade(symbol,'buy', aim_value - assets[symbol].ask_value)
           }
           if(aim_value - assets[symbol].bid_value < -Adjust_value&&assets[symbol].bid_value<Max_amount){
              trade(symbol,'sell', -(aim_value - assets[symbol].bid_value))
           }
        }
    }
}

function main() {
    while(true){
        updateAccount()
        updateTick()
        onTick()
        updateStatus()
        Sleep(Interval*1000)
    }
}

متعلقہ

مزید

qq813380629یہ عام طور پر کتنا فائدہ اٹھاتا ہے اور کتنا پیسہ خرچ کرتا ہے؟

علاقائی کلاس کی مقدارایک واحد کرنسی کی سب سے بڑی مالیت ہے

ہلکے بادلہیلو، ایک سوال پوچھنا چاہتا ہوں، Max_amount یہ ہر ٹریڈنگ جوڑی کے لئے زیادہ سے زیادہ ہولڈنگ ویلیو یا زیادہ سے زیادہ ضمانت کی رقم ہے؟ شکریہ.