ڈیجیٹل کرنسی کی مقدار کی تجارت کی حکمت عملی تبادلہ کی تشکیل کی تفصیلات

مصنف:چھوٹا سا خواب, تخلیق: 2019-09-02 09:39:59, تازہ کاری: 2023-10-19 21:07:41

img

ڈیجیٹل کرنسی کی مقدار کی تجارت کی حکمت عملی تبادلہ کی تشکیل کی تفصیلات

ابتدائی ڈیجیٹل کرنسی کی مقدار کی تجارت کی حکمت عملی کے ڈیزائن کے دوران ، اکثر مختلف قسم کی حکمت عملی کی ضروریات ہوتی ہیں ، اور اس سے قطع نظر کہ کون سی زبان ، کون سا پلیٹ فارم استعمال کیا جاتا ہے ، مختلف حالات میں حکمت عملی کے ڈیزائن کی ضروریات کا سامنا کرنا پڑتا ہے۔ مثال کے طور پر ، بعض اوقات مختلف قسم کی باریوں کی ضرورت ہوتی ہے ، بعض اوقات متعدد پلیٹ فارمز کو ہیجنگ کی ضرورت ہوتی ہے ، بعض اوقات مختلف قسم کے بازاروں کی ضرورت ہوتی ہے ، وغیرہ۔ ذیل میں ہم نے حکمت عملی کی ضروریات کو پورا کرنے کے لئے ڈیزائن کے کچھ تجربات شیئر کیے ہیں۔ سیکھنے کا پلیٹ فارم اب بھی موجد کی مقدار کی تجارت کا پلیٹ فارم استعمال کرتا ہےhttps://www.fmz.comاس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ.

  • 'ملٹی کرنسی' کی حکمت عملی

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

    function Process (symbol) {
        exchange.IO("currency", symbol)
        var ticker = _C(exchange.GetTicker)
        Log("已经切换交易对,按照策略逻辑处理交易对 :", symbol, "行情:", 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

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

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

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

    مختلف تجارت کے جوڑوں کے لئے مارکیٹ کے اعداد و شمار کو حاصل کرنے کے لئے متعدد ایکسچینج اشیاء کے ذریعہ، تکرار کی حکمت عملی منطق میں عملدرآمد. مثال کے طور پر روبوٹ کو اس طرح ترتیب دیں: روبوٹ کو تین ایکسچینج اشیاء ترتیب دیں ، جس میں ٹریڈنگ کے جوڑے کو 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("交易所", e.GetName(), "按照策略逻辑处理交易对 :", e.GetCurrency(), "行情:", 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())    // 打印第一个 交易所对象的账户资产信息,即火币期货 这个交易所的资产信息。
          Log(exchanges[1].GetAccount())    // ... 打印Bit-Z这个交易所的资产信息
      }
      

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

    • ایک ہی تبادلے کے لئے متعدد تبادلے کی تشکیل۔

      مثال کے طور پر، ہم ایک ٹوکن فیوچر اکاؤنٹ شامل کرتے ہیں۔img

      آپ دیکھ سکتے ہیں کہ اس طرح دو ٹوکن فیوچر ایکسچینجز کے اکاؤنٹس کو ترتیب دیا گیا ہے۔

      img

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

      img

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

      آپ کو ان دو مثالوں کے ذریعے

      یہاں روبوٹ پر متعدد ایکسچینج اشیاء کی تشکیل اور "ایک ہی ایکسچینج اکاؤنٹ میں روبوٹ کو متعدد ایکسچینج اشیاء کی تشکیل" کے درمیان فرق بیان کیا گیا ہے:

      یہ ایک نظر میں اسی طرح کی ہے جیسا کہ اوپر بیان کیا گیا ہے: "ایک ہی ایکسچینج اکاؤنٹ روبوٹ کو متعدد ایکسچینج آبجیکٹ تشکیل دیتا ہے" لیکن اس میں فرق ہے۔ اس میں فرق یہ ہے کہ مندرجہ بالا مثال ایک تبادلے کی ترتیب ہے ، یعنی:

      img

      جب روبوٹ ایکسچینج کی تشکیل کرتے ہیں تو ، ہمیشہ استعمال کیا جاتا ہے:imgیہ ترتیب ہے۔

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

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

  • اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ۔

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

    یقیناً ایک طریقہ ہے! ہم روبوٹ کو دو روبوٹ شامل کر سکتے ہیں جیسا کہ اوپر بیان کیا گیا ہے "ایک ہی ایکسچینج اکاؤنٹ میں روبوٹ کو متعدد ایکسچینج آبجیکٹ ترتیب دیں"۔imgاس کے بعد اس تبادلے کی تشکیل کا استعمال کرتے ہوئے ، ایک تبادلے کا اعتراض شامل کریں۔ اس کے بعد ایک اشارہ باکس آئے گا!imgایک تبادلے کے اکاؤنٹ کی تشکیل ، ایک ہی کرنسی ، تجارت کی جوڑی کے تبادلے کے اشیاء کو شامل نہیں کیا جاسکتا ہے۔

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

    ہم "کنٹرول سینٹر" - "ایکسچینج" میں ایک اور اوکیکس فیوچر ایکسچینج کی ترتیب شامل کرتے ہیں۔

    img

    اس کے بعد محفوظ کریں پر کلک کریں۔

    img

    اس طرح ہم دو تبادلے کی تشکیل کرتے ہیں لیکن ایک ہی API KEY کی تشکیل کی معلومات کا استعمال کرتے ہیں۔

    img

    اس کے کیا فوائد ہیں؟ لیکن جب آپ اپنی حکمت عملی لکھتے ہیں تو ، ڈیزائن کرنا آسان ہے!

    function main(){
        exchanges[0].SetContractType("quarter")        // 设置第一个添加的交易所对象 当前的合约为季度合约
        exchanges[1].SetContractType("this_week")      // 设置第二个添加的交易所对象,当前的合约为当周合约
        
        while (true) {
            var beginTime = new Date().getTime()       // 记录这次获取行情时起始的时间戳。
            var rA = exchanges[0].Go("GetTicker")      // 创建并发 线程去获取 第一个交易所对象,也就是季度合约的行情数据。
            var rB = exchanges[1].Go("GetTicker")      // 创建并发 线程去获取 第二个交易所对象,也就是当周合约的行情数据。
            
            var tickerA = rA.wait()                    // 并发的两个线程各自执行自己的任务,这里等待获取数据,A 等待时,B任务也在执行。
            var tickerB = rB.wait()                    // 所以这里看似是顺序执行,实际在底层是并发的。只不过获取的时候是顺序先获取A,在获取B。
            var endTime = new Date().getTime()         // 记录并发获取两个合约行情结束时的时间戳。
            
            if (tickerA && tickerB) {                  // 如果获取的数据没有问题,执行以下逻辑。
                var diff = tickerA.Last - tickerB.Last // 计算差价
                $.PlotLine("diff", diff)               // 使用画线类库把差价画在图表上。
                if (diff > 500) {                      // 如果差价大于500, 对冲套利(当然设置500 的差价是比较大的,很少见。)
                    // 对冲
                    rA = exchanges[0].Go("Sell", tickerA.Buy, 1)     // 并发线程创建 季度合约下卖单
                    rB = exchanges[1].Go("Buy", tickerB.Sell, 1)     // 并发线程创建 当周合约下买单
                    
                    var idA = rA.wait()           // 等待 返回下单结果,返回的是订单ID
                    var idB = rB.wait()           // ...
                }
                
                // ...
            }
            
            LogStatus(_D(), "并发获取两个合约行情耗时:", endTime - beginTime, "毫秒。")    // 显示在状态栏上时间,以便知道程序在执行。
            Sleep(500)
        }
    }
    

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

    ریئل ڈسک چل رہا ہے:img

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


متعلقہ

مزید

کوانٹیٹیشنیہ آخری طریقہ بہت اچھا ہے۔

بواکسیاوکبہت اچھا، یہ بہت مددگار ہے!