پچھلے مضمون میں ، ہم نے ایک ساتھ مل کر ایک سادہ ملٹی علامت گرڈ حکمت عملی کا سوچا اور ڈیزائن کیا ہے۔ اگلا ، ہم مقداری تجارت کی راہ پر سیکھنا اور آگے بڑھنا جاری رکھیں گے۔ اس مضمون میں ، ہم ایک زیادہ پیچیدہ حکمت عملی ڈیزائن - ہیج حکمت عملی کے ڈیزائن پر تبادلہ خیال کریں گے۔ مضمون میں کثیر علامت کراس پیریڈ ہیج حکمت عملی ڈیزائن کرنے کا منصوبہ بنایا گیا ہے۔ جب بات کراس پیریڈ ہیج حکمت عملی کی ہو تو ، جو لوگ فیوچر ٹریڈنگ سے واقف ہیں انہیں اس سے واقف ہونا چاہئے۔ ابتدائیوں کے ل you ، آپ ان تصورات کو نہیں سمجھ سکتے ہیں ، لہذا آئیے کراس پیریڈ ہیج کے بارے میں تصورات کی مختصر وضاحت کریں۔
عام طور پر ، کراس پیریڈ ہیج میں ایک معاہدہ ہوتا ہے جس میں لمبا اور ایک معاہدہ ہوتا ہے جس میں مختصر ہوتا ہے ، اور ایک ہی وقت میں پوزیشنوں کو بند کرنے کے لئے تین حالات (لمبا ، مختصر) کا انتظار کرتا ہے: وقت
دوسرے حالات کے لئے جب فلوٹنگ نقصانات ہوتے ہیں تو ، آپ مزید پوزیشنوں کو برقرار رکھ سکتے ہیں یا شامل کرتے رہ سکتے ہیں۔ (کیونکہ اسپریڈ کی اتار چڑھاؤ ایک طرفہ اتار چڑھاؤ سے کم ہے ، لہذا خطرہ کم ہوگا ، لیکن نوٹ کریں کہ یہ صرف تقابلی ہے!)
Set A1 as the price of contract A at the time 1, and set B1 as the price of contract B at the time 1. At the time, do short in contract A, at A1; do long in contract B, at B1.
Set A2 as the price of contract A at the time 2, and set B2 as the price of contract B at the time 2. At the time, close positions (close short) of contract A, at A2; close positions (close long) of contract B, at B2.
Spread at time 1: A1 - B1 = X
Spread at time 2: A2 - B2 = Y
X - Y = A1 - B1 - (A2 - B2)
X - Y = A1 - B1 - A2 + B2
X - Y = A1 - A2 + B2 - B1
As you can see, "A1 - A2 " is the profit spread of closing position in contract A.
"B2 - B1" is the profit spread of closing position in contract B. It is profitable, as long as the closing postion spread of the two contracts is a positive number, namely A1 - A2 + B2 - B1 > 0. That is to say as long as X - Y > 0,
for: X - Y = A1 - A2 + B2 - B1
It is concluded that as long as the spread X when opening a position is greater than the spread Y when closing a position, it is profitable (note that it is making short in contract A and making long in contract B to open a position; if the situation is reversed, the result will be opposite). Of course, this is just theoretical, and factors such as the handling fee and slippoint should also be considered in practice.
چونکہ کریپٹوکرنسی پلیٹ فارمز میں ترسیل کے معاہدے اور دائمی معاہدے دونوں ہوتے ہیں۔ اور فنڈنگ کی شرح کی وجہ سے دائمی معاہدوں کی قیمت ہمیشہ اسپاٹ قیمت کے قریب ہوتی ہے۔ پھر ہم ہیجنگ اور ثالثی کرنے کے لئے ترسیل کے معاہدوں اور دائمی معاہدوں کا استعمال کرنے کا انتخاب کرتے ہیں۔ ترسیل کے معاہدے کے ل we ، ہم نسبتا long طویل مدت کے ساتھ ایک کا انتخاب کرسکتے ہیں ، تاکہ ہیجنگ معاہدے کو کثرت سے طے کرنے کی ضرورت نہ ہو۔
بنیادی اصول سے واقف ہونے کے بعد ، آپ کو حکمت عملی لکھنے میں جلدی کرنے کی ضرورت نہیں ہے۔ سب سے پہلے ، پھیلاؤ کے اعدادوشمار بنائیں ، چارٹ چارٹ بنائیں ، اور پھیلاؤ کا مشاہدہ کریں۔ آئیے مل کر ملٹی علامت کی حکمت عملی کے بارے میں سیکھیں۔ ہم اسے ڈیزائن کرتے ہیںOKEX معاہدہ. یہ FMZ پر پلاٹ کرنے کے لئے بہت آسان ہے، اور آپ کو صرف چارٹ لائبریری کے ساتھ، encapsulated تقریب کا استعمال کرنے کی ضرورت ہےہائی چارٹس. API دستاویزات میں پلاٹنگ تقریب کی وضاحت:https://www.fmz.com/api#chart... چونکہ یہ ایک کثیر علامت کی حکمت عملی ہے ، لہذا سب سے پہلے ، یہ ضروری ہے کہ ان علامتوں کی قیمتوں میں پھیلاؤ کو پلاٹنگ سے پہلے طے کیا جائے۔ کوڈ میں ، پہلے دو صفیں لکھیں ، جو معاہدوں کی نمائندگی کرتے ہیں۔
var arrSwapContractType = ["BTC-USDT-SWAP", "LTC-USDT-SWAP", "ETH-USDT-SWAP", "ETC-USDT-SWAP"] // perpetual contract
var arrDeliveryContractType = ["BTC-USDT-210924", "LTC-USDT-210924", "ETH-USDT-210924", "ETC-USDT-210924"] // delivery contract
یہاں مقرر کردہ معاہدہ کوڈ کے مطابق ، چارٹ کی تشکیل کو شروع کریں۔ چارٹ کی تشکیل کو لامحدود لوپ میں نہیں لکھا جاسکتا ہے ، کیونکہ آپ نہیں جانتے کہ کون سا علامت کرنا ہے ، اور کتنے علامتوں کو کرنا ہے (جو arrDeliveryContractType اور arrSwapContractType کی اقدار کے مطابق طے ہوتے ہیں) ، لہذا چارٹ کی تشکیل ایک فنکشن کے ذریعہ واپس کردی جاتی ہے۔
function createCfg(symbol) {
var cfg = {
extension: {
// it is not part of the group, and is individually displayed; the default is 'group'
layout: 'single',
// the specified height, which can be set as string; "300px", which means it will be replaced by "300px" automatically through setting a value of 300
height: 300,
// the occupied unit value of the specified width, with a total value of 12
col: 6
},
title: {
text: symbol
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'plus',
data: []
}]
}
return cfg
}
function main() {
// declare arrCfg
var arrCfg = [] // declare an array to store the chart configuration information
_.each(arrSwapContractType, function(ct) { // iteratively record the array of perpetual contract codes, pass the "XXX-USDT" part of the contract name as a parameter to the "createCfg" function, construct the chart configuration information, and return
arrCfg.push(createCfg(formatSymbol(ct)[0])) // the chart configuration information "push" returned by "createCfg" is in the "arrCfg" array
})
var objCharts = Chart(arrCfg) // call the function Chart on FMZ platform, and create a chart controlled object called objCharts
objCharts.reset() // initialize the chart content
// the rest is omitted...
}
ہم اعداد و شمار تیار کرنے جا رہے ہیں؛ ہم OKEX معاہدے کے مجموعی مارکیٹ انٹرفیس کا استعمال کرتے ہیں:
USDT دائمی معاہدہ:
https://www.okex.com/api/v5/market/tickers?instType=SWAP
USDT میں ترسیل کا معاہدہ:
https://www.okex.com/api/v5/market/tickers?instType=FUTURES
یہاں ہم ایک فنکشن لکھتے ہیں جو دونوں انٹرفیس کے انکوائری سے نمٹنے کے لئے، اور ڈیٹا کو ایک فارمیٹ میں پروسیس کرتے ہیں:
function getTickers(url) {
var ret = []
try {
var arr = JSON.parse(HttpQuery(url)).data
_.each(arr, function(ele) {
ret.push({
bid1: parseFloat(ele.bidPx), // buy one price
bid1Vol: parseFloat(ele.bidSz), // volume of buy one price
ask1: parseFloat(ele.askPx), // ell one price
ask1Vol: parseFloat(ele.askSz), // volume of sell one price
symbol: formatSymbol(ele.instId)[0], // in the format of trading pair
type: "Futures", // type
originalSymbol: ele.instId // original contract code
})
})
} catch (e) {
return null
}
return ret
}
معاہدہ کوڈ پر عملدرآمد کرنے کے لئے ایک اور فنکشن لکھیں.
function formatSymbol(originalSymbol) {
var arr = originalSymbol.split("-")
return [arr[0] + "_" + arr[1], arr[0], arr[1]]
}
اگلا، ہمیں صرف حاصل کردہ اعداد و شمار کو دہرانے اور مماثل کرنے کی ضرورت ہے، پھیلاؤ کا حساب لگائیں، اور برآمد کرنے کے لئے چارٹ کریں، وغیرہ.
یہاں ہم نے اگلی سہ ماہی کے معاہدے 210924 اور مستقل معاہدے کے پھیلاؤ کا تجربہ کیا.
مکمل کوڈ:
// temporary parameters
var arrSwapContractType = ["BTC-USDT-SWAP", "LTC-USDT-SWAP", "ETH-USDT-SWAP", "ETC-USDT-SWAP"]
var arrDeliveryContractType = ["BTC-USDT-210924", "LTC-USDT-210924", "ETH-USDT-210924", "ETC-USDT-210924"]
var interval = 2000
function createCfg(symbol) {
var cfg = {
extension: {
// it is not part of the group, and is individually displayed; the default is 'group'
layout: 'single',
// the specified height, which can be set as string; "300px", which means it will be replaced by "300px" automatically through setting a value of 300
height: 300,
// the occupied unit value of the specified width, with a total value of 12
col: 6
},
title: {
text: symbol
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'plus',
data: []
}]
}
return cfg
}
function formatSymbol(originalSymbol) {
var arr = originalSymbol.split("-")
return [arr[0] + "_" + arr[1], arr[0], arr[1]]
}
function getTickers(url) {
var ret = []
try {
var arr = JSON.parse(HttpQuery(url)).data
_.each(arr, function(ele) {
ret.push({
bid1: parseFloat(ele.bidPx),
bid1Vol: parseFloat(ele.bidSz),
ask1: parseFloat(ele.askPx),
ask1Vol: parseFloat(ele.askSz),
symbol: formatSymbol(ele.instId)[0],
type: "Futures",
originalSymbol: ele.instId
})
})
} catch (e) {
return null
}
return ret
}
function main() {
// declare arrCfg
var arrCfg = []
_.each(arrSwapContractType, function(ct) {
arrCfg.push(createCfg(formatSymbol(ct)[0]))
})
var objCharts = Chart(arrCfg)
objCharts.reset()
while (true) {
// obtain the market quote data
var deliveryTickers = getTickers("https://www.okex.com/api/v5/market/tickers?instType=FUTURES")
var swapTickers = getTickers("https://www.okex.com/api/v5/market/tickers?instType=SWAP")
if (!deliveryTickers || !swapTickers) {
Sleep(2000)
continue
}
var tbl = {
type : "table",
title : "delivery-perpetual spread",
cols : ["trading pair", "delivery", "perpetual", "positive hedge", "negative hedge"],
rows : []
}
var subscribeDeliveryTickers = []
var subscribeSwapTickers = []
_.each(deliveryTickers, function(deliveryTicker) {
_.each(arrDeliveryContractType, function(symbol) {
if (deliveryTicker.originalSymbol == symbol) {
subscribeDeliveryTickers.push(deliveryTicker)
}
})
})
_.each(swapTickers, function(swapTicker) {
_.each(arrSwapContractType, function(symbol) {
if (swapTicker.originalSymbol == symbol) {
subscribeSwapTickers.push(swapTicker)
}
})
})
var pairs = []
var ts = new Date().getTime()
_.each(subscribeDeliveryTickers, function(deliveryTicker) {
_.each(subscribeSwapTickers, function(swapTicker) {
if (deliveryTicker.symbol == swapTicker.symbol) {
var pair = {symbol: swapTicker.symbol, swapTicker: swapTicker, deliveryTicker: deliveryTicker, plusDiff: deliveryTicker.bid1 - swapTicker.ask1, minusDiff: deliveryTicker.ask1 - swapTicker.bid1}
pairs.push(pair)
tbl.rows.push([pair.symbol, deliveryTicker.originalSymbol, swapTicker.originalSymbol, pair.plusDiff, pair.minusDiff])
for (var i = 0 ; i < arrCfg.length ; i++) {
if (arrCfg[i].title.text == pair.symbol) {
objCharts.add([i, [ts, pair.plusDiff]])
}
}
}
})
})
LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")
Sleep(interval)
}
}
کچھ دیر کے لئے بھاگ.
پہلے پھیلاؤ کا مشاہدہ کریں!