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

ایف ایم زیڈ کوانٹ پلیٹ فارم کے لئے بنیادی سبق حکمت عملی لکھنا

مصنف:نینا باداس, تخلیق: 2022-03-18 09:00:46, تازہ کاری: 2022-04-02 11:48:15

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

پرانے ورژن سبق:ایف ایم زیڈ کوانٹ (ایف ایم زیڈ ڈاٹ کام) حکمت عملی تحریری دستی 2.0 (ٹوٹوریل)؛ ٹیوٹوریل میں بہت سارے پوسٹ انڈیکس ہیں ، جن کو پڑھنے کی سفارش کی جاتی ہے۔

حکمت عملی لکھنے کی ابتدائی ہدایات

API کا تعارف

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

فی الحال ، کریپٹوکرنسی پلیٹ فارمز کے لئے دو اہم انٹرفیس پروٹوکول ہیں: REST اور ویب ساکٹ۔ ہر بار جب REST پروٹوکول ڈیٹا حاصل کرتا ہے تو ، اس تک ایک بار رسائی حاصل کرنے کی ضرورت ہوتی ہے۔ آئیے مثال کے طور پر نقلی پلیٹ فارم Wex.app کی API لیتے ہیں۔ براہ راست براؤزر میں [لنک] (https://api.wex.app/api/v1/public/ticker?market=BTC_USDT) کھولیں ، اور آپ مندرجہ ذیل نتیجہ حاصل کرسکتے ہیں:

{"data:{"buy":"11351.73","high":"11595.77","last":"11351.85","low":"11118.45","open":"11358.74","quoteVol":"95995607137.00903936","sell":"11356.02","time":1565593489318,"vol":"3552.5153"}}

اس طرح ، آپ دیکھ سکتے ہیں کہ ٹریڈنگ جوڑی BTC_USDT کے تازہ ترین مارکیٹ کوٹس کے بعد ، ہر بار جب اسے تازہ کاری کی جاتی ہے تو تجارت بدل جائے گی۔ مارکیٹ = " کے بعد مخصوص ٹریڈنگ جوڑی کے پیرامیٹرز ہوتے ہیں ، جن کو دوسرے ٹریڈنگ جوڑے کے اعداد و شمار حاصل کرنے کے لئے تبدیل کیا جاسکتا ہے۔ عوامی انٹرفیس ، جیسے مارکیٹ کوٹس کے ل everyone ، ہر کوئی ان کو حاصل کرسکتا ہے ، لہذا کوئی تصدیق کی ضرورت نہیں ہے۔ تاہم ، کچھ انٹرفیس کو آرڈر دینے یا اکاؤنٹ حاصل کرنے پر صارف کی شناخت کا تعین کرنے کی ضرورت ہوتی ہے۔ اس معاملے میں ، سائن اپ کرنے کے لئے API-KEY کی ضرورت ہوتی ہے۔ ویب ساکٹ سبسکرپشن موڈ ہے۔ سبسکرپشن کی ضرورت والے مواد کو بھیجنے کے بعد ، پلیٹ فارم اپ ڈیٹ شدہ ڈیٹا کو پروگرام میں بھیج دے گا ، اور اسے ہر بار نظر ثانی کرنے کی ضرورت نہیں ہے ، لہذا یہ زیادہ موثر ہے۔

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

مختلف پروگرامنگ زبانیں

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

چونکہ پائتھون کے مختلف ورژن ہیں ، لہذا اسے پروگرام کے آغاز میں بیان کیا جاسکتا ہے ، جیسے:#!Python2اور#!Python3. نوٹ کریں کہ جاوا اسکرپٹ نے حال ہی میں اپنے ES6 نحو کو اپ گریڈ کیا ہے ، اور جو لوگ دلچسپی رکھتے ہیں وہ اس کے بارے میں جان سکتے ہیں۔ ایک ہی افعال کے ساتھ پائتھون اور جاوا اسکرپٹ کوڈز ذیل میں دکھائے گئے ہیں۔ یہ دیکھا جاسکتا ہے کہ صرف نحو کے اختلافات ہیں ، لہذا API دستاویز صرف جاوا اسکرپٹ کی مثالیں دیتی ہے ، اور یہ سبق پائتھون کے خصوصی استعمال کے معاملات کو بھی مدنظر رکھے گا۔

#python code
def main():
    while True:
        Log(exchange.GetAccount().Balance)
        Sleep(2000)
#the corresponding Js code
function main(){
    while(true){
        Log(exchange.GetAccount().Balance)
        Sleep(2000)
    }
}

وسائل کی سفارشات

  • یہ سبق FMZ پلیٹ فارم API دستاویز میں ہر انٹرفیس پر تفصیلی تعارف نہیں دے گا، لہذا آپ کو چیک کر سکتے ہیںاس مضمون میں مزید تفصیلات کے لئے.
  • اگر آپ ٹریڈنگ ویو سگنل وصول کرنا چاہتے ہیں اور ایف ایم زیڈ پر آرڈر کرنا چاہتے ہیں تو ، آپ اس کا حوالہ دے سکتے ہیںیہ مضمون.
  • جاوا اسکرپٹ اور پائیتھون کے فوری آغاز کے لئے، سادہ حکمت عملی لکھنے کے لئے پیچیدہ نحو کی ضرورت نہیں ہے، لیکن صرف کچھ بنیادی تصورات کی ضرورت ہے؛ آپ سبق کو پڑھ سکتے ہیں جبکہ آپ پروگرامنگ سیکھ رہے ہیں (https://www.fmz.com/bbs-topic/9123, https://www.fmz.com/bbs-topic/9124).
  • MyLanguage دستاویز; مائی لینگوئج اب بھی رجحان کی حکمت عملی کے لئے بہت آسان ہے.
  • یہاں C ++ کی ایک کال کی مثال ہے۔ جو لوگ C ++ میں دلچسپی رکھتے ہیں وہ دیکھ سکتے ہیں۔ چونکہ یہ ایک تشریح زبان نہیں ہے ، لہذا ڈیبگنگ بہت مشکل ہے ، لہذامثالتجویز نہیں کی جاتی ہے۔
  • NetEase کلاؤڈ کلاس روم کا کریپٹوکرنسی کوانٹیٹیٹیو ٹریڈنگ کورس ، جو کہ ایف ایم زیڈ کی جانب سے سرکاری طور پر تیار کیا گیا ہے، صرف 20 یوآن کی ضرورت ہے، جس میں سادہ سے گہرائی تک تفصیلی مواد ہے، جو کہ ابتدائیوں کے لیے موزوں ہے۔کورس لنک
  • یہ ہیںکچھ تدریسی حکمت عملیابتدائیوں کے لئے موزوں ہے۔ آپ بنیادی باتوں کا مطالعہ کرتے ہوئے حکمت عملی لکھنے کی کوشش کر سکتے ہیں۔
  • حکمت عملی کے ماخذ کوڈ کی تفصیلی وضاحت:ربط.

ڈیبگ ٹول

FMZ کوانٹ پلیٹ فارم فراہم کرتا ہےڈیبگ ٹولAPI انٹرفیس کو ڈیبگ کرنے کے لئے۔ ڈیبگنگ ٹول صرف جاوا اسکرپٹ کی حمایت کرتا ہے اور صرف ایک مخصوص مدت کے لئے ہی چلایا جاسکتا ہے۔ پلیٹ فارم انٹرفیس کو بوٹ بنانے کے بغیر ڈیبگ کیا جاسکتا ہے۔ اس کے نتیجے میں واپسی کا ڈیٹا واپس کردیا جائے گا ، اور ڈیبگنگ ٹول کا کوڈ محفوظ نہیں کیا جائے گا۔ جب آپ اس سبق میں کام کرتے ہیں تو ، آپ بیک وقت ڈیبگنگ ٹول کے ساتھ تجربہ کرسکتے ہیں۔img

حکمت عملی پروگرام کا فریم ورک

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

خصوصی کارروائیوں کے ساتھ دیگر افعال مندرجہ ذیل دکھائے گئے ہیں:

  • onexit() ایک عام on-exit فنکشن ہے۔ اس کا زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے۔ یہ غیر متعین ہوسکتا ہے۔ اگر وقت ختم ہوجائے تو ، ایک مداخلت کی غلطی کی اطلاع دی جائے گی۔
  • onerror() ایک غیر معمولی آؤٹ پٹ فنکشن ہے۔ اس کا زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے۔ یہ غیر متعین ہوسکتا ہے۔
  • init ایک ابتدائیہ فنکشن ہے۔ اس کا حکمت عملی پروگرام خود بخود بلایا جائے گا جب یہ چلنا شروع ہو جائے گا۔ یہ غیر متعین ہوسکتا ہے۔
function onTick(){
   var ticker = exchange.GetTicker()
   var account = exchange.GetAccount()
    //write the strategy logic here, and it will be called ever 6 seconds
}
function main(){
    while(true){
        onTick()
        Sleep(6000)
    }
}

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

function onTick(){
   var ticker = exchange.GetTicker()
   var account = exchange.GetAccount()
    //write the strategy logic here, and it will be called ever 6 seconds
}
function main(){
    try{
        while(true){
           onTick()
           Sleep(6000)
       }
    }catch(err){
        Log(err)
    }
}

پلیٹ فارم API تعارف

سیٹ پلیٹ فارم اور ٹریڈنگ جوڑا

کسی بھی پلیٹ فارم سے متعلق API کو کال کرتے وقت ، آپ کو پلیٹ فارم اور تجارتی جوڑی کی وضاحت کرنے کی ضرورت ہے۔ اگر بوٹ بنانے کے وقت صرف ایک پلیٹ فارم ٹریڈنگ جوڑی شامل کی جاتی ہے تو ، استعمال کریںexchangeاس اعتراض کی نمائندگی کرنے کے لئے. مثال کے طور پر، کیاexchange.GetTicker()حاصل کرے گا اس بزنس ٹریڈنگ جوڑی کا مارکیٹ ٹکر ہے۔

ایف ایم زیڈ کوانٹ پلیٹ فارم ایک ہی وقت میں متعدد ایکسچینج ٹریڈنگ جوڑی اشیاء کو شامل کرنے کی حمایت کرتا ہے۔ مثال کے طور پر ، آپ ایک ہی پلیٹ فارم اکاؤنٹ کے بی ٹی سی اور ای ٹی ایچ کو ایک ہی وقت میں چلا سکتے ہیں ، یا آپ ایک ہی وقت میں ایک ایکسچینج کے بی ٹی سی اور کسی دوسرے ایکسچینج کے ای ٹی ایچ کو چلا سکتے ہیں۔ نوٹ کریں کہ ایک ہی پلیٹ فارم پر مختلف اکاؤنٹس کو بھی ایک ہی وقت میں شامل کیا جاسکتا ہے ، اور وہ ایف ایم زیڈ ویب سائٹ میں شامل لیبلز کے مطابق ممتاز ہیں۔ جب متعدد ایکسچینج ٹریڈنگ جوڑی اشیاء ہیں تو ، استعمال کریںexchangesان کی نمائندگی کرنے کے لئے صف، یعنیexchanges[0]اورexchanges[1]... اور اسی طرح، جب بوٹ تخلیق کیا جاتا ہے تو جمع کرنے کے حکم کے مطابق.BTC_USDT، سابق BTC ٹریڈنگ کرنسی ہے ، اور USDT کوٹ کرنسی ہے۔

img

ظاہر ہے ، اگر ہم بہت سارے تجارتی جوڑے چلاتے ہیں تو ، یہ طریقہ بہت تکلیف دہ ہوگا۔ اس صورتحال میں ، ہم تجارت کے جوڑوں کو تبدیل کرنے کے لئے سیٹ کرنسی کا استعمال کرسکتے ہیں ، جیسےexchange.SetCurrency("BTC_USDT")؛ پھر، ٹریڈنگ جوڑی سے منسلکexchangeبن جاتا ہےBTC_USDT، جو ٹریڈنگ جوڑی کو تبدیل کرنے کے لئے اگلے کال تک درست رہے گا۔نوٹ کریں کہ بیک ٹیسٹ حالیہ ٹریڈنگ جوڑوں سوئچنگ کی حمایت کرتا ہےذیل میں ایک مخصوص مثال ہے:

var symbols = ["BTC_USDT", "LTC_USDT", "EOS_USDT", "ETH_USDT"]
var buyValue = 1000
function main(){
  for(var i=0;i<symbols.length;i++){
      exchange.SetCurrency(symbols[i])
      var ticker = exchange.GetTicker()
      var amount = _N(buyValue/ticker.Sell, 3)
      exchange.Buy(ticker.Sell, amount)
      Sleep(1000)
  }
}

عوامی انٹرفیس حاصل کریں

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

ہر انٹرفیس عام طور پر ایکInfoفیلڈ ، جو پلیٹ فارم کے ذریعہ واپس آنے والی اصل ڈیٹا سٹرنگ کی نمائندگی کرتا ہے ، اور جو اضافی معلومات کو مکمل کرنے کے لئے استعمال کیا جاسکتا ہے۔ اسے استعمال سے پہلے تجزیہ کرنے کی ضرورت ہے۔ جاوا اسکرپٹ استعمال کرتا ہےJSON.parse()، جبکہ پائتھون json لائبریری کا استعمال کرتا ہے.Timeفیلڈ درخواست کا ٹائم اسٹیمپ ظاہر کرتا ہے، جس کا استعمال تاخیر کا فیصلہ کرنے کے لئے کیا جا سکتا ہے۔

جب بوٹ میں کسی بھی API کا استعمال کرتے ہوئے، رسائی ناکام ہو سکتی ہے اور واپس آ سکتی ہےnull، اور پطرون لوٹتا ہےNoneاس وقت ، استعمال میں موجود ڈیٹا غلطی کی اطلاع دے گا اور بوٹ کو روکنے کا سبب بنے گا ، لہذا غلطی کی رواداری بہت اہم ہے۔ یہ سبق غلطی کی رواداری کو خاص طور پر متعارف کرائے گا۔

گیٹ ٹکر

گیٹ ٹکر شاید سب سے زیادہ استعمال ہونے والا انٹرفیس ہے۔ آپ آخری بار عملدرآمد کی قیمت ، خرید1 قیمت اور فروخت1 قیمت ، اور تازہ ترین تجارتی حجم تلاش کرسکتے ہیں۔ آرڈر دینے سے پہلے ، عملدرآمد کی قیمت ٹکر کی معلومات کے مطابق طے کی جاسکتی ہے۔ بوٹ کی واپسی کی ایک مثال:{"Info:{}, "High":5226.69, "Low":5086.37,"Sell":5210.63, "Buy":5208.5, "Last":5208.51, "Volume":1703.1245, "OpenInterest":0, "Time":1554884195976}.

function main() {
    var ticker = exchange.GetTicker()
    Log(ticker) //return ticker in the debugging tool, and you can see the specific result
    Log('Last time executed price:',ticker.Last, 'Buy1 price:', ticker.Buy)
}

گہرائی حاصل کریں

زیر التواء آرڈرز کی گہرائی کی معلومات حاصل کرنے کے لئے گیٹ ڈیپتھ۔ اگرچہ گیٹ ٹکر میں خرید 1 اور فروخت 1 کی قیمتیں شامل ہیں ، اگر آپ زیر التواء آرڈرز کی گہرائی سے استفسار کرنا چاہتے ہیں تو ، آپ اس انٹرفیس کا استعمال کرسکتے ہیں ، عام طور پر 200 زیر التواء آرڈرز کو اوپر اور نیچے چیک کرنے کے ل.۔ اس انٹرفیس کا استعمال کرتے ہوئے جھٹکا قیمتوں کا حساب لگایا جاسکتا ہے۔ ذیل میں ایک حقیقی واپسی کا نتیجہ ہے۔ ان میں سے ، Asks زیر التواء فروخت آرڈر کی نمائندگی کرتا ہے ، اور صف Sell1 ، Sell2 ہے... لہذا قیمت بھی باری باری بڑھتی ہے۔ Bids زیر التواء خرید آرڈر کی نمائندگی کرتی ہے ، اور صف buy1 ، buy2 ہے... قیمت باری باری کم ہوتی ہے۔

{
    "Info":null,
    "Asks":[
        {"Price":5866.38,"Amount":0.068644},
        {"Price":5866.39,"Amount":0.263985},
        ......
        ]
    "Bids":[
        {"Price":5865.13,"Amount":0.001898},
        {"Price":5865,"Amount":0.085575},
        ......
        ],
    "Time":1530241857399
}

Asks & Bids کے لئے GetDepth استعمال کرنے کا مثال:

function main() {
    var depth = exchange.GetDepth()
    Log('Buy 1 price:', depth.Bids[0].Price, 'Sell 1 price:', depth.Asks[0].Price)
}

ریکارڈ حاصل کریں

گیٹ ریکارڈز سب سے زیادہ استعمال ہونے والے انٹرفیس میں سے ایک ہے ، ایک وقت میں ایک طویل عرصے میں قیمت کی معلومات واپس کرسکتا ہے ، جو مختلف اشارے کے حساب کتاب کی بنیاد ہے۔ اگر K لائن کی مدت کی وضاحت نہیں کی گئی ہے تو ، اس کا مطلب یہ ہے کہ بوٹ شامل کرتے وقت ڈیفالٹ مدت کا استعمال کریں۔ K لائن کی لمبائی کی وضاحت نہیں کی جاسکتی ہے ، اور یہ وقت کے ساتھ ساتھ بڑھتی رہے گی۔ زیادہ سے زیادہ تعداد 2000 ہے ، اور پہلی کال میں تعداد تقریبا 200 ہے (مختلف پلیٹ فارم مختلف نمبر واپس کرتے ہیں) ۔ آخری K لائن تازہ ترین K لائن ہے ، لہذا مارکیٹ کی قیمتوں میں تبدیلی کے ساتھ ہی اعداد و شمار بدل جائیں گے؛ پہلی K لائن قدیم ترین ڈیٹا ہے۔

exchange.SetMaxBarLen(Len)پہلی بار حاصل کی جانے والی K لائنز کی تعداد مقرر کر سکتے ہیں (کچھ پلیٹ فارمز کی حمایت کرتے ہیں) ، اور K لائنز کی زیادہ سے زیادہ تعداد مقرر کرسکتے ہیں۔جیسے:exchange.SetMaxBarLen(500).

GetRecords جیسے ادوار کی وضاحت کر سکتے ہیں PERIOD_M1: 1 منٹ، PERIOD_M5: 5 منٹ، PERIOD_M15: 15 منٹ، PERIOD_M30: 30 منٹ، PERIOD_H1: 1 گھنٹہ اور PERIOD_D1: 1 دن. مخصوص استعمال یہ ہےexchange.GetRecords(PERIOD_M1). تازہ ترین ڈوکر کو اپ گریڈ کرنے کے بعد ، یہ ادوار کی تخصیص کی حمایت کرے گا ، جو صرف ایک پیرامیٹر کے طور پر مدت کا دوسرا نمبر پاس کرتا ہے۔ منٹ کی سطح کی تخصیص کو 1 منٹ کی K لائن کے مطابق ترکیب کیا جائے گا ، 1 منٹ سے کم کی K لائن کو GetTrades کے ذریعے ترکیب کیا جائے گا))) ، اور خام مال کے مستقبل کو ٹک کے مطابق ترکیب کیا جائے گا۔نوٹ کریں کہ دیگر مکمل بڑے متغیرات بھی ہیں جیسےPERIOD_M1ٹیوٹوریل میں. وہ FMZ کے ڈیفالٹ گلوبل متغیر ہیں. اگر آپ دلچسپی رکھتے ہیں تو، آپ اپنے مخصوص اقدار کو اپنے آپ کو لاگ کر سکتے ہیں، اور آپ عام طور پر براہ راست استعمال کر سکتے ہیں.

واپسی کے اعداد و شمار کی مثال:

[
    {"Time":1526616000000,"Open":7995,"High":8067.65,"Low":7986.6,"Close":8027.22,"Volume":9444676.27669432},
    {"Time":1526619600000,"Open":8019.03,"High":8049.99,"Low":7982.78,"Close":8027,"Volume":5354251.80804935},
    {"Time":1526623200000,"Open":8027.01,"High":8036.41,"Low":7955.24,"Close":7955.39,"Volume":6659842.42025361},
    ......
]

تکرار شدہ K لائن کا مثال:

function main(){
    var close = []
    var records = exchange.GetRecords(PERIOD_H1)
    Log('total bars: ', records.length)
    for(var i=0;i<records.length;i++){
        close.push(records[i].Close)
    }
    return close
}

گیٹ ٹریڈز

گیٹ ٹریڈس تجارتی اعداد و شمار کو ایک خاص وقت کی حد میں حاصل کرتا ہے (آپ کے اپنے تجارتی اعداد و شمار نہیں) ، جو کچھ پلیٹ فارمز کے ذریعہ تعاون یافتہ نہیں ہے۔ یہ عام طور پر استعمال نہیں ہوتا ہے ، اور آپ API دستاویز میں تفصیلی تعارف چیک کرسکتے ہیں۔

تجارت کے لئے اکاؤنٹ حاصل کریں

یہ انٹرفیس اکاؤنٹ سے وابستہ ہیں ، لہذا انہیں براہ راست حاصل نہیں کیا جاسکتا ہے۔ ان کو حاصل کرنے کے ل you ، آپ کو سائن ان کرنے کے لئے API-KEY کا استعمال کرنے کی ضرورت ہے۔ ایف ایم زیڈ پلیٹ فارم کی متحد خودکار پس منظر پروسیسنگ کے بعد ، آپ براہ راست ان کا استعمال کرسکتے ہیں۔

اکاؤنٹ حاصل کریں

اکاؤنٹ کی معلومات حاصل کرنے کے لئے گیٹ اکاونٹ حاصل کریں۔ سب سے زیادہ عام طور پر استعمال ہونے والے انٹرفیس میں سے ایک ہونے کے ناطے ، آرڈر دینے سے پہلے اسے کال کرنے کی ضرورت ہے ، تاکہ ناکافی توازن سے بچ سکے۔ واپسی کا نتیجہ اس طرح ہے:{"Stocks":0.38594816,"FrozenStocks":0,"Balance":542.858308,"FrozenBalance":0,"Info":{}}جہاں Stocks ٹریڈنگ جوڑی کی ٹریڈنگ کرنسی کا دستیاب بیلنس ہے، FrozenStocks غیر انجام شدہ احکامات کا منجمد بیلنس ہے، Balance کوٹیشن کرنسی کی دستیاب رقم ہے، اور FrozenBalance منجمد بیلنس ہے۔ اگر ٹریڈنگ جوڑیBTC_USDT، اسٹاک سے مراد بی ٹی سی ہے، اور بلنس سے مراد یو ایس ڈی ٹی ہے۔

نوٹ کریں کہ واپسی کا نتیجہ مخصوص ٹریڈنگ جوڑی کا نتیجہ ہے، اور ٹریڈنگ اکاؤنٹ میں دیگر کرنسیوں کی معلومات Info فیلڈ میں ہے، لہذا آپ کو اسے کئی بار کال کرنے کی ضرورت نہیں ہے، جب آپ متعدد ٹریڈنگ جوڑوں کو کام کرتے ہیں.

ایک روبوٹ مسلسل موجودہ ٹریڈنگ جوڑی کی کل قیمت پرنٹ:

function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var account = exchange.GetAccount()
        var price = ticker.Buy
        var stocks = account.Stocks + account.FrozenStocks
        var balance = account.Balance + account.FrozenBalance
        var value = stocks*price + balance
        Log('Account value is: ', value)
        LogProfit(value)
        Sleep(3000)//sleep 3000ms(3s), A loop must has a sleep, or the rate-limit of the exchange will be exceed
        //when run in debug tool, add a break here
    }
}

خرید آرڈر

آرڈر خریدیں۔ کال کرنے کے طریقوں میں شامل ہیںexchange.Buy(Price, Amount)اورexchange.Buy(Price, Amount, Msg)، جس میں Price قیمت کی نشاندہی کرتا ہے ، Amount رقم ہے ، Msg ایک اضافی تار ہے جو بوٹ لاگ میں دکھائی جاسکتی ہے ، لیکن ضرورت نہیں ہے۔ یہ طریقے زیر التواء آرڈرز ہیں۔ اگر آرڈر کو فوری طور پر مکمل طور پر انجام نہیں دیا جاسکتا ہے تو ، ایک نامکمل آرڈر تیار کیا جائے گا۔ اگر آرڈر کامیابی کے ساتھ دیا گیا ہے تو آرڈر کی شناخت واپس کردی جاتی ہے ، اورnullاگر آرڈر ناکام ہوجاتا ہے تو واپس کردیا جائے گا، جو آرڈر کی حیثیت سے استفسار کرنے کے لئے استعمال ہوتا ہے۔

اگر آپ مارکیٹ کی قیمت پر خرید آرڈر دینا چاہتے ہیں تو قیمت -1 ہے اور مقدار آرڈر کی قیمت ہے۔ مثال کے طور پر،exchange.Buy(-1, 0.5)؛ اگر ٹریڈنگ جوڑیETH_BTC، جس کا مطلب ہے کہ مارکیٹ کی قیمت پر 0.5BTC ETH خریدیں۔ کچھ پلیٹ فارم مارکیٹ آرڈرز کی حمایت نہیں کرتے ہیں ، اور نہ ہی فیوچر بیک ٹیسٹ کرتے ہیں۔

کچھ پلیٹ فارم قیمت اور رقم کے لئے صحت سے متعلق ضروریات ہیں جو صحت سے متعلق تقریب کے ساتھ کنٹرول کیا جا سکتا ہے_N()فیوچر ٹریڈنگ کے لئے، خریدیں اور فروخت کریں کے دیگر معنی ہیں، جو خصوصی طور پر متعارف کرایا جائے گا.

اسی قیمت تک پہنچنے کے بعد خریدنے کا ایک مثال:

function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var price = ticker.Sell
        if(price >= 7000){
            exchange.Buy(_N(price+5,2), 1, 'BTC-USDT')
            break
        }
        Sleep(3000)//Sleep 3000ms
    }
    Log('done')
}

فروخت کا حکم

فروخت آرڈر۔ پیرامیٹرز خرید کے برابر ہیں۔ مارکیٹ آرڈر کے پیرامیٹرز کے مختلف معنی ہیں۔ مارکیٹ فروخت آرڈر ، جیسےexchange.Sell(-1, 0.2)، کا مطلب ہے مارکیٹ کی قیمت پر 0.2ETH فروخت کرنا۔

آرڈر حاصل کریں

GetOrder آرڈر کی شناخت کی بنیاد پر آرڈر کی معلومات حاصل کرتا ہے. جب یہ مشترکہ انٹرفیس طریقہ کار کو بلاتا ہےexchange.GetOrder(OrderId)، OrderId آرڈر ID ہے، جو ایک حکم کی جگہ لے جب واپس کیا جائے گا. نوٹ کریں کہ حکم کی تارTypeاور حکم کی اصل قیمتStatusاعداد ہیں ، جو مختلف معانی کی نمائندگی کرتے ہیں ، لیکن میموری کے لئے سازگار نہیں ہیں۔ ایف ایم زیڈ ان اقدار کی نمائندگی کے لئے عالمی مستقل استعمال کرتا ہے۔ مثال کے طور پر ،Statusایک نامکمل آرڈر کی قدر 0 ہے، جو کہ کے برابر ہےORDER_STATE_PENDING. ان تمام عالمی مسلسل دستاویز میں دیکھا جا سکتا ہے... واپسی کا نتیجہ:

{
    "Id":125723661, //Order id
    "Amount":0.01, //Order ammount 
    "Price":7000, //Order price 
    "DealAmount":0, //Executed amount 
    "AvgPrice":0, //executed average price
    "Status":0, //0: not completely executed; 1: executed; 2: canceled 
    "Type":1,//Order type; 0: buy order; 1: sell order 
    "ContractType":"",//contract type, used in futures trading
    "Info":{} //the platform returns the raw information
    }
}

کرنسی کی ایک مخصوص رقم خریدنے کی حکمت عملی:

function main(){
    while(true){
        var amount = exchange.GetAccount().Stocks
        var ticker = exchange.GetTicker()
        var id = null
        if(5-amount>0.01){
            id = exchange.Buy(ticker.Sell, Math.min(5-amount,0.2))
        }else{
            Log('Job completed')
            return //return the main function, bot will stop
        }
        Sleep(3000) //Sleep 3000ms
        if(id){
            var status = exchange.GetOrder(id).Status
            if(status == 0){ //Here you can aslo use "status == ORDER_STATE_PENDING" to judge 
                exchange.CancelOrder(id)
            }
        }
    }
}

حاصل احکامات

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

موجودہ ٹریڈنگ جوڑی کے تمام احکامات کو منسوخ کرنے کا مثال:

function CancelAll(){
    var orders = exchange.GetOrders()
    for(var i=0;i<orders.length;i++){
        exchange.CancelOrder(orders[i].Id) // cancel order by orderID
    }
}
function main(){
    CancelAll()
    while(true){
        //do something
        Sleep(10000)
    }
}

آرڈر منسوخ کریں

آرڈر کی شناخت کے مطابق، آرڈر منسوخ کریں.exchange.CancelOrder(OrderId). اگر منسوخی کامیاب ہے تو ، واپس true؛ اگر نہیں ، واپس false.

فیوچر اور مستقل معاہدہ

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

مستقل معاہدے مستقبل کے معاہدوں سے ملتے جلتے ہیں ، لیکن فرق یہ ہے کہ ایک ہی وقت میں لمبی اور مختصر پوزیشنیں رکھنے کا کوئی تصور نہیں ہے۔

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

سیٹContractType

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

بائننس ، اوکیکس ، ہووبی ڈی ایم ، وغیرہ کے پاس کرپٹو مارجنڈ اور یو ایس ڈی ٹی مارجنڈ دونوں معاہدے ہیں ، جن میں بوٹ شامل کرنے اور معاہدہ ترتیب دینے پر فرق کرنے کی ضرورت ہے۔ مخصوص ترتیبات مندرجہ ذیل ہیں:

//OKEX Futures
exchange.SetContractType("swap")        // set to perpetual contract
exchange.SetContractType("this_week")   // set to weekly contract 
exchange.SetContractType("next_week")   // set to next week contract 
exchange.SetContractType("quarter")     // set to quarterly contract

//HuobiDM
exchange.SetContractType("this_week")   // set to weekly contract 
exchange.SetContractType("next_week")   // set to next week contract
exchange.SetContractType("quarter")     // set to quarterly contract 
exchange.SetContractType("swap")        // set to perpetual contract

//Binance Futures
exchange.SetContractType("swap")   // set to perpetual contract, and notice that crypto-margined and USDT-margined contracts are all in the perpetual contract
exchange.SetContractType("quarter")   // set to quarterly contract
exchange.SetContractType("next_quarter")  // set to next quarter contract

//BitMEX
exchange.SetContractType("XBTUSD")    // set to perpetual contract
exchange.SetContractType("XBTM19")  // the contract settled at a specific time; for more details, please log in BitMEX to check each contract code

//GateIO
exchange.SetContractType("swap")      // set to perpetual contract, and do not set the default as swap perpetual contract 
//Deribit
exchange.SetContractType("BTC-27APR18")  // the contract settled at a specific time; for more details, please log in Deribit to check out 

پوزیشن حاصل کریں

موجودہ پوزیشن کی معلومات کی فہرست حاصل کرنے کے لئے، OKEX (OKCOIN) فیوچر حاصل کرنے کے لئے معاہدے کی قسم کی وضاحت کرنے کے لئے ایک پیرامیٹر میں منتقل کر سکتے ہیں.[]، اگر کوئی پوزیشن نہیں ہے۔ پوزیشن کی معلومات مندرجہ ذیل طور پر واپس کردی جاتی ہیں۔ بہت ساری مخصوص معلومات ہیں ، جن کا تجزیہ ٹریڈنگ جوڑی کے ساتھ مل کر کرنے کی ضرورت ہے۔

ڈیٹا ٹائپ متغیر کا نام تفصیل
چیز معلومات خام ڈھانچہ جو پلیٹ فارم واپس کرتا ہے
نمبر مارجن لیول بیعانہ سائز؛ OKCoin 10 یا 20 ہے، اور OK مستقبل کے کراس پوزیشن 10 (فکسڈ) لوٹاتا ہے، خام API کے لئے حمایت نہیں کرتا
نمبر رقم پوزیشن کی رقم؛ OKCoin معاہدے کی مقدار کو ظاہر کرتا ہے (ایک سے زائد عدد)
نمبر منجمد مقدار منجمد پوزیشن کی رقم
نمبر قیمت پوزیشن کی اوسط قیمت
نمبر مارجن منجمد مارجن
نمبر منافع کموڈٹی فیوچر: مارکیٹ میں پوزیشن مارکنگ کا منافع اور نقصان۔ کریپٹوکرنسی: کریپٹوکرنسی یونٹ: بی ٹی سی / ایل ٹی سی ، روایتی فیوچر یونٹ: یو این بی (نوٹ:او کے کوئن فیوچر کی کراس پوزیشن کی صورت میں ، اس کا مطلب پوزیشن کا منافع اور نقصان نہیں ، بلکہ منافع اور نقصان ہے۔ الگ تھلگ پوزیشن کے تحت ، اس کا مطلب پوزیشن کا منافع اور نقصان ہے۔)
کنسٹ قسم PD_LONG طویل پوزیشن ہے (CTP پوزیشن بند کرنے کے لئے closebuy_today استعمال کرتا ہے) ؛ PD_SHORT مختصر پوزیشن ہے (CTP پوزیشن بند کرنے کے لئے closesell_today استعمال کرتا ہے) ؛ CTP فیوچر میں ، PD_LONG_YD کل طویل پوزیشن کی نشاندہی کرتا ہے (جو پوزیشن بند کرنے کے لئے closebuy استعمال کرتا ہے) ؛ PD_SHORT_YD کل مختصر پوزیشن ہے (جو پوزیشن بند کرنے کے لئے closesell استعمال کرتا ہے)
سٹرنگ معاہدہ کی قسم commodity futures are contract codes، and stocks are platform code_stock code؛ SetContractType کے مخصوص پیرامیٹرز کی منظور شدہ قسم
function main(){
    exchange.SetContractType("this_week");
    var position = exchange.GetPosition();
    if(position.length>0){ //especially pay attention to judging the length of position before call, or an error will occur
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,"ContractType:", position[0].ContractType)
    }
}

فیوچر اوپن اور بند پوزیشنز

سب سے پہلے، آپ کو بیعانہ سائز مقرر کرنے کی ضرورت ہے؛ بلانے کا طریقہ:exchange.SetMarginLevel(10)، جہاں 10 کا مطلب ہے 10 گنا لیورج، اور مخصوص سپورٹ لیورج کا سائز متعلقہ پلیٹ فارمز میں چیک کیا جاسکتا ہے،نوٹ کریں کہ پلیٹ فارم میں بیعانہ مقرر کیا جانا چاہئے، اور کوڈ پلیٹ فارم پر مقرر کی ترتیبات کے ساتھ ہم آہنگ ہونا چاہئے، دوسری صورت میں ایک غلطی ہو جائے گاآپ اسے غیر مقرر بھی چھوڑ سکتے ہیں اور ڈیفالٹ بیعانہ استعمال کرسکتے ہیں۔ پھر، ٹریڈنگ کی سمت مقرر؛ بلانے کا طریقہ:exchange.SetDirection(Direction)، جو کھلی اور بند پوزیشنوں سے مطابقت رکھتا ہے۔فیوچر کے برعکس ، اگر ایک دائمی معاہدہ ایک ہی وقت میں طویل اور مختصر کے تصورات کو نہیں رکھتا ہے ، یعنی ایک ہی پوزیشن کی اجازت نہیں ہے۔ جب آپ لمبی پوزیشن پر مختصر کھولتے ہیں تو ، لمبی پوزیشن خود بخود بند ہوجائے گی ، لہذا آپ کو صرف سیٹ کرنے کی ضرورت ہےbuyاورsell. یہ دو طرفہ پوزیشن کی حمایت کرتا ہے تو، آپ کو مقرر کرنے کی ضرورت ہےclosebuy, closesell.مخصوص تعلقات:

آپریشن سیٹ ڈائریکشن پیرامیٹرز آرڈر دینے کا کام
کھلی لمبی پوزیشن exchange.SetDirection ((buy) تبادلہ.خریدیں()
طویل پوزیشن بند کریں exchange.SetDirection ((closebuy) تبادلہ.فروخت ((()
کھلی مختصر پوزیشن exchange.SetDirection ((sell) تبادلہ.فروخت ((()
مختصر پوزیشن بند کرنا تبادلہ.سیٹ ڈائریکشن (( closeesell) تبادلہ.خریدیں()

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

function main(){
    exchange.SetContractType("this_week")    // for example, set OKEX futures to weekly contract 
    price = exchange.GetTicker().Last
    exchange.SetMarginLevel(10) // set to 10 times of leverage  
    exchange.SetDirection("buy") // set the order type as buy long 
    exchange.Buy(price+10, 20) // set contract quantity as 20 orders
    pos = exchange.GetPosition()
    Log(pos)
    Log(exchange.GetOrders()) // check out if there is any unfinished order 
    exchange.SetDirection("closebuy"); // if it is a perpetual contract, directly set exchange.SetDirection("sell")
    exchange.Sell(price-10, 20)
}

مکمل بند پوزیشنوں کی ایک مخصوص حکمت عملی کی مثال درج ذیل ہے:

function main(){
    while(true){
        var pos = exchange.GetPosition()
        var ticker = exchange.GetTicekr()
        if(!ticker){
            Log('not able to obtain ticker')
            return
        }
        if(!pos || pos.length == 0 ){
            Log('no position')
            return
        }
        for(var i=0;i<pos.length;i++){
            if(pos[i].Type == PD_LONG){
                exchange.SetContractType(pos[i].ContractType)
                exchange.SetDirection('closebuy')
                exchange.Sell(ticker.Buy, pos[i].Amount - pos[i].FrozenAmount)
            }
            if(pos[i].Type == PD_SHORT){
                exchange.SetContractType(pos[i].ContractType)
                exchange.SetDirection('closesell')
                exchange.Buy(ticker.Sell, pos[i].Amount - pos[i].FrozenAmount)
            }
        }
        var orders = exchange.Getorders()
        Sleep(500)
        for(var j=0;j<orders.length;j++){
            if(orders[i].Status == ORDER_STATE_PENDING){
                exchange.CancelOrder(orders[i].Id)
            }
        }
    }
}

کریپٹوکرنسی لیوریج ٹریڈنگ

کریپٹوکرنسی لیوریج ٹریڈنگ کو کوڈ میں لیوریج اکاؤنٹ میں سوئچ کرنے کی ضرورت ہے، اور دیگر حصے اسپاٹ ٹریڈنگ کے برابر ہیں۔

استعمالexchange.IO("trade_margin") لیوریج اکاؤنٹ موڈ پر سوئچ کرنے کے لئے؛ ایک آرڈر رکھنے اور اکاؤنٹ کے اثاثوں کو حاصل کرنے سے پلیٹ فارم لیوریج کے انٹرفیس تک رسائی حاصل ہوگی۔ استعمالexchange.IO("trade_normal") عام اکاؤنٹ موڈ پر واپس سوئچ کرنے کے لئے.

معاون پلیٹ فارم:

  • OKEX V3: لیورج اکاؤنٹ موڈ کے ٹریڈنگ جوڑے عام لوگوں سے مختلف ہیں، اور کچھ ٹریڈنگ جوڑے موجود نہیں ہوسکتے ہیں۔
  • Huobi: لیوریج اکاؤنٹ موڈ کے تجارتی جوڑے عام لوگوں سے مختلف ہیں ، اور کچھ تجارتی جوڑے موجود نہیں ہوسکتے ہیں۔
  • زیڈ بی: اثاثوں کو صرف کیو سی میں منتقل کیا جاسکتا ہے۔ لیوریج ٹریڈنگ سیکٹر میں ، مختلف ٹریڈنگ جوڑوں کے مابین اثاثے آزاد ہیں ، یعنی ، ETH_QC ٹریڈنگ جوڑی کے تحت کیو سی سکے کی تعداد BTC_QC میں نظر نہیں آتی ہے۔
  • FCoin
  • بائننس

اجناس کے فیوچر ٹریڈنگ

کموڈٹی فیوچر ٹریڈنگ اور کریپٹوکرنسی فیوچر ٹریڈنگ کافی مختلف ہیں۔ سب سے پہلے ، کموڈٹی فیوچر کی تجارت کا وقت بہت مختصر ہے ، لیکن کریپٹوکرنسی کی تجارت 24 گھنٹوں تک کی جاتی ہے۔ کموڈٹی فیوچر کا پروٹوکول عام طور پر استعمال ہونے والا REST API نہیں ہے۔ کموڈٹی فیوچر کی تجارت کی تعدد اور زیر التواء آرڈر کی مقدار محدود ہے ، لیکن کریپٹوکرنسی کی بہت لچکدار ہیں ، وغیرہ۔ لہذا ، کموڈٹی فیوچر کی تجارت کرتے وقت بہت سارے نکات پر خصوصی توجہ کی ضرورت ہوتی ہے ، اور یہ ان لوگوں کے لئے تجویز کیا جاتا ہے جن کے پاس دستی آپریشن میں بھرپور تجربہ ہے۔ ایف ایم زیڈ اب کموڈٹی فیوچر سمیلیٹڈ بوٹ کی حمایت کرتا ہے ، اور آپ اس کا حوالہ دے سکتے ہیں۔https://www.fmz.com/bbs-topic/325اجناس کی فیوچر کمپنیوں کو شامل کرنے کے لئے:https://www.fmz.com/bbs-topic/371

کماڈٹی فیوچر نے جون 2019 میں شفاف نگرانی کا نفاذ کیا ہے۔ انفرادی پروگرام کے ل individual ، انفرادی صارفین کو فیوچر بروکرز کے لئے اجازت نامے کے کوڈ کے لئے درخواست دینے کے لئے اکاؤنٹ کھولنے کی ضرورت ہے (مخصوص درخواست کی معلومات کا ٹیمپلیٹ وی چیٹ گروپ یا کیو کیو گروپ میں بھیجا جاسکتا ہے) ، جس میں عام طور پر 4-5 دن لگتے ہیں۔ طریقہ کار کافی پیچیدہ ہیں۔ پروگرام کے مطابق تجارتی فراہم کنندہ کی حیثیت سے ، ایف ایم زیڈ پلیٹ فارم نے مختلف فیوچر سروس فراہم کرنے والوں سے سافٹ ویئر اجازت نامے کے کوڈوں کے لئے درخواست دی ہے۔ صارفین درخواست دینے کے بغیر براہ راست ان کا استعمال کرسکتے ہیں۔ فیوچر بروکر کو شامل کرتے وقت ، quant کے ذریعہ دیکھیں تلاش کریں تاکہ وہ فہرست دیکھیں جس کے لئے ایف ایم زیڈ نے درخواست دی ہے۔ مخصوص حوالہ پوسٹ:https://www.fmz.com/bbs-topic/3860اگر آپ کا فیوچر بروکر اب فہرست میں نہیں ہے تو ، آپ صرف خود ہی درخواست دے سکتے ہیں ، یا کسی معاون بروکر کا نیا اکاؤنٹ کھول سکتے ہیں ، جس میں عام طور پر 2 دن لگتے ہیں۔ ایف ایم زیڈ کے کچھ سروس فراہم کرنے والوں کے ساتھ گہرے تعاون کے تعلقات ہیں۔ مثال کے طور پر ، گوٹائی جونان ہانگ یوآن فیوچر نے ایف ایم زیڈ پلیٹ فارم کا ادارہ ورژن خریدا ہے ، جسے اس کے صارفین استعمال کرسکتے ہیں ، اور صارفین اکاؤنٹ کھولنے پر خود بخود وی آئی پی بن جاتے ہیں ، اور سروس فیس کم سے کم ہوجاتی ہے۔ اکاؤنٹ کھولنے کا حوالہ:https://www.fmz.com/bbs-topic/506.

ایف ایم زیڈ کوانٹ پلیٹ فارم ڈھانچے کے فوائد کی وجہ سے ، صارفین متعدد فیوچر بروکر اکاؤنٹس بھی شامل کرسکتے ہیں ، اور کچھ افعال کو نافذ کرسکتے ہیں جو دیگر خام مال فیوچر پروگرام ٹریڈنگ سافٹ ویئر مکمل نہیں کرسکتے ہیں ، جیسے ہائی فریکوئینسی ٹک کی ترکیب۔ آپ اس کا حوالہ دے سکتے ہیں:https://www.fmz.com/bbs-topic/1184

حکمت عملی کا فریم ورک

سب سے پہلے ، کیونکہ یہ 24 گھنٹے کی تجارت نہیں ہے اور اس میں لاگ ان آپریشن کی ضرورت ہے ، لہذا تجارت سے پہلے لنک کی حیثیت کا فیصلہ کرنا ضروری ہے۔exchange.IO("status")ہےtrue، جو پلیٹ فارم سے کامیاب کنکشن کی نشاندہی کرتا ہے۔ اگر لاگ ان کامیاب نہ ہونے پر API کو بلایا جاتا ہے تو ، لاگ ان نہ کریں کو اشارہ نہیں کیا جاتا ہے۔ آپ حکمت عملی شروع ہونے کے بعد سوتے (2000) شامل کرسکتے ہیں ، جس سے لاگ ان کرنے کے لئے اس کو ایک خاص وقت مل جاتا ہے۔ آپ دوبارہ سبسکرائب کرنے کی بھی کوشش کرسکتے ہیں۔_C(exchange.SetContractType,"MA888")، جس میں کامیاب لاگ ان کو یقینی بنائے گا.

خام مال کے فیوچر کے مارکیٹ کوٹ کے حصول اور تجارتی کوڈز کریپٹوکرنسی فیوچر کے ساتھ ایک جیسے ہیں۔ یہاں ہم ان اختلافات اور نکات کو متعارف کروائیں گے جن پر توجہ دینے کی ضرورت ہے۔

function main(){
    _C(exchange.SetContractType,"MA888") //If you do not log in successfully, you cannot subscribe to the contract, so better to try again
    while(true){
        if(exchange.IO("status")){
            var ticker = exchange.GetTicker()
            Log("MA888 ticker:", ticker)
            LogStatus(_D(), "Already connected with CTP !")//_D obtain event
        } else {
            LogStatus(_D(), "Not connected with CTP !")
            Sleep(1000)
        }
    }
}

یہ سفارش کی جاتی ہے کہ تجارت کے لئے خام مال فیوچر لائبریری کا استعمال کریں (جس کی وضاحت بعد میں کی جائے گی) ، اس وقت کوڈ بہت آسان ہوگا ، اور تکلیف دہ تفصیلات سے نمٹنے کی ضرورت نہیں ہے۔ ماخذ کوڈ کاپی ایڈریس:https://www.fmz.com/strategy/57029

function main() {
    // Use the CTA strategy framework of commodity futures library 
    $.CTA(Symbols, function(st) {
        var r = st.records
        var mp = st.position.amount
        var symbol = st.symbol
        /*
        "r" represents K-line, "mp" indicates the position amount of the current variety; positive number means long position, negative number means short position, and 0 means no position; "symbol" is the variety name
        if the return value is n: 
            n = 0 : full close positions (no matter now they are long or short)
            n > 0 : if right now long positions are held, add n long positions; if now they are short positions, close n short posiitons; if n is over the position amount right now, reverse to open long positions 
            n < 0 : if right now short positions are held, add n short positions; if now they are long positions, close n long posiitons; if -n is over the position amount right now, reverse to open short positions 
        */
        if (r.length < SlowPeriod) {
            return
        }
        var cross = _Cross(TA.EMA(r, FastPeriod), TA.EMA(r, SlowPeriod));
        if (mp <= 0 && cross > ConfirmPeriod) {
            Log(symbol, "Golden Cross Period", cross, "the moment position", mp);
            return Lots * (mp < 0 ? 2 : 1)
        } else if (mp >= 0 && cross < -ConfirmPeriod) {
            Log(symbol, "Death Cross Period", cross, "the moment position", mp);
            return -Lots * (mp > 0 ? 2 : 1)
        }
    });
}

سی ٹی پی ڈیٹا حاصل کرنے کے طریقے

کموڈٹی فیوچر سی ٹی پی پروٹوکول کا استعمال کرتے ہیں ، اور مارکیٹ کی تمام قیمتوں کا تعین اور آرڈر پر عمل درآمد صرف تبدیلیوں کے بعد ہی مطلع کیا جائے گا ، جبکہ آرڈرز ، اکاؤنٹس اور پوزیشنوں کے بارے میں سوالات فعال سوالات ہیں۔ لہذا ، یہ ایونٹ سے چلنے والی اعلی تعدد کی حکمت عملیوں کو لکھنے کے لئے موزوں ہے۔ ڈیفالٹ موڈ میں مارکیٹ کی قیمتوں کا تعین حاصل کرنے کے لئے انٹرفیس ، جیسےGetTicker, GetDepthاورGetRecords، سب کو تازہ ترین اعداد و شمار حاصل کرنے کے لئے ڈیٹا کیش کرنے کی ضرورت ہے۔ اگر کوئی ڈیٹا نہیں ہے تو ، یہ اس وقت تک انتظار کرے گا جب تک کہ اعداد و شمار موجود نہ ہوں ، لہذا حکمت عملی کے لئے سوتے کا استعمال کرنا ضروری نہیں ہے۔ جب مارکیٹ کی قیمتوں میں تبدیلیاں ہوتی ہیں تو ، ٹکر ، گہرائی اور ریکارڈ اپ ڈیٹ ہوجائیں گے۔ اس وقت ، ان میں سے کسی بھی انٹرفیس کو کال کرنا فوری طور پر واپس آجائے گا ، اور بلے ہوئے انٹرفیس کی حالت کو اپ ڈیٹ کے لئے انتظار کریں موڈ پر ترتیب دیا جائے گا۔ اگلی بار جب اسی انٹرفیس کو بلایا جائے گا تو ، یہ انتظار کرے گا جب تک کہ نیا ڈیٹا واپس نہ آئے۔ کچھ غیر مقبول معاہدے یا قیمت کی حد طویل عرصے تک تجارت کا سبب نہیں بنے گی ، جس کا مطلب ہے کہ حکمت عملی طویل عرصے تک پھنس گئی ہے ، یہ بھی معمول ہے۔

اگر آپ کو ہر بار آپ کو مارکیٹ کی قیمتوں کا تعین حاصل ڈیٹا حاصل کرنا چاہتے ہیں، یہاں تک کہ اگر یہ پرانے اعداد و شمار ہیں، آپ کو مارکیٹ کی قیمتوں کا تعین کی فوری اپ ڈیٹ موڈ پر سوئچ کر سکتے ہیںexchange.IO("mode", 0)اس وقت ، حکمت عملی کو ایونٹ سے چلنے والے طور پر نہیں لکھا جاسکتا ہے ، اور تیز لامحدود لوپ سے بچنے کے لئے SLeep ایونٹ کو شامل کرنے کی ضرورت ہے۔ کچھ غیر معمولی حکمت عملی اس موڈ کا استعمال کرسکتی ہیں ، اور حکمت عملی کا ڈیزائن آسان ہے۔ استعمال کریںexchange.IO("mode", 1)ڈیفالٹ کیش موڈ پر واپس سوئچ کرنے کے لئے.

ایک ہی معاہدہ چلانے پر ، پہلے سے طے شدہ موڈ استعمال کریں۔ تاہم ، اگر متعدد معاہدے ہیں تو ، یہ ممکن ہے کہ کسی ایک معاہدے میں مارکیٹ کی قیمتیں اپ ڈیٹ نہ ہوں ، جس کے نتیجے میں مارکیٹ کی قیمتوں کا تعین حاصل کرنے کے لئے انٹرفیس بلاک ہوجاتا ہے ، اور دوسرے معاہدوں کی قیمتوں کا تعین کی تازہ کاری بھی حاصل نہیں کی جاسکتی ہے۔ اس مسئلے کو حل کرنے کے لئے ، فوری اپ ڈیٹ موڈ استعمال کیا جاسکتا ہے ، لیکن اعلی تعدد کی حکمت عملی لکھنا تکلیف دہ ہے۔ اس وقت آپ آرڈرز اور قیمتوں کا تعین کرنے کے لئے ایونٹ پش موڈ استعمال کرسکتے ہیں۔ ترتیب دینے کا طریقہ یہ ہےexchange.IO("wait"). اگر ایک سے زیادہ تبادلے اشیاء شامل کر رہے ہیں، جس اجناس مستقبل میں نایاب ہے، آپ کو استعمال کر سکتے ہیںexchange.IO("wait_any")، اور واپس Index واپس پلیٹ فارم انڈیکس کی نشاندہی کرے گا.

مارکیٹ ٹِک تبدیلیوں کا دھکا:{Event:"tick", Index: platform index (in the order of the platforms added in the bot), Nano: event of nanosecond-level time, Symbol: contract name}آرڈر دباؤ:{Event:"order", Index:Exchange index, Nano:Event of nanosecond-level time, Order:Order information (same as GetOrder)}

اس وقت تک، حکمت عملی کی ساخت کو اس طرح لکھا جا سکتا ہے:

function on_tick(symbol){
    Log("symbol update")
    exchange.SetContractType(symbol)
    Log(exchange.GetTicker())
}

function on_order(order){
    Log("order update", order)
}

function main(){
    while(true){
        if(exchange.IO("status")){ //Judge the link status 
            exchange.IO("mode", 0)
            _C(exchange.SetContractType, "MA888")//Subscribe to MA; only the subscription request for the first time is ture, and the later ones are program switches, which do not consume time
            _C(exchange.SetContractType, "rb888")//Subscribe to rb
            while(true){
                var e = exchange.IO("wait")
                if(e){
                    if(e.event == "tick"){
                        on_tick(e.Symbol)
                    }else if(e.event == "order"){
                        on_order(e.Order)
                    }
                }
           }
        }else{
            Sleep(10*1000)
        }
    }
}

خام مال فیوچر اور کریپٹوکرنسی کے مابین اختلافات

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

سیٹ معاہدے

exchange.IO("مصنوعات"): یہ پلیٹ فارم {معاہدہ نام: تفصیلات} پر تمام معاہدوں کی فہرست کو لغت کی شکل میں واپس کرتا ہے ، اور صرف بوٹس کی حمایت کرتا ہے۔exchange.IO("مصنوعات"): یہ پلیٹ فارم {معاہدہ نام: تفصیلات} پر تمام اشیاء کی فہرست لغت کی شکل میں واپس کرتا ہے ، اور صرف بوٹس کی حمایت کرتا ہے۔exchange.IO("سبسکرائب شدہ"): یہ پلیٹ فارم پر سبسکرائب شدہ مارکیٹ کوٹس کو لغت کی شکل میں واپس کرتا ہے ، اور صرف بوٹس کی حمایت کرتا ہے۔

کےContractTypeروایتی سی ٹی پی فیوچر کا حوالہ معاہدے کی شناخت سے کرتا ہے ، جو بڑے اور چھوٹے سے حساس ہے۔ جیسےexchange.SetContractType("au1506"). معاہدہ کامیابی کے ساتھ طے ہونے کے بعد ، یہ معاہدے کی تفصیلی معلومات ، جیسے کم سے کم خریداری کی رقم ، سروس فیس ، ترسیل کا وقت وغیرہ واپس کردے گا۔ جب متعدد معاہدوں کی خریداری کرتے ہو تو ، صرف پہلی بار خریداری کی درخواست اصل میں بھیجی جاتی ہے ، اور پھر تجارتی جوڑی کوڈ کی سطح پر صرف تبدیل کردی جاتی ہے ، جس میں وقت نہیں لگتا ہے۔ اہم مسلسل معاہدہ کوڈ 888 ہے ، جیسے MA888 ، مسلسل شرح معاہدہ 000 ہے ، جیسے MA000؛ 888 اور 000 ورچوئل معاہدہ تجارت ہیں جو صرف بیک ٹیسٹ کی حمایت کرتے ہیں ، اور اصلی بوٹس صرف مارکیٹ کی قیمتوں کا تعین کرتے ہیں۔تاہم، MyLanguage مرکزی معاہدے کو چل سکتا ہے، اور پروگرام خود بخود پوزیشنوں کو تبدیل کرے گا، یعنی غیر اہم پوزیشنوں کو بند کرے گا اور اہم پوزیشنوں پر نئی پوزیشنیں کھولے گا.

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

کھلی پوزیشن اور بند پوزیشن

سمت SetDirectionچار پیرامیٹرز حاصل کر سکتے ہیں:buy, closebuy, sell, closesell۔ خام مال کے مستقبل میں زیادہclosebuy_todayاورclosesell_today، موجودہ پوزیشنوں کی بندش کی نشاندہی کرتا ہے۔ ڈیفالٹ ہےclosebuy/ closesell، کل کی پوزیشنوں کی بندش کی نشاندہی کرتا ہے۔ شنگھائی فیوچر ایکسچینج کی صرف اقسام کو آج اور کل کی بندش میں تقسیم کیا گیا ہے ، جو سروس فیس کو متاثر کرسکتا ہے ، لہذا کل کی پوزیشنوں کی بندش کو ترجیح دینا ضروری ہے۔ سی ٹی پی روایتی فیوچر کے ل you ، آپ دوسرا پیرامیٹر 1 یا 2 یا 3 کے طور پر ترتیب دے سکتے ہیں ، جو بالترتیب قیاس آرائی ، ثالثی ، اور ہیج سے مراد ہے۔ اگر مقرر نہیں کیا گیا ہے تو ، ڈیفالٹ قیاس آرائی ہے۔مخصوص آپریشنز جیسے خرید و فروخت، پوزیشن حاصل کرنا، آرڈر حاصل کرنا، آرڈر منسوخ کرنا اور اکاؤنٹس حاصل کرنا کریپٹوکرنسی فیوچر ٹریڈنگ کے ساتھ ایک جیسے ہیں ، لہذا براہ کرم پچھلے حصے کا حوالہ دیں۔

آپریشن سیٹ ڈائریکشن پیرامیٹرز آرڈر دینے کا کام
کھلی لمبی پوزیشن exchange.SetDirection ((buy) تبادلہ.خریدیں()
طویل پوزیشن بند کریں exchange.SetDirection ((closebuy) تبادلہ.فروخت ((()
کھلی مختصر پوزیشن exchange.SetDirection ((sell) تبادلہ.فروخت ((()
مختصر پوزیشن بند کرنا تبادلہ.سیٹ ڈائریکشن (( closeesell) تبادلہ.خریدیں()

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

function Cover(contractType, amount, slide) {
    for (var i = 0; i < positions.length; i++) {
        if (positions[i].ContractType != contractType) {
            continue;
        }
        var depth = _C(e.GetDepth);
        if (positions[i].Type == PD_LONG || positions[i].Type == PD_LONG_YD) {
            exchange.SetDirection(positions[i].Type == PD_LONG ? "closebuy_today" : "closebuy");
            exchange.Sell(depth.Bids[0]-slide, amount, contractType, positions[i].Type == PD_LONG ? "Close today" : "Close yesterday", 'Bid', depth.Bids[0]);
        } else {
            exchange.SetDirection(positions[i].Type == PD_SHORT ? "closesell_today" : "closesell");
            exchange.Buy(depth.Asks[0]+slide, amount, contractType, positions[i].Type == PD_SHORT ? "Close today" : "Close yesterday", 'Ask', depth.Asks[0]);
        }
    }
}

کموڈٹی فیوچر اپنی مرضی کے آرڈر کی اقسام کی حمایت کرتے ہیں (بوٹس کی حمایت کرتے ہیں ، لیکن بیک ٹسٹ کے لئے نہیں) ، جو _ کے ساتھ مل کر ضمنی طرف سے مخصوص ہیں ، جیسے:

exchange.SetDirection("buy_ioc");
exchange.SetDirection("sell_gtd-20170111")

مخصوص ضمنی الفاظ:

  • ioc فوری طور پر مکمل، یا منسوخ THOST_FTDC_TC_IOC
  • نوڈ THOST_FTDC_TC_GFS میں درست gfs
  • دن میں درست gfd THOST_FTDC_TC_GFD
  • مقررہ تاریخ سے پہلے درست gtd THOST_FTDC_TC_GTD
  • gtc منسوخ ہونے سے پہلے درست تھا THOST_FTDC_TC_GTC
  • gfa نیلامی کی پیشکش میں درست THOST_FTDC_TC_GFA

Esunny انٹرفیس

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

Esunny پروٹوکول کسٹم آرڈر کی اقسام ہیں:

  • دن میں درست gfd TAPI_ORDER_TIMEINFORCE_GFD
  • gtc منسوخ TAPI_ORDER_TIMEINFORCE_GTC سے پہلے درست ہے
  • gtd مقررہ تاریخ سے پہلے درست ہے TAPI_ORDER_TIMEINFORCE_GTD
  • fak جزوی طور پر عملدرآمد، باقی منسوخ TAPI_ORDER_TIMEINFORCE_FAK
  • ioc فوری طور پر عملدرآمد، یا منسوخ TAPI_ORDER_TIMEINFORCE_FAK
  • fok مکمل طور پر عملدرآمد نہیں کیا، تمام TAPI_ORDER_TIMEINFORCE_FOK منسوخ

عام طور پر استعمال شدہ عالمی افعال

لاگ - لاگ & وی چیٹ پش

جب بوٹ انٹرفیس پر لاگ ان ریکارڈ کو لاگ ان کریں ، اور سٹرنگ کے بعد کردار @ شامل کریں ، تو پیغام پش قطار میں داخل ہوگا ، اور یہ وی چیٹ یا ٹیلیگرام سے منسلک ہونے کے بعد براہ راست آگے بڑھایا جائے گا ، جیسےLog('Push to WeChat@').

لاگ رنگ بھی اپنی مرضی کے مطابق کیا جا سکتا ہے، جیسےLog('this is a log in red font #ff0000'). #ff0000RGB رنگ کا ہیکساڈیسمل ہے ، اس بات کی نشاندہی کرتا ہے کہ تمام لاگ فائلیں اس ڈائرکٹری میں بوٹ کے SqLit ڈیٹا بیس میں محفوظ ہیں جہاں ڈوکر واقع ہے ، جسے ڈاؤن لوڈ کیا جاسکتا ہے اور ڈیٹا بیس سافٹ ویئر کے ساتھ کھولا جاسکتا ہے ، یا بیک اپ کاپی کرنے اور بحال کرنے کے لئے استعمال کیا جاسکتا ہے (ڈیٹا بیس کا نام اور بوٹ آئی ڈی ایک جیسے ہیں) ۔

لاگ منافع - پرنٹ منافع

یہ منافع کو ریکارڈ کرتا ہے ، اور بوٹ انٹرفیس پر منافع کے منحنی خطوط تیار کرتا ہے ، جو بوٹ کو دوبارہ شروع کرنے کے بعد برقرار رکھا جاسکتا ہے۔ طلب کرنے کا طریقہ:LogProfit(1000)نوٹ کریں کہ پیرامیٹرLogProfitضروری نہیں کہ منافع ہو، اور یہ کوئی بھی نمبر ہو سکتا ہے اور اسے خود بھرنے کی ضرورت ہے۔

لاگ اسٹیٹس - اسٹیٹس ڈسپلے (ٹیبلز سمیت)

اگر بوٹ کی حیثیت، چونکہ لاگ پہلے محفوظ کیا جائے گا اور مسلسل تازہ کاری کی جائے گی، صرف نمائش کے لئے معلومات کی ضرورت ہوتی ہے نہ کہ بچانے کے لئے، آپ کو استعمال کر سکتے ہیںLogStatusفنکشن.LogStatusتار ہیں، جو ٹیبل کی معلومات کی نمائندگی کرنے کے لئے بھی استعمال کیا جا سکتا ہے.

ایک مخصوص حقیقی بوٹ پوزیشن ڈسپلے ٹیبل کا ایک مثال:

var table = {type: 'table', title: 'position information', cols: ['Column1', 'Column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}; 
LogStatus('`' + JSON.stringify(table) + '`'); // After serialization, JSON will be added the character "'" on both sides, which is regarded as a comlpex messag format (now supporting tables)
LogStatus('The first line information\n`' + JSON.stringify(table) + '`\nthe third line information'); // the table information can be displayed in multiple lines
LogStatus('`' + JSON.stringify([table, table]) + '`'); // Multiple tables are supported to be displayed at the same time, which will be displayed in one group by TAB  
LogStatus('`' + JSON.stringify(tab1) + '`\n' + '`' + JSON.stringify(tab2) + '`\n'); // Multiple tables are displayed up and down by arrangement 

نیند

اس کا پیرامیٹر ملی سیکنڈ کی تعداد ہے، جیسےSleep(1000)، ایک سیکنڈ کے لئے نیند کا اشارہ کرتا ہے۔ تمام پلیٹ فارمز کی محدود رسائی کی تعدد کی وجہ سے ، عام حکمت عملیوں میں نیند کا وقت لامحدود لوپ میں شامل کیا جانا چاہئے۔

_G

روبوٹ کو دوبارہ شروع کرنے کے بعد، پروگرام دوبارہ شروع ہو جائے گا._Gبہت آسان اور عملی ہے، اور یہ JSON سیریل مواد کو محفوظ کر سکتے ہیں._Gفنکشن میں لکھا جاتا ہےonexit()، تاکہ ہر بار جب حکمت عملی کو روک دیا جائے، مطلوبہ معلومات خود کار طریقے سے محفوظ کیا جائے گا. آپ کو زیادہ فارمیٹ ڈیٹا کو بچانے کے لئے چاہتے ہیں تو، _G تقریب مناسب نہیں ہے، لیکن


مزید