Futures_Binance
حکمت عملی میں مساوات کو تقسیم کرنے کے لئے ایک باسکٹ کوٹ کو منتخب کیا جاتا ہے ، جبکہ مساوات کی پوزیشنوں کو زیادہ سے زیادہ بٹ کوائنز کا خطرہ اور اتار چڑھاؤ کو کم کرنے کے ل.۔ قیمت میں اتار چڑھاؤ کے ساتھ ، پوزیشنوں کو مستقل طور پر ایڈجسٹ کیا جاتا ہے تاکہ مساوات کی قیمت مستقل رہے اور متعدد پوزیشنوں کو مساوی بنایا جاسکے۔بٹ کوائن کی قیمتوں کا انڈیکسگزشتہ دو مہینوں کی کارکردگی (لیوریج تقریبا 3 گنا ، اعداد و شمار کو 4.8 تک اپ ڈیٹ کیا گیا ہے) ، پچھلے ایک ہفتے کے دوران ، بٹ کوائن کے مقابلے میں ٹوکریوں میں اضافہ ہوا ہے ، لہذا نقصانات ، اگر آپ زیادہ ٹوکریوں کو دیکھتے ہیں تو ، آپ پیرامیٹرز میں سیٹ کرسکتے ہیں:
اگر آپ کو لگتا ہے کہ آپ کے پاس بہت زیادہ بٹ کوائنز ہیں تو ، آپ کو یہ بھی کرنا چاہئے کہ اگر آپ کو لگتا ہے کہ آپ کے پاس بہت زیادہ بٹ کوائنز ہیں تو ، آپ اس کے برعکس بھی کرسکتے ہیں (اگر آپ کو لگتا ہے کہ آپ کے پاس بہت کم بٹ کوائنز ہیں) ، اور فیصلہ آپ کے پاس ہے۔
1. مارکیٹ اور اکاؤنٹ ہولڈنگ کو اپ ڈیٹ کریں
2۔ ہر سکوں کی خالی ہولڈنگ کی قیمت کو اپ ڈیٹ کریں اور فیصلہ کریں کہ آیا خالی ہولڈنگ کو ایڈجسٹ کرنے کی ضرورت ہے یا نہیں۔
3۔ مجموعی طور پر خالی پوزیشنوں کو اپ ڈیٹ کریں ، متعدد پوزیشنوں کا تعین کریں اور فیصلہ کریں کہ متعدد پوزیشنوں کو ایڈجسٹ کرنا ہے یا نہیں۔
4۔ آرڈر کرنا اور مقدار کا فیصلہ آئس ماؤنٹین کی طرف سے کیا جاتا ہے اور قیمت کے مطابق کیا جاتا ہے۔مندرجہ ذیل حکم کے بعد فوری طور پر منسوخ (تو آپ کو بہت سے منسوخ کرنے میں ناکام سیل 400: {
یہ فیصلہ کرتا ہے کہ مختصر علامتوں ، لمبی علامتوں کی تجارت کی جوڑی زیادہ ہے ، زیادہ سے زیادہ کرنسیوں میں سے ہر ایک کی افتتاحی قیمت ٹریڈ ویلیو ہے ، کم سے کم کرنسیوں میں سے ہر ایک کے معاہدے کی قیمت ہیجنگ کی ضرورت کی اوسط ہے۔
اگر صرف خالی بی ٹی سی ، زیادہ 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 پوزیشنیں ہیں۔
اسٹیٹس ٹینڈر میں لیوریج کا مطلب ہے کہ بیمہ کی رقم کا تناسب استعمال کیا گیا ہے اور یہ زیادہ نہیں ہونا چاہئے۔
جب خالی کرنسی کی قیمت بڑھتی ہے تو ، معاہدے کی قیمت بڑھتی ہے ، اس وقت کم ہوتی ہے ، اس کے برعکس منافع بڑھتا ہے۔ اس سے مجموعی معاہدے کی قیمت مستقل رہتی ہے۔ کوٹکوئن آزادانہ طور پر مارکیٹ سے باہر نکلنے کا امکان بہت زیادہ ہے ، فی الحال ایک سال کے دورانیے پر غور کرتے ہوئے ، کوٹکوئن نیچے ہوسکتی ہے ، اور نیچے سے بہت زیادہ بڑھنے کا امکان ہے۔ اس پر منحصر ہے کہ کس طرح استعمال کیا جاتا ہے ، اگر آپ کو کوٹکوئن کو اچھی طرح سے دیکھتے ہیں اور سمجھتے ہیں کہ آپ نیچے پہنچ چکے ہیں تو ، سمت میں کام کیا جاسکتا ہے ، متعدد اشارے کریں۔ یا اگر آپ کو کسی قسم کی کرنسی (ضروری طور پر ٹوکن سے زیادہ نہیں) کی امید ہے تو ، ان کے خلاف ہیجنگ کیا جاسکتا ہے۔
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") چونکہ بسڈ معاہدہ موجود ہے ، لہذا اسٹوریج کی معلومات کو اپ ڈیٹ کرتے وقت یہ فیصلہ کرنے کی ضرورت ہوتی ہے کہ آیا ہدف معاہدہ کی پوزیشن ہے یا نہیں ، اس کے بارے میں مزید فیصلہ کرنے کی ضرورت ہے۔ دوسری صورت میں، ایک سے زیادہ پوزیشنوں کی معلومات کو الجھن میں ڈال دیا جائے گا، جس کی وجہ سے لامحدود ادائیگی کی جائے گی.