বিনয় টেকসই মাল্টি মুদ্রা হেজিং কৌশল (বিনয় বা মাল্টি মুদ্রা হেক্স সূচক) 10 এপ্রিল উন্নত বাগ, আপডেট প্রয়োজন

লেখক:ঘাস, তারিখঃ ২০২০-০৪-০৩ ১১ঃ১২ঃ৩১
ট্যাগঃবিন্যান্স

গুরুত্বপূর্ণ বিষয়বস্তু

  • এই গবেষণাটি অবশ্যই দেখবেন।https://www.fmz.com/digest-topic/5294⇒ কৌশলগত নীতি, ঝুঁকি, ট্রেডিংয়ের স্ক্রিনিং, প্যারামিটার সেটিং, পজিশন খোলার হার এবং মোট মূলধনের অনুপাত ইত্যাদি সম্পর্কে জ্ঞান।
  • পূর্ববর্তী রিপোর্টটি ডাউনলোড করুন এবং আপনার নিজের গবেষণা পরিবেশে আপলোড করুন। প্রকৃত পরিবর্তনগুলি আবার চালান। যদি আপনি ইতিমধ্যে এই রিপোর্টটি দেখে থাকেন তবে সাম্প্রতিক সপ্তাহের তথ্যগুলি আপডেট করুন।
  • কৌশলগুলি সরাসরি পুনরায় পরীক্ষা করা যায় না, গবেষণা পরিবেশে পুনরায় পরীক্ষা করা প্রয়োজন।
  • কৌশল কোড এবং ডিফল্ট প্যারামিটারগুলি কেবলমাত্র গবেষণার জন্য, বাস্তব ড্রাইভ চালানোর জন্য সতর্কতা অবলম্বন করা প্রয়োজন, আপনার গবেষণার উপর ভিত্তি করে সিদ্ধান্তের প্যারামিটারগুলি, যা আপনার জন্য একটি ভাল বিকল্প।নিজের ঝুঁকি
  • কৌশলটি প্রতিদিন লাভজনক হতে পারে না, ইতিহাসের দিকে ফিরে তাকান, 1-2 সপ্তাহের ব্যাস এবং প্রত্যাহার স্বাভাবিক, এবং বড় ব্যাকআপের সম্ভাবনা রয়েছে, যা সঠিকভাবে পরিচালনা করা দরকার
  • কোডটি সর্বজনীন, আপনি নিজের দ্বারা পরিবর্তন করতে পারেন, যদি কোনও সমস্যা হয় তবে মন্তব্যের প্রতিক্রিয়া স্বাগতম, এটি উদ্ভাবক বিনয়ন ফোরামে যোগদান করা ভাল ((গবেষণা প্রতিবেদনে যোগদানের উপায় রয়েছে) আপডেটের বিজ্ঞপ্তি পেতে)
  • কৌশলটি পুরো স্টকের মোডে চলতে হবে, দ্বিমুখী হোল্ডিং সেট আপ করবেন না, কৌশলটি কেবল বিএনএক্স ফিউচার সমর্থন করে, রোবট তৈরি করার সময় ডিফল্ট ট্রেডিং জোড়া এবং কে লাইন চক্র ব্যবহার করে, কৌশলটি কে লাইন ব্যবহার করে না
  • কৌশল এবং অন্যান্য কৌশল এবং ম্যানুয়াল অপারেশনগুলির মধ্যে দ্বন্দ্ব রয়েছে এবং এটি মনোযোগ দিতে হবে।
  • ভার্চুয়াল ডিস্কের জন্য বিদেশী হোস্টের প্রয়োজন, পরীক্ষার পর্যায়ে প্ল্যাটফর্মে আলি ক্লাউড হংকং সার্ভারটি এক ক্লিকে ভাড়া নিতে পারবেন, নিজের মাসিক পুরো ভাড়াটি সস্তা ((সর্বনিম্ন কনফিগারেশন সহ, পাঠ্যক্রমটি স্থাপন করুনঃhttps://www.fmz.com/bbs-topic/2848 )
  • বিএনএ-র ফিউচার এবং নোটগুলি আলাদাভাবে যোগ করা দরকার, বিএনএ-র ফিউচারগুলিFutures_Binance

কৌশলগত নীতি

কৌশলটি হ'ল বৈচিত্র্যময় সমতুল্যতাকে একটি বেস বেছে নেওয়া কয়েন হিসাবে বিভক্ত করা এবং একই সাথে ঝুঁকি এবং উদ্বায়ীতা হ্রাস করার জন্য বিটকয়েন হেজিংয়ের মতো পজিশনগুলি। দামের উদ্বায়ীতার সাথে সাথে, ক্রমাগত পজিশনগুলি সামঞ্জস্য করা হয় যাতে শূন্যপদগুলির মান ধ্রুবক থাকে এবং বহু শূন্যপদগুলি সমান হয়।মূলত সময়মতো জাল কয়েন - বিটকয়েন মূল্য সূচকগত দুই মাসের পারফরম্যান্স ((৩ গুণ বা তার বেশি লিভারেজ, তথ্য আপডেট করা হয়েছে ৪.৮) গত সপ্তাহে কয়েন বিটকয়েনের তুলনায় বেড়েছে, তাই ক্ষতি হয়েছে, আপনি যদি একাধিক কয়েন দেখেন তবে আপনি প্যারামিটারে সেট করতে পারেনঃ

ডিফল্টরূপে কৌশলটি হ'ল ডাবল বিটকয়েনগুলিকে খালি কয়েন হিসাবে করা, আপনি বিপরীতভাবেও করতে পারেন (যদি আপনি মনে করেন যে কয়েনগুলি নীচে রয়েছে) এবং সিদ্ধান্ত নেওয়ার ক্ষমতা আপনার নিজের উপর রয়েছে।

img

কৌশলগত যুক্তি

১. শেয়ার ও অ্যাকাউন্টের আপডেট ২. প্রতিটি মুদ্রার শূন্যস্থানের মূল্য আপডেট করুন এবং শূন্যস্থানের পরিমাণ সংশোধন করার প্রয়োজন কিনা তা নির্ধারণ করুন ৩. সর্বমোট শূন্যপদের অবস্থান আপডেট করা, বহুপদ ধরে রাখা নির্ধারণ করা এবং বহুপদ স্থিতিগুলি সংশোধন করা উচিত কিনা তা নির্ধারণ করা 4. অর্ডার, অর্ডার পরিমাণ হিমবাহ দ্বারা অর্পণ করা হয়, প্রতিপক্ষের দাম অনুযায়ী লেনদেন ((একটি কিনুন এবং একটি বিক্রি করুন) ।Unknown order sent., normal phenomenon. Unknown order sent.: code-2011, msg: 5.再次循环

Short_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_symbols, Long_s

যদি কেবলমাত্র বিটিসি খালি থাকে, তবে TRX, DASH, ONT, QTUM, ট্রেড_ভ্যালু 50 হয়, তবে TRX, DASH, ONT, QTUM এর 50 টি পজিশন রয়েছে এবং বিটিসির 50 * 4 টি খালি পজিশন রয়েছে।

যদি কেবলমাত্র বিটিসি, খালি টিআরএক্স, ড্যাশ, ওএনটি, কিউটিইউএম, ট্রেড_ভ্যালু 50 হয় তবে টিআরএক্স, ড্যাশ, ওএনটি, কিউটিইউএম উভয়ই 50 খালি অবস্থান এবং বিটিসি 50 * 4 এর বেশি অবস্থান ধরে রাখে।

স্টেট প্যাকেজের লিভারেজ হ'ল গ্যারান্টিযুক্ত অর্থের অনুপাত যা খুব বেশি হওয়া উচিত নয়।

কৌশলগত পরামিতি

img

  • Short_symbols: ফাঁকা মুদ্রা, টিকটিকি দিয়ে আলাদা
  • Long_symbols: একাধিক মুদ্রা তৈরি করুন, এটি ফাঁকা থাকতে পারে, হেকিং ছাড়াই, সরাসরি ফাঁকা।
  • Trade_value: একক মুদ্রার মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্রা মুদ্র
  • Adjust_value: চুক্তির মূল্য (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)
    }
}

সম্পর্কিত

আরো

ওহ!আপনি কি মনে করেন যে, এইসব পণ্যের দাম কম নাকি বেশি?

wfwfaf1updateAccount (()) এর জন্য প্রয়োজন if ((pair.slice ((pair.length-4, pair.length) == "USDT") যেহেতু বিএসডি চুক্তি রয়েছে, তাই হোল্ডিংয়ের তথ্য আপডেট করার সময় লক্ষ্যযুক্ত চুক্তির অবস্থান কিনা তা নির্ধারণের জন্য আরও একটি লাইন বিবেচনা করা প্রয়োজন। অন্যথায় একাধিক পজিশনের তথ্য বিভ্রান্তি সৃষ্টি করবে, যার ফলে অসীম পরিমাণে পেমেন্ট হবে।