Futures_Binance
কৌশলটি হ'ল বৈচিত্র্যময় সমতুল্যতাকে একটি বেস বেছে নেওয়া কয়েন হিসাবে বিভক্ত করা এবং একই সাথে ঝুঁকি এবং উদ্বায়ীতা হ্রাস করার জন্য বিটকয়েন হেজিংয়ের মতো পজিশনগুলি। দামের উদ্বায়ীতার সাথে সাথে, ক্রমাগত পজিশনগুলি সামঞ্জস্য করা হয় যাতে শূন্যপদগুলির মান ধ্রুবক থাকে এবং বহু শূন্যপদগুলি সমান হয়।মূলত সময়মতো জাল কয়েন - বিটকয়েন মূল্য সূচকগত দুই মাসের পারফরম্যান্স ((৩ গুণ বা তার বেশি লিভারেজ, তথ্য আপডেট করা হয়েছে ৪.৮) গত সপ্তাহে কয়েন বিটকয়েনের তুলনায় বেড়েছে, তাই ক্ষতি হয়েছে, আপনি যদি একাধিক কয়েন দেখেন তবে আপনি প্যারামিটারে সেট করতে পারেনঃ
ডিফল্টরূপে কৌশলটি হ'ল ডাবল বিটকয়েনগুলিকে খালি কয়েন হিসাবে করা, আপনি বিপরীতভাবেও করতে পারেন (যদি আপনি মনে করেন যে কয়েনগুলি নীচে রয়েছে) এবং সিদ্ধান্ত নেওয়ার ক্ষমতা আপনার নিজের উপর রয়েছে।
১. শেয়ার ও অ্যাকাউন্টের আপডেট
২. প্রতিটি মুদ্রার শূন্যস্থানের মূল্য আপডেট করুন এবং শূন্যস্থানের পরিমাণ সংশোধন করার প্রয়োজন কিনা তা নির্ধারণ করুন
৩. সর্বমোট শূন্যপদের অবস্থান আপডেট করা, বহুপদ ধরে রাখা নির্ধারণ করা এবং বহুপদ স্থিতিগুলি সংশোধন করা উচিত কিনা তা নির্ধারণ করা
4. অর্ডার, অর্ডার পরিমাণ হিমবাহ দ্বারা অর্পণ করা হয়, প্রতিপক্ষের দাম অনুযায়ী লেনদেন ((একটি কিনুন এবং একটি বিক্রি করুন) ।
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 এর বেশি অবস্থান ধরে রাখে।
স্টেট প্যাকেজের লিভারেজ হ'ল গ্যারান্টিযুক্ত অর্থের অনুপাত যা খুব বেশি হওয়া উচিত নয়।
যখন খালি মুদ্রার দাম বেড়ে যায়, তখন চুক্তির মূল্য বৃদ্ধি পায়, তখন হ্রাস করা হয়, বিপরীতে মুনাফা হ্রাস করা হয়। এটি সামগ্রিক চুক্তির মূল্যকে স্থিতিশীল রাখে। টিকটিকগুলি স্বতন্ত্র বাজারের বাইরে বেরিয়ে আসার সম্ভাবনা রয়েছে, বর্তমানে এক বছরের চক্র থেকে দেখা যায়, টিকটিকগুলি নীচে থাকতে পারে এবং নীচে থেকে অনেক বেশি উঠতে পারে। এটি কীভাবে ব্যবহার করা হয় তার উপর নির্ভর করে, আপনি যদি টিকটিকগুলি ভালভাবে দেখেন এবং মনে করেন যে আপনি ইতিমধ্যে নীচে এসেছেন, তবে দিকটি পরিচালনা করতে পারেন এবং একাধিক সূচক করতে পারেন। অথবা আপনি যদি কোনও মুদ্রা (যদিও টিকটিনের চেয়ে বেশি নয়) চান তবে তাদের সাথে হেজিং করতে পারেন।
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") যেহেতু বিএসডি চুক্তি রয়েছে, তাই হোল্ডিংয়ের তথ্য আপডেট করার সময় লক্ষ্যযুক্ত চুক্তির অবস্থান কিনা তা নির্ধারণের জন্য আরও একটি লাইন বিবেচনা করা প্রয়োজন। অন্যথায় একাধিক পজিশনের তথ্য বিভ্রান্তি সৃষ্টি করবে, যার ফলে অসীম পরিমাণে পেমেন্ট হবে।