نوکریاں، اسے چیک کریں آپ کو کریپٹوکرنسی کی مقدار کی تجارت میں لے جائیں (7)

مصنف:نینا باداس, تخلیق: 2022-04-22 11:59:32, تازہ کاری: 2022-04-22 12:01:11

نوکریاں، اسے چیک کریں آپ کو کریپٹوکرنسی کی مقدار کی تجارت میں لے جائیں (7)

پچھلے مضمون میں ، ہم نے ایک ساتھ مل کر ایک سادہ ملٹی علامت گرڈ حکمت عملی کا سوچا اور ڈیزائن کیا ہے۔ اگلا ، ہم مقداری تجارت کی راہ پر سیکھنا اور آگے بڑھنا جاری رکھیں گے۔ اس مضمون میں ، ہم ایک زیادہ پیچیدہ حکمت عملی ڈیزائن - ہیج حکمت عملی کے ڈیزائن پر تبادلہ خیال کریں گے۔ مضمون میں کثیر علامت کراس پیریڈ ہیج حکمت عملی ڈیزائن کرنے کا منصوبہ بنایا گیا ہے۔ جب بات کراس پیریڈ ہیج حکمت عملی کی ہو تو ، جو لوگ فیوچر ٹریڈنگ سے واقف ہیں انہیں اس سے واقف ہونا چاہئے۔ ابتدائیوں کے ل 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)
    }
}

بوٹ آپریشن

img

کچھ دیر کے لئے بھاگ.

img

پہلے پھیلاؤ کا مشاہدہ کریں!


مزید