avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)

میں تخلیق کیا: 2021-06-09 14:30:43, تازہ کاری: 2023-09-19 21:45:29
comments   3
hits   2623

کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)

کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)

پچھلے مضمون میں، ہم نے ایک سادہ ملٹی ورائٹی گرڈ حکمت عملی کے بارے میں سوچا اور ڈیزائن کیا۔ اگلا، ہم مقداری تجارت کے راستے پر سیکھنا اور آگے بڑھنا جاری رکھیں گے۔ اس مضمون میں، ہم ایک زیادہ پیچیدہ حکمت عملی کے ڈیزائن پر بات کریں گے - ہیجنگ کی حکمت عملی کا ڈیزائن۔ یہ مضمون ایک کثیر قسم کی کراس پیریڈ ہیجنگ کی حکمت عملی وضع کرنے کا ارادہ رکھتا ہے، جو لوگ فیوچر ٹریڈنگ سے واقف ہیں ان سے واقف ہونا ضروری ہے۔ ہو سکتا ہے کہ نئے آنے والے ابھی تک ان تصورات کو نہ سمجھیں، اس لیے آئیے پہلے مختصر طور پر انٹر پیریڈ ہیجنگ کے تصور کی وضاحت کریں۔

کراس پیریڈ ہیجنگ

کراس پیریڈ ہیجنگ کا سیدھا مطلب ہے کہ ایک معاہدے پر لمبا رہنا، دوسرے معاہدے پر مختصر رہنا، اور بیک وقت پوزیشنز کو بند کرنے کے لیے درج ذیل تین حالات کا انتظار کرنا:

  • جب آپ لمبے جاتے ہیں تو آپ پیسہ کماتے ہیں اور جب آپ ایک طرف کا منافع (ایک کہاوت) دوسری طرف کے نقصان سے زیادہ ہوتا ہے تو، فائدے اور نقصان کو پورا کرنے کے بعد ، کچھ منافع ہو گا۔
  • جو لوگ لمبے عرصے تک جاتے ہیں وہ پیسہ کھو دیتے ہیں، جو کم جاتے ہیں وہ پیسہ کماتے ہیں، اور آپ اپنی پوزیشن اس وقت بند کر دیتے ہیں جب ایک طرف کا منافع دوسری طرف کے نقصان سے زیادہ ہوتا ہے….(اوپر کی طرح)۔
  • جو لوگ لمبے جاتے ہیں وہ پیسہ کماتے ہیں، اور جو کم جاتے ہیں وہ بھی پیسہ کماتے ہیں، تو اس کے علاوہ سوچنے کی کیا ضرورت ہے! پوزیشن بند کرو!

دوسری صورتوں میں، ایک تیرتا ہوا نقصان ہے، اور آپ اسے برقرار رکھ سکتے ہیں یا اپنی پوزیشن کو بڑھانا جاری رکھ سکتے ہیں۔ (چونکہ قیمت کے فرق میں اتار چڑھاؤ یکطرفہ اتار چڑھاؤ سے بہت ہلکا ہے، اس لیے متعلقہ خطرہ کم ہے۔ براہ کرم نوٹ کریں کہ یہ صرف رشتہ دار ہے!)

设A1为合约A在1时刻的价格,设B1为合约B在1时刻的价格,此时做空A合约,做空价格A1,做多B合约,做多价格B1。
设A2为合约A在2时刻的价格,设B2为合约B在2时刻的价格,此时平仓A合约(平空),平空价格A2,平仓B合约(平多),平多价格B2。

1时刻的差价:A1 - B1 = X 
2时刻的差价:A2 - B2 = Y 
X - Y = A1 - B1 - (A2 - B2)
X - Y = A1 - B1 - A2 + B2
X - Y = A1 - A2 + B2 - B1

可以看到,A1 - A2 就是A合约平仓的盈利差价。
B2 - B1就是B合约平仓的盈利差价。只要这两个平仓总体是正数,即:A1 - A2 + B2 - B1 > 0 就是盈利的。也就是说只要X - Y > 0。
因为:X - Y = A1 - A2 + B2 - B1

得出结论,只要开仓时的差价X大于平仓时的差价Y就是盈利的(注意是做空A,做多B开仓,搞反了就是相反的了),当然这个是理论上的,实际上还要考虑手续费、滑点等因素。

کیونکہ ڈیجیٹل کرنسی ایکسچینج میں ترسیل کے معاہدے اور دائمی معاہدے دونوں ہوتے ہیں۔ اس کے علاوہ، فنڈنگ ​​کی شرح کی وجہ سے، دائمی معاہدوں کی قیمت ہمیشہ سپاٹ قیمت کے قریب ہوتی ہے۔ پھر ہم ہیجنگ اور ثالثی کے لیے ترسیل کے معاہدوں اور دائمی معاہدوں کو استعمال کرنے کا انتخاب کرتے ہیں۔ ڈیلیوری کے لیے ایک طویل مدتی معاہدہ کا انتخاب کریں تاکہ آپ کو بار بار ہیجنگ کے معاہدے قائم کرنے کی ضرورت نہ پڑے۔

آئیے متعدد قسم کی قیمتوں کے فرق کے اعدادوشمار کرکے گرم جوشی پیدا کریں۔

ایک بار جب آپ بنیادی اصولوں سے واقف ہو جائیں تو، آپ کو حکمت عملی لکھنے میں جلدی کرنے کی ضرورت نہیں ہے۔ سب سے پہلے، قیمت کے فرق پر اعدادوشمار بنائیں، گراف بنائیں، اور قیمت کے فرق کا مشاہدہ کریں۔ آئیے سیکھتے ہیں کہ کس طرح ملٹی ورائٹی اسٹریٹجی چارٹس تیار کیے جائیں۔

ہم پر مبنی ہیں۔OKEX معاہدےڈیزائن کرنے کے لیے، FMZ پر ڈرائنگ بہت آسان ہے، آپ پیکیجڈ فنکشنز کا استعمال کرتے ہوئے آسانی سے ڈرا سکتے ہیں، چارٹ لائبریری ہےHighcharts. API دستاویزات پر ڈرائنگ فنکشن کی تفصیل: https://www.fmz.com/api#chart...

چونکہ متعدد قسمیں ہیں، آپ کو چارٹ بنانے سے پہلے پرنٹ کرنے کے لیے پہلے ان اقسام کی قیمتوں میں فرق کا تعین کرنا چاہیے۔ بنائے جانے والے معاہدوں کی نمائندگی کرنے کے لیے پہلے کوڈ میں دو صفیں لکھیں۔

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"]  // 交割合约

یہاں سیٹ کردہ کنٹریکٹ کوڈ کے مطابق چارٹ کی ترتیب کو شروع کریں۔ یہ چارٹ کنفیگریشن سخت کوڈڈ نہیں ہونی چاہیے، کیونکہ آپ نہیں جانتے کہ کون سی پروڈکٹ بنانا ہے یا کتنی پروڈکٹس بنانا ہیں (ان کا تعین arrDeliveryContractType اور arrSwapContractType کی قدروں سے ہوتا ہے)، اس لیے چارٹ کی ترتیب ایک فنکشن کے ذریعے واپس کی جاتی ہے۔ .

function createCfg(symbol) {
    var cfg = {
        extension: {
            // 不参于分组,单独显示,默认为分组 'group'
            layout: 'single', 
            // 指定高度,可以设置为字符串,"300px",设置数值300会自动替换为"300px"
            height: 300,      
            // 指定宽度占的单元值,总值为12
            col: 6
        },
        title: {
            text: symbol
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'plus',
            data: []
        }]
    }

    return cfg
}

function main() {
    // 声明arrCfg
    var arrCfg = []                                    // 声明一个数组,用来存放图表配置信息
    _.each(arrSwapContractType, function(ct) {         // 迭代记录永续合约代码的数组,用合约名称XXX-USDT部分作为参数传给createCfg函数,构造图表配置信息,返回
        arrCfg.push(createCfg(formatSymbol(ct)[0]))    // createCfg返回的图表配置信息push进arrCfg数组
    })
    var objCharts = Chart(arrCfg)                      // 调用FMZ平台的图表函数Chart,创建图表控制对象objCharts
    objCharts.reset()                                  // 初始化图表内容
    
    // 以下省略.....
}

اگلا، آئیے ڈیٹا تیار کرتے ہیں ہم 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),             // 买一价
                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 formatSymbol(originalSymbol) {
    var arr = originalSymbol.split("-")
    return [arr[0] + "_" + arr[1], arr[0], arr[1]]
}

جو باقی رہ جاتا ہے وہ بار بار حاصل کردہ ڈیٹا کو جوڑنا، قیمت کے فرق کا حساب لگانا، چارٹ کو آؤٹ پٹ کرنا وغیرہ ہے۔ یہاں جس چیز کی جانچ کی جاتی ہے وہ اگلے سہ ماہی معاہدے 210924 اور دائمی معاہدے کے درمیان قیمت کا فرق ہے۔ مکمل کوڈ:

// 临时参数
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: {
            // 不参于分组,单独显示,默认为分组 'group'
            layout: 'single', 
            // 指定高度,可以设置为字符串,"300px",设置数值300会自动替换为"300px"
            height: 300,      
            // 指定宽度占的单元值,总值为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() {
    // 声明arrCfg
    var arrCfg = []
    _.each(arrSwapContractType, function(ct) {
        arrCfg.push(createCfg(formatSymbol(ct)[0]))
    })
    var objCharts = Chart(arrCfg)
    objCharts.reset()
    
    while (true) {
        // 获取行情数据        
        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 : "交割-永续差价",
            cols : ["交易对", "交割", "永续", "正对冲", "反对冲"],
            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)
    }
}

ریئل ٹائم آپریشن

کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)

تھوڑی دیر کے لیے چلائیں ~

کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)

پہلے قیمت کے فرق کا مشاہدہ کریں! کریپٹو کرنسی حلقوں میں مقداری تجارت میں نئے بچے، براہ کرم اس پر ایک نظر ڈالیں - آپ کو کرپٹو کرنسی حلقوں میں مقداری تجارت کے قریب لے جانا (حصہ 7)