وسائل لوڈ ہو رہے ہیں... لوڈنگ...

کریپٹوکرنسی کی کوانٹیٹیو ٹریڈنگ حکمت عملی تبادلہ ترتیب

مصنف:نیکی, تخلیق: 2019-09-16 14:55:26, تازہ کاری: 2023-11-07 20:50:11

img

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

سیکھنے کا پلیٹ فارم اب بھی ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کا استعمال کرتا ہے (https://www.fmz.com), اور مارکیٹ cryptocurrency مارکیٹ کے طور پر منتخب کیا جاتا ہے.

کثیر کریپٹو کرنسی کی حکمت عملی کا ڈیزائن

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

عام طور پر اس طرح ڈیزائن کیا جاتا ہے:

function Process (symbol) {
     exchange.IO("currency", symbol)
     var ticker = _C(exchange.GetTicker)
     Log("has switched trading pairs, processing trading pairs according to strategy logic:", symbol, "quotes: ", ticker)
     // ...
     // ..
     // .
}

function main(){
     var symbols = ["BTC_USDT", "LTC_USDT", "ETH_USDT"]
     while (true) {
         for (var i = 0 ; i < symbols.length; i++) {
             Process(symbols[i])
             Sleep(500)
         }
     }
}

ہم روبوٹ کی تشکیل:

img

img

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

یہ دیکھا جا سکتا ہے کہ ہم تین ٹریڈنگ جوڑے کی وضاحت: BTC_USDT، LTC_USDT، ETH_USDT، لوپ میں، iteratively مارکیٹ کوٹ حاصل، اور معلومات حاصل کرنے کے بعد، یہ خاص طور پر مارکیٹ کا پتہ لگانے اور حکمت عملی کی طرف سے ڈیزائن ٹریڈنگ منطق کو متحرک کر سکتے ہیں.

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

یقینا دیگر ڈیزائن کے اختیارات ہیں، جو ہم ذیل میں متعارف کرایا جائے گا.

ایک ہی ایکسچینج اکاؤنٹ میں روبوٹ کے لئے متعدد ایکسچینج اشیاء کی تشکیل

مختلف تجارتی جوڑوں کے مارکیٹ کے اعداد و شمار کو متعدد تبادلہ اشیاء کے ذریعہ حاصل کیا جاتا ہے ، اور یہ تکرار حکمت عملی منطق میں عملدرآمد کیا جاتا ہے۔

مثال کے طور پر ، روبوٹ کے لئے تین ایکسچینج آبجیکٹ تشکیل دے کر روبوٹ کو تشکیل دیں۔ تجارتی جوڑے بالترتیب BTC_USDT ، LTC_USDT ، اور ETH_USDT پر مقرر ہیں۔

img

نام OKEX اسپاٹ V3 ٹیسٹ تبادلہ آبجیکٹ ہے، ڈیش بورڈ کے صفحے پر، تبادلہ ترتیب صفحہ:

img

تمام کیا.

ہم نے ان کوڈوں میں تھوڑا سا تبدیلی کی، کیونکہ اس بار ہم نے روبوٹ میں متعدد ایکسچینج اشیاء شامل کیں، جو کہ ٹریڈنگ جوڑی BTC_USDT، LTC_USDT، ETH_USDT کی ایکسچینج اشیاء ہیں۔

function Process (e) {
    var ticker = _C(e.GetTicker)
    Log("exchange", e.GetName(), "Process trading pairs according to strategy logic:", e.GetCurrency(), "Quotes:", ticker)
    // ...
    // ..
    // .
}  

function main(){
    while (true) {
        for (var i = 0 ; i < exchanges.length; i++) {
            Process(exchanges[i])
            Sleep(500)
        }
    }
}

روبوٹ چلائیں:

img

مثال کے طور پر ہم نے اوپر بیان کیا ہے ، چاہے تجارتی جوڑوں کو تبدیل کرنا ہو یا تشکیل شدہ اکاؤنٹ کے متعدد مختلف تجارتی جوڑوں کے لئے تجارتی اعتراض شامل کرنا ہو۔ یہ سب صرف تبادلہ اکاؤنٹ کی تشکیل کا استعمال کر رہے ہیں (ایک تشکیل شدہ تبادلہ کا استعمال کرتے ہوئے) ۔

تو آپ کو ایک حکمت عملی میں ایک سے زیادہ تبادلہ اکاؤنٹس کا استعمال کیسے کرتے ہیں؟

متعدد ایکسچینج اکاؤنٹس کے استعمال کی حکمت عملی

کچھ حکمت عملی جیسے کثیر ایکسچینج کراس مارکیٹ ہیجنگ، ایک ہی ایکسچینج کے اندر کثیر اکاؤنٹ کی حکمت عملی.

  • مختلف تبادلے کے ساتھ متعدد تبادلے کی ترتیب

img

مثال کے طور پر، ہم نے ڈیش بورڈ پر 2 تبادلے تشکیل دیا ہے -> تبادلے -> تبادلے کا صفحہ شامل کریں.

ہم حکمت عملی میں ان دو تبادلے کی طرف سے تشکیل اکاؤنٹس کی اثاثہ معلومات تک رسائی حاصل کر سکتے ہیں.

img

function main(){
     Log(exchanges[0].GetAccount()) // Print the account asset information of the first exchange object.
     Log(exchanges[1].GetAccount()) // ... Print the asset information of the Bit-Z exchange
}

یقینا، میں بھی ایک تبادلے کے لئے ایک دوسرے اور تیسرے اکاؤنٹ تبادلہ ترتیب شامل کر سکتے ہیں.

  • ایک ہی ایکسچینج کے ساتھ متعدد تبادلے کی ترتیب.

مثال کے طور پر، ہم Huobi فیوچر کے لئے ایک اور اکاؤنٹ شامل.

img

جیسا کہ آپ دیکھ سکتے ہیں، یہ دو Huobi Futures تبادلے کے اکاؤنٹس کو ترتیب دیتا ہے.

img

جب حکمت عملی بنائی جاتی ہے تو ، منتخب کرنے کے لئے روبوٹ کی تشکیل میں ترمیم کریں آپشن میں ایک ہووبی فیوچر ایکسچینج آبجیکٹ ظاہر ہوتا ہے۔

img

مثال کے طور پر، یہ دو اکاؤنٹس کو پہلے فروخت کرنے اور پھر عام گرڈ کی حکمت عملی کے ساتھ خریدنے کی اجازت دیتا ہے (اپ) یا پہلے خریدنے اور پھر فروخت (نیچے).

مندرجہ بالا دو مثالوں کے ذریعے

یہاں روبوٹ پر متعدد تبادلہ اشیاء کی تشکیل اور روبوٹ کے لئے ایک ہی تبادلہ اکاؤنٹ کے لئے متعدد تبادلہ اشیاء کی تشکیل کے درمیان فرق ہے:

ایک ہی ایکسچینج اکاؤنٹ میں روبوٹ کے لئے متعدد ایکسچینج آبجیکٹ ہیں کی یہ چمکتی ہوئی اور مذکورہ بالا مثال کسی حد تک ملتی جلتی ہے ، لیکن اختلافات ہیں۔

فرق یہ ہے کہ مندرجہ بالا مثال ایک تبادلہ ترتیب ہے، یعنی:

img

جب روبوٹ تبادلہ آبجیکٹ کی تشکیل کرتا ہے، تو یہ ہمیشہ استعمال کرتا ہے:

img

یہ ترتیب.

یہ صرف ہے کہ جب آپ کو ایک تبادلہ آبجیکٹ شامل، ٹریڈنگ جوڑی کی ترتیبات مختلف ہیں.

اگر GetAccount فنکشن کو بلایا جائے تو اسی اکاؤنٹ کی اثاثہ کی معلومات تک ہمیشہ رسائی حاصل کی جاتی ہے۔

تاہم:

img

اس طرح تشکیل شدہ دو ہوبی فیوچر ایکسچینج اشیاء ، اگرچہ وہ تمام ہوبی فیوچر ہیں ، مختلف ایکسچینج اکاؤنٹس کی نمائندگی کرتے ہیں۔

  • تبادلے کی ترتیب کا استعمال کریپٹوکرنسی فیوچر کی حکمت عملی کے ڈیزائن کو آسان بناتا ہے۔

کبھی کبھی کریپٹوکرنسی معاہدہ ہیجنگ کی حکمت عملی میں ، فوری تجارتی مواقع کو استعمال کرنے کے ل many ، متعدد منظرناموں کو بیک وقت رکھنے کی ضرورت ہوتی ہے۔ تاہم ، چونکہ معاہدہ مختلف ہے ، لہذا جب آپ مارکیٹ کی قیمت حاصل کرتے ہیں اور آرڈر دیتے ہیں تو آپ کو اسی معاہدے پر سوئچ کرنے کی ضرورت ہوتی ہے۔exchange.Goایک ترتیب دینے کے فنکشن کو انجام دینے یا اقتباس حاصل کرنے کے لئے، ہم وقت سازی کے ساتھ ایک مسئلہ ہے، بہت تیز نہیں. اور سوئچ معاہدے کے ڈیزائن بھی منطق اتنا آسان نہیں بناتا. کیا ایک بہتر طریقہ ہے؟

ہم روبوٹ کو دو ایکسچینج اشیاء شامل کر سکتے ہیں ایک ہی ایکسچینج اکاؤنٹ میں روبوٹ کے لئے متعدد ایکسچینج اشیاء کو ترتیب دیں

img

پھر اس تبادلے کی ترتیب کا استعمال ایک اور تبادلے کا اعتراض شامل کرنے کے لئے.

ایک اشارہ باکس پاپ اپ ہو جائے گا!

img

ایک تبادلہ اکاؤنٹ کی ترتیب، آپ کو ایک ہی کرنسی یا ٹریڈنگ جوڑی کے تبادلہ اشیاء شامل نہیں کر سکتے ہیں.

میں کیا کروں؟ ایسا لگتا ہے کہ حکمت عملی روبوٹ دو تبادلہ اشیاء استعمال نہیں کر سکتے ہیں، اور تبادلہ اعتراض ایک تبادلہ اکاؤنٹ نمبر سے منسلک ہے؟

اب بھی ایک راستہ ہے!

چلو ڈیش بورڈ -> ایکسچینج پر جائیں، اور پھر ایک OKEX فیوچر ایکسچینج ترتیب شامل کریں.

img

جب ترتیب دیا گیا ہو تو محفوظ کریں پر کلک کریں۔

img

اس طرح ہمارے پاس دو تبادلہ کی ترتیبات ہیں، لیکن ایک ہی API کلید کی ترتیب کی معلومات استعمال کی جاتی ہے.

img

اس کے کیا فوائد ہیں؟

ایک حکمت عملی لکھتے وقت، ڈیزائن بہت آسان ہو جائے گا!

function main(){
    exchanges[0].SetContractType("quarter") // Set the first added exchange object. The current contract is a quarterly contract.
    exchanges[1].SetContractType("this_week") // Set the second added exchange object, the current contract is the current week contract
    
    while (true) {
        var beginTime = new Date().getTime() // Record the timestamp from which this time the market quote was taken.
        var rA = exchanges[0].Go("GetTicker") // Create a concurrent thread to get the first exchange object, which is the market data for the quarterly contract.
        var rB = exchanges[1].Go("GetTicker") // Create a concurrent thread to get the second exchange object, which is the market data for the weekly contract.
        
        var tickerA = rA.wait() // The two threads executing each other perform their own tasks, waiting to get the data. When A waits, the B task is also executing.
        var tickerB = rB.wait() // So it seems to be sequential execution, actually at the bottom of the concurrency. Only when you get the order is to get A first, and get B.
        var endTime = new Date().getTime() // Record the timestamp at the end of the two contract quotes.
        
        if (tickerA && tickerB) { // If there is no problem with the data obtained, execute the following logic.
            var diff = tickerA.Last - tickerB.Last // calculate the difference
            $.PlotLine("diff", diff) // Use the line drawing library to plot the difference on the chart.
            if (diff > 500) { // If the spread is greater than 500, hedge arbitrage (of course, the difference of 500 is relatively large, rarely seen.)
                // Hedging
                rA = exchanges[0].Go("Sell", tickerA.Buy, 1) // Concurrent threads create a selling order under the quarterly contract
                rB = exchanges[1].Go("Buy", tickerB.Sell, 1) // Concurrent thread create a buying order under the weekly contract
                
                var idA = rA.wait() // Waiting for the return of placing order results, returning the order ID
                var idB = rB.wait() // ...
            }
            
            // ...
        }
        
        LogStatus(_D(), "Concurrently get two contract quotes taking time:", endTime - beginTime, "millisecond.") // Shows the time on the status bar to know that the program is executing.
        Sleep(500)
    }

کیا یہ ڈیزائن کی حکمت عملی بہت آسان اور واضح ہے؟

حقیقی مارکیٹ آپریشن:

img

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


متعلقہ

مزید