بینان پائیدار ملٹی کرنسی ہیجنگ حکمت عملی (بغیر کسی چیز کے یا ایک سے زیادہ زپ انڈیکس) 10 اپریل کو بہتر بگ ، اپ ڈیٹ کی ضرورت ہے

مصنف:گھاس، تاریخ: 2020-04-03 11:12:31
ٹیگز:بائننس

اہم مواد!!

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

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

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

اگر آپ کو لگتا ہے کہ آپ کے پاس بہت زیادہ بٹ کوائنز ہیں تو ، آپ کو یہ بھی کرنا چاہئے کہ اگر آپ کو لگتا ہے کہ آپ کے پاس بہت زیادہ بٹ کوائنز ہیں تو ، آپ اس کے برعکس بھی کرسکتے ہیں (اگر آپ کو لگتا ہے کہ آپ کے پاس بہت کم بٹ کوائنز ہیں) ، اور فیصلہ آپ کے پاس ہے۔

img

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

1. مارکیٹ اور اکاؤنٹ ہولڈنگ کو اپ ڈیٹ کریں 2۔ ہر سکوں کی خالی ہولڈنگ کی قیمت کو اپ ڈیٹ کریں اور فیصلہ کریں کہ آیا خالی ہولڈنگ کو ایڈجسٹ کرنے کی ضرورت ہے یا نہیں۔ 3۔ مجموعی طور پر خالی پوزیشنوں کو اپ ڈیٹ کریں ، متعدد پوزیشنوں کا تعین کریں اور فیصلہ کریں کہ متعدد پوزیشنوں کو ایڈجسٹ کرنا ہے یا نہیں۔ 4۔ آرڈر کرنا اور مقدار کا فیصلہ آئس ماؤنٹین کی طرف سے کیا جاتا ہے اور قیمت کے مطابق کیا جاتا ہے۔مندرجہ ذیل حکم کے بعد فوری طور پر منسوخ (تو آپ کو بہت سے منسوخ کرنے میں ناکام سیل 400: {code:-2011,msg:Unknown order sent.}، معمول کا رجحان دیکھیں گے) 5.再次循环

یہ فیصلہ کرتا ہے کہ مختصر علامتوں ، لمبی علامتوں کی تجارت کی جوڑی زیادہ ہے ، زیادہ سے زیادہ کرنسیوں میں سے ہر ایک کی افتتاحی قیمت ٹریڈ ویلیو ہے ، کم سے کم کرنسیوں میں سے ہر ایک کے معاہدے کی قیمت ہیجنگ کی ضرورت کی اوسط ہے۔

اگر صرف خالی بی ٹی سی ، زیادہ TRX ، DASH ، ONT ، QTUM ، Trade_value 50 ہے تو ، TRX ، DASH ، ONT ، QTUM میں 50 سے زیادہ پوزیشنیں ہیں ، اور بی ٹی سی میں 50 * 4 خالی پوزیشنیں ہیں۔

اگر صرف بی ٹی سی ، خالی TRX ، DASH ، ONT ، QTUM ، اور trade_value 50 ہے تو ، TRX ، DASH ، ONT ، QTUM میں 50 خالی پوزیشنیں ہیں ، اور بی ٹی سی میں 50 * 4 پوزیشنیں ہیں۔

اسٹیٹس ٹینڈر میں لیوریج کا مطلب ہے کہ بیمہ کی رقم کا تناسب استعمال کیا گیا ہے اور یہ زیادہ نہیں ہونا چاہئے۔

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

img

  • Short_symbols: خالی کرنسیاں، جو اشاروں اور اشاروں سے الگ ہیں
  • Long_symbols: زیادہ کرنسیاں بنائیں ، خالی ، غیر محفوظ ، براہ راست خالی بھی چھوڑ سکتے ہیں۔
  • Trade_value: ایک ہی کرنسی کی خالی رکھنے والی قدر۔ یہ بھی ایک سے زیادہ ہیجنگ کرنا ہے ، کل قیمت = 2 * Trade_value * خالی کرنسیوں کی تعداد۔ عام طور پر 3-5 گنا فائدہ اٹھانا ، یعنی کل قیمت = 3 * اکاؤنٹ کا بیلنس استعمال کرنا ہے۔ آپ کی سرمایہ کاری کی کل رقم کے مطابق فیصلہ کرنا ضروری ہے۔ آپ کو تحقیق کے ماحول کی جانچ پڑتال کے ذریعہ فائدہ اٹھانے کی مقدار کا اندازہ لگانا چاہئے۔
  • ایڈجسٹ_ویلیو: معاہدے کی قیمت (USDT قیمت) ایڈجسٹ انحراف کی قیمت ، بہت زیادہ ایڈجسٹمنٹ سست ، بہت کم طریقہ کار کی فیس بہت زیادہ ، ٹریڈ_ویلیو کے مطابق خود فیصلہ کریں۔ 20 سے کم نہیں ہوسکتا ہے ، ورنہ کم سے کم ٹرانزیکشن تک نہیں پہنچ سکتا ہے۔
  • Ice_value: آئس مینڈک کو تفویض کردہ قدر، جو بھی 20 سے کم نہیں ہوسکتی ہے، اصل میں منتخب کریں Adjust_value اور Ice_value میں سے چھوٹا

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

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


if(IsVirtual()){
    throw '不能回测,回测参考 https://www.fmz.com/digest-topic/5294 '
}
if(exchange.GetName() != 'Futures_Binance'){
    throw '只支持币安期货交易所,和现货交易所不同,需要单独添加,名称为Futures_Binance'
}

var short_symbols = Short_symbols.split(',')
var long_symbols = Long_symbols.split(',')

if(short_symbols.length == 1 && short_symbols[0] == ''){
    short_symbols = []
}
if(long_symbols.length == 1 && long_symbols[0] == ''){
    long_symbols = []
}
var symbols = []
for(var i=0; i<short_symbols.length; i++){
    if(short_symbols[i]){
        symbols.push(short_symbols[i])
    }
}
for(var i=0; i<long_symbols.length; i++){
    if(long_symbols[i]){
        symbols.push(long_symbols[i])
    }
}
var update_profit_time = 0
var assets = {}
var trade_info = {}
var exchange_info = HttpQuery('https://fapi.binance.com/fapi/v1/exchangeInfo')
if(!exchange_info){
    throw '无法连接币安网络,需要海外托管者'
}
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, 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}


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<symbols.length; i++){
        assets[symbols[i]].margin = 0
        assets[symbols[i]].unrealised_profit = 0
        assets[symbols[i]].hold_price = 0
        assets[symbols[i]].amount = 0
        assets[symbols[i]].unrealised_profit = 0
    }
    for(var j=0; j<account.Info.positions.length; j++){
        if(account.Info.positions[j].positionSide == 'BOTH'){
            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)
    pos = JSON.parse(exchange.GetRawJSON())
    if(pos.length > 0){
        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 updateTick(){
    var ticker = HttpQuery('https://fapi.binance.com/fapi/v1/ticker/bookTicker')
    if(ticker == null){
        Log('get ticker time out')
        return
    }
    ticker = JSON.parse(ticker)
    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)
    }
}

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: ['币种', '数量', '持仓价格', '当前价格', '持仓价值', '保证金', '未实现盈亏'],
             rows: []}
    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)
        var infoList = [symbols[i], assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, 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) + '\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(){
    var short_value = Trade_value
    if(short_symbols.length<long_symbols.length){
        short_value = _N(long_symbols.length*Trade_value/short_symbols.length,0)
    }
    var long_value = Trade_value
    if(short_symbols.length>long_symbols.length){
        long_value = _N(short_symbols.length*Trade_value/long_symbols.length,0)
    }
    var symbol = ''
    for(var i=0; i<short_symbols.length; i++){
        symbol = short_symbols[i]
        if(assets[symbol].ask_price == 0){ continue }
        if(assets[symbol].bid_value + short_value > Adjust_value){
            trade(symbol, 'sell', assets[symbol].bid_value + short_value)
        }
        if(assets[symbol].ask_value + short_value < -Adjust_value){
            trade(symbol, 'buy', -(assets[symbol].ask_value + short_value))
        }
    }
    for(var i=0; i<long_symbols.length; i++){
        symbol = long_symbols[i]
        if(assets[symbol].ask_price == 0){ continue }
        if(assets[symbol].bid_value - long_value > Adjust_value){
            trade(symbol, 'sell', assets[symbol].bid_value-long_value)
        }
        if(assets[symbol].ask_value - long_value < -Adjust_value){
            trade(symbol, 'buy', long_value-assets[symbol].ask_value)
        }
    }   
}

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

متعلقہ

مزید

ہائےکیا آپ کو لگتا ہے کہ آپ کو اس کی ضرورت ہے؟

wfwfaf1اپ ڈیٹ اکاؤنٹ ((() میں ضرورت ہے if ((pair.slice ((pair.length-4, pair.length) == "USDT") چونکہ بسڈ معاہدہ موجود ہے ، لہذا اسٹوریج کی معلومات کو اپ ڈیٹ کرتے وقت یہ فیصلہ کرنے کی ضرورت ہوتی ہے کہ آیا ہدف معاہدہ کی پوزیشن ہے یا نہیں ، اس کے بارے میں مزید فیصلہ کرنے کی ضرورت ہے۔ دوسری صورت میں، ایک سے زیادہ پوزیشنوں کی معلومات کو الجھن میں ڈال دیا جائے گا، جس کی وجہ سے لامحدود ادائیگی کی جائے گی.