اس ٹیوٹوریل میں حکمت عملی لکھنے کا ابتدائی علم شامل ہے ، بشمول API کا تعارف ، جائزہ ، چارٹ وغیرہ۔ اس بنیادی ٹیوٹوریل کو سیکھنے کے بعد ، صارف بنیادی API کا استعمال کرنے میں مہارت حاصل کرنے کے قابل ہو جائے گا ، مستحکم ریل ڈسک حکمت عملی لکھیں۔ اس ٹیوٹوریل کو سیکھنے سے پہلے ، سیکھنے کی ضرورت ہے۔ایف ایم زیڈ کے تخلیق کاروں کے ذریعہ پیمائش پلیٹ فارم کا استعمال 。
پرانے ورژن:Inventors Quantum (FMZ.COM) حکمت عملی کے ساتھ مکمل طور پر استعمال کے لئے دستی 2.0 (ٹیوٹوریل)اس سبق میں بہت ساری پوسٹوں کی فہرست دی گئی ہے اور اس پر نظر ڈالنے کی سفارش کی گئی ہے۔
حکمت عملی کے لئے تیار کردہ ابتدائی ہدایات
API کا تعارف
پروگرامنگ ٹرانزیکشنز ایپلی کیشنز کے ذریعہ API اور تبادلے سے منسلک ہوتے ہیں ، جو ڈیزائن کے ارادے کے مطابق خود کار طریقے سے خرید و فروخت یا دیگر افعال کو انجام دیتے ہیں۔
فی الحال ڈیجیٹل کرنسی کے تبادلے میں بنیادی طور پر دو انٹرفیس پروٹوکول موجود ہیں: REST اور Websocket۔ 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 جوڑی کے ساتھ تجارت کی تازہ ترین صورتحال نظر آئے گی ، جس میں ہر بار تازہ کاری ہوتی ہے۔market=اس کے بعد مخصوص ٹرانزیکشن جوڑے کے پیرامیٹرز ہیں ، جن میں ترمیم کی جاسکتی ہے تاکہ دوسرے ٹرانزیکشن جوڑے کا ڈیٹا حاصل کیا جاسکے۔ عوامی انٹرفیس ، جیسے مارکیٹ کی تجارت ، ہر ایک کے لئے دستیاب ہے ، لہذا تصدیق کی ضرورت نہیں ہے ، جبکہ کچھ انٹرفیس جیسے آرڈر اور اکاؤنٹ حاصل کرنے کے لئے صارف کی شناخت کی ضرورت ہے ، اس وقت API-KEY کا استعمال کرتے ہوئے دستخط کرنے کی ضرورت ہے۔ ویب ساکٹ ایک سبسکرپشن موڈ ہے ، جس میں سبسکرپشن کی ضرورت کے مواد کو بھیجنے کے بعد ، تبادلے کو اپ ڈیٹ ڈیٹا پروگرام کو بھیجا جاتا ہے ، لہذا ہر بار دوبارہ جانے کی ضرورت نہیں ہے ، لہذا زیادہ موثر ہے۔
ایف ایم زیڈ کوانٹومیٹڈ ٹریڈنگ پلیٹ فارم نے مختلف ایکسچینجوں کے لئے REST انٹرفیس کو پیک کیا ہے ، اور اس نے یونیفارم کالنگ اور ڈیٹا فارمیٹ کا استعمال کیا ہے ، جس سے حکمت عملی کو لکھنا آسان اور عام ہے۔ ایف ایم زیڈ پلیٹ فارم میں ویب ساکٹ کی سہولت ہے ، جس کے بارے میں اگلے سبق میں تفصیل سے بتایا جائے گا۔
مختلف پروگرامنگ زبان
ایف ایم زیڈ پلیٹ فارم API دستاویزات زیادہ تر جاوا اسکرپٹ کی مثال کے طور پر ہیں ، لیکن اس کی وجہ سے ، مختلف زبانوں میں تقریبا کوئی فرق نہیں ہے ، صرف گرامر کے مسئلے پر توجہ دینے کی ضرورت ہے۔ C ++ تھوڑا سا خاص ہے ، بعد کے سبق میں خصوصی تعارف ہوگا۔ چونکہ جے ایس نسبتا simple آسان ہے اور اس میں مطابقت کا کوئی مسئلہ نہیں ہے ، لہذا ابتدائی افراد کو اس کا استعمال کرنے کی سفارش کی جاتی ہے۔ ایف ایم زیڈ کیوینٹری پلیٹ فارم مکمل پیتھون کی حمایت کرتا ہے ، اسے آزادانہ طور پر انسٹال کیا جاسکتا ہے ، اور اس میں کچھ پروگرامنگ کی بنیاد استعمال کرنے کی سفارش کی جاتی ہے۔
پیتھون کے مختلف ورژن ہونے کی وجہ سے ، پروگرام کے آغاز میں اس کی وضاحت کی جاسکتی ہے ، جیسے#!Python2,#!Python3。 نوٹ کریں کہ جاوا اسکرپٹ نے حال ہی میں ES6 کی گرامر کو اپ گریڈ کیا ہے ، دلچسپی رکھنے والوں کو اس کے بارے میں مزید معلومات مل سکتی ہیں۔ ذیل میں اسی طرح کے کام کرنے والے پیتھون اور جاوا اسکرپٹ کوڈ دکھائے گئے ہیں ، صرف گرامر میں فرق دیکھا جاسکتا ہے ، لہذا API دستاویزات میں صرف جاوا اسکرپٹ کی مثال دی گئی ہے ، یہ سبق پیتھون کے خصوصی استعمال کے معاملات کو بھی مدنظر رکھے گا۔
#python代码
def main():
while True:
Log(exchange.GetAccount().Balance)
Sleep(2000)
#相应的Js代码
function main(){
while(true){
Log(exchange.GetAccount().Balance)
Sleep(2000)
}
}
وسائل کی سفارش
- ایف ایم زیڈ پلیٹ فارم API دستاویزات ، اس سبق میں ہر انٹرفیس کی تفصیل نہیں دی جائے گی ، اس دستاویز پر ملاحظہ کریں: https://www.fmz.com/api
- اگر آپ FMZ پر تجارت کرنے کے لئے ٹریڈنگ ویو کے سگنل حاصل کرنا چاہتے ہیں تو ، اس مضمون کا حوالہ دیں: https://www.fmz.com/digest-topic/5533
- جاوا اسکرپٹ، پائیٹن کے لئے فوری تعارف، سادہ حکمت عملی کو لکھنے کے لئے پیچیدہ گرامر کی ضرورت نہیں ہے، صرف کچھ بنیادی تصورات پر قابو پانے کی ضرورت ہے، آپ کو اس ٹیوٹوریل کو سیکھنے کے دوران پروگرامنگ سیکھ سکتے ہیں: https://www.fmz.com/bbs-topic/382 https://www.fmz.com/bbs-topic/417
- میک زبان کی دستاویزات ، ٹرینڈنگ حکمت عملی کے ل Mac میک زبان بہت آسان ہے۔
- ایک C++ کال کی مثال ، C++ میں دلچسپی رکھنے والوں کو دیکھ سکتے ہیں ، لیکن چونکہ یہ ایک وضاحتی زبان نہیں ہے ، اس کی ڈیبگنگ کرنا مشکل ہے ، لہذا اس کا استعمال کرنے کی سفارش نہیں کی جاتی ہے: https://www.fmz.com/strategy/61533
- نیٹ ایز کلاؤڈ کلاس روم میں ڈیجیٹل کرنسی کی مقدار میں تجارت کا کورس ، ایف ایم زیڈ کی سرکاری مصنوعات ، صرف 20 یوآن ، تفصیلی مواد سے مالا مال ہے ، اور ابتدائی افراد کے لئے موزوں ہے۔کورس کے لنکس
- کچھ تدریسی حکمت عملی ، ابتدائی داخلے کے لئے موزوں ، سیکھنے کے ساتھ ساتھ بنیادی حاشیہ سازی کی حکمت عملی: https://www.fmz.com/square/s:tag: %E6%95%99%E5%AD%A6/1
- حکمت عملی کی تفصیلات کے لئے ماخذ کی وضاحت: https://www.fmz.com/bbs/s:tag: %E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/1
ڈیبگنگ ٹولز
ایف ایم زیڈ کوانٹومیشن پلیٹ فارم API انٹرفیس کو ڈیبگ کرنے کے لئے ڈیبگنگ ٹولز مہیا کرتا ہے ، https://www.fmz.com/m/debug 。 ڈیبگنگ ٹول صرف جاوا اسکرپٹ کی حمایت کرتا ہے ، صرف ایک وقت کے لئے چل سکتا ہے ، بغیر کسی ریئل اسٹیک کی تخلیق کے تبادلے کے انٹرفیس کو ڈیبگ کرسکتا ہے۔ ریٹرن کا ڈیٹا نتیجہ کے طور پر واپس کیا جائے گا ، ڈیبگنگ ٹول کا کوڈ محفوظ نہیں کیا جائے گا۔ اس سبق میں ، ڈیبگنگ ٹول کے ساتھ ساتھ جانچ کی جاسکتی ہے۔

حکمت عملی پروگرام کی ساخت
حکمت عملی کے طریقہ کار کو معمول کے طریقہ کار کی طرح ، کوڈ کے ترتیب سے انجام دیا جاتا ہے ، اس کی خاص بات یہ ہے کہ ایک اہم فنکشن ہونا ضروری ہے۔ چونکہ حکمت عملی کو بغیر کسی وقفے کے چلانے کی ضرورت ہوتی ہے ، عام طور پر ، ایک لوپ کے ساتھ ساتھ نیند کا وقت بھی درکار ہوتا ہے۔ چونکہ تجارت کے تمام API تک رسائی کی فریکوئنسی محدود ہے ، لہذا نیند کے وقت کو اسی طرح ایڈجسٹ کرنے کی ضرورت ہے۔ یہ فن تعمیر عام طور پر مقررہ وقفے پر عملدرآمد ہے ، اور ایونٹ سے چلنے والی حکمت عملی کو لکھنے کے لئے بھی ویب سوکٹ کا استعمال کیا جاسکتا ہے ، جیسے کہ گہرائی میں تبدیلی کے ساتھ ہی فوری طور پر عملدرآمد کیا جائے گا ، جس کا تعارف ترقیاتی سبق میں کیا جائے گا۔
دیگر خصوصی افعال کے ساتھ مندرجہ ذیل ہیں:
- onexit() عام طور پر باہر نکلنے کے لئے صفائی کا عمل ، زیادہ سے زیادہ 5 منٹ کی کارکردگی کا وقت ، بغیر کسی اعلان کے ، اگر وقت سے زیادہ ہو تو ، انٹروپٹ غلطی کی اطلاع دی جائے گی۔ کچھ نتائج کو باہر نکلنے کے عمل میں محفوظ کرنے کے لئے استعمال کیا جاسکتا ہے۔
- onerror() غیر معمولی طور پر باہر نکلنے کا فنکشن ، زیادہ سے زیادہ عملدرآمد کا وقت 5 منٹ ہے ، اس کا اعلان نہیں کیا جاسکتا。
- init (() ایک ابتدائی فنکشن کے طور پر، پالیسی پروگرام خود کار طریقے سے چلنے کے آغاز پر بلایا جاتا ہے، لیکن اس کا اعلان نہیں کیا جاسکتا ہے۔
function onTick(){
var ticker = exchange.GetTicker()
var account = exchange.GetAccount()
//在这里写策略逻辑,将会每6s调用一次
}
function main(){
while(true){
onTick()
Sleep(6000)
}
}
پچھلی مثال اگر نیٹ ورک تک رسائی کی غلطی سے حکمت عملی کا براہ راست خاتمہ ہوسکتا ہے ، اگر آپ ایسی حکمت عملی چاہتے ہیں جو خود کار طریقے سے دوبارہ شروع نہ ہو ، تو آپ ریل اسٹیٹ حکمت عملی کے ساتھ غلطی کو برداشت کرنے والے ماسٹر لوپ کو استعمال کرسکتے ہیں ((ریپیٹ استعمال نہ کریں) ۔ یقینا only صرف اس صورت میں اس طرح کی کارروائی کی سفارش کی جائے جب حکمت عملی مستحکم ہو ، ورنہ یہ تمام غلطیوں کی اطلاع نہیں دے گی ، حکمت عملی کے مسائل کو حل کرنا مشکل ہوگا۔
function onTick(){
var ticker = exchange.GetTicker()
var account = exchange.GetAccount()
//在这里写策略逻辑,将会每6s调用一次
}
function main(){
try{
while(true){
onTick()
Sleep(6000)
}
}catch(err){
Log(err)
}
}
ایکسچینج API کا تعارف
تبادلے اور جوڑے کی ترتیب
کسی بھی ایکسچینج سے متعلقہ API کو کال کرنے پر ، ایکسچینج اور ٹرانزیکشن جوڑے کو واضح طور پر بیان کرنے کی ضرورت ہے۔ اگر صرف ایک ایکسچینج-ٹرانزیکشن جوڑا شامل کیا گیا تھا جب فکسڈ ڈسک بنائی گئی تھی ، تو اس کا مطلب یہ ہے کہ آپ کو صرف ایک ایکسچینج-ٹرانزیکشن جوڑا شامل کرنے کی ضرورت ہے۔exchangeاس طرح کی اشیاء کی نمائندگی کرتا ہے:exchange.GetTicker()اس کے نتیجے میں ، آپ کو ایک ایسی کرنسی مل جائے گی جس میں آپ کو ایک ٹکر مل جائے گا جس میں آپ کو اس ایکسچینج کے ساتھ تجارت کرنے کی ضرورت ہے۔
FMZ پلیٹ فارم ایک ہی وقت میں ایک سے زیادہ ایکسچینج شامل کرنے کی حمایت کرتا ہے - ٹریڈنگ جوڑے ، جیسے ایک ہی ایکسچینج اکاؤنٹ پر بیک وقت کام کرنے والے بی ٹی سی اور ای ٹی ایچ۔ نوٹ کریں کہ ایک ہی ایکسچینج پر مختلف اکاؤنٹس بھی ایک ہی وقت میں شامل کیے جاسکتے ہیں ، وہ FMZ ویب سائٹ پر شامل کردہ لیبل کی بنیاد پر ہیں۔ جب ایک سے زیادہ ایکسچینج جوڑے موجود ہیں تو ، استعمال کریںexchangesصفوں کو تخلیق کرنے کے لئے ترتیب میں شامل کیا گیا ہے:exchanges[0]、exchanges[1]... اور اسی طرح. ٹرانزیکشن جوڑے کی شکل یہ ہے:BTC_USDTبی ٹی سی ایک کرنسی ہے جس پر تجارت کی جاتی ہے ، اور یو ایس ڈی ٹی ایک کرنسی ہے جس کی قیمت ہے۔
واضح طور پر، اگر ہم بہت سارے جوڑوں کے ساتھ کام کر رہے ہیں تو یہ طریقہ مشکل ہو جائے گا، اس وقت ہم SetCurrency کا استعمال کرتے ہوئے جوڑوں کو تبدیل کر سکتے ہیں، جیسے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)
}
}
عوامی انٹرفیس جیسے ٹریفک کی معلومات
جیسا کہ اوپر دی گئی مثال کے طور پر ، تجارتی انٹرفیس عام طور پر ایک عوامی انٹرفیس ہوتا ہے ، اور ہر ایک اس تک رسائی حاصل کرسکتا ہے۔ عام تجارتی انٹرفیس میں: تجارتی ٹکر ، گہرائی کی گہرائی ، K لائن ریکارڈز ، اور ٹرانزیکشن ریکارڈ ٹریڈز حاصل کرنا شامل ہیں۔ تجارتی حکمت عملی تجارت کے فیصلے کی بنیاد ہے۔ ذیل میں ایک ایک کرکے تعارف کیا جائے گا ، بہتر ہے کہ ڈیبگ ٹول میں خود کوشش کی جاسکے ، تفصیلی وضاحت کے لئے API دستاویزات دیکھیں۔
انٹرفیس عام طور پر ہیںInfoفیلڈز، جو کہ تبادلے کی طرف سے لوٹائے گئے ڈیٹا کی اصل سٹرنگ کی نمائندگی کرتے ہیں، جو اضافی معلومات کے لئے استعمال کیا جا سکتا ہے، جو پہلے سے تجزیہ کرنے کی ضرورت ہوتی ہے، جاوا اسکرپٹ کا استعمال کرتے ہوئےJSON.parse()پیتھون json لائبریری کا استعمال کرتا ہے۔Timeیہ فیلڈ درخواست کی ٹائم لائن کو ظاہر کرتا ہے، جو تاخیر کا تعین کرنے کے لئے استعمال کیا جا سکتا ہے۔
رئیل ڈسک میں API انٹرفیس کا استعمال کرتے ہوئے رسائی میں ناکامی اور واپسی کا امکان ہےnullپیتھون کی واپسیNoneاس ٹیوٹوریل میں ہم اس کے بارے میں الگ سے بات کریں گے۔ اس ٹیوٹوریل میں ہم اس کے بارے میں بات کریں گے۔
GetTicker
مارکیٹ میں موجودہ رجحانات حاصل کرنے کے لئے ، یہ شاید سب سے زیادہ استعمال ہونے والا انٹرفیس ہے ، آپ کو آخری ٹرانزیکشن کی قیمت ، خرید و فروخت کی قیمت ، حالیہ ٹرانزیکشن حجم وغیرہ کی معلومات مل سکتی ہے۔ آپ کو دوبارہ آرڈر دینے سے پہلے ٹکرر کی معلومات کے ذریعہ ٹرانزیکشن کی قیمت کا تعین کرنے کی اجازت ہے۔ ایک ریئل ٹائم واپسی کی مثال{"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 。可以看到具体的结果。
Log('上次成交价: ',ticker.Last, '买一价: ', ticker.Buy)
}
GetDepth
ہینگ لسٹ کی گہرائی کی معلومات حاصل کریں۔ اگرچہ GetTicker میں خرید و فروخت کی گہرائی شامل ہے ، لیکن اگر آپ مزید گہرائی سے ہینگ لسٹ تلاش کرنا چاہتے ہیں تو ، آپ اس انٹرفیس کا استعمال کرسکتے ہیں۔ عام طور پر مندرجہ ذیل 200 ہینگ لسٹ تک رسائی حاصل کی جاسکتی ہے۔ آپ اس انٹرفیس کا استعمال کرتے ہوئے جھٹکے کی قیمتوں کا حساب کتاب کرسکتے ہیں۔ ذیل میں ایک حقیقی واپسی کا نتیجہ ہے۔ اس میں Asks کا مطلب ہے کہ ہینگ لسٹ بیچنا ، جس میں ایک صف میں فروخت اور دو صفوں میں فروخت ... لہذا قیمتیں بھی بڑھ گئیں۔ بولیوں کا مطلب ہے کہ ہینگ لسٹ خریدنا ، جس میں ایک صف خریدی گئی اور دو صفیں خریدی گئیں۔ قیمتیں بالترتیب کم ہوگئیں۔
{
"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
}
گہرائی سے خرید و فروخت کے حصول کی مثالیں:
function main() {
var depth = exchange.GetDepth()
Log('买一价个: ', depth.Bids[0].Price, '卖一价格: ', depth.Asks[0].Price)
}
GetRecords
K لائن حاصل کریں ، ایک سب سے عام استعمال ہونے والا انٹرفیس ، ایک بار میں طویل عرصے سے قیمت کی معلومات واپس کرنے کے لئے ، مختلف اشارے کی بنیاد پر حساب کتاب کریں۔ 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اس طرح کے بڑے پیمانے پر متغیرات ، جو ایف ایم زیڈ کے ڈیفالٹ عالمی متغیرات ہیں ، دلچسپی رکھنے والے اپنے مخصوص اقدار کو لاگ ان کرسکتے ہیں ، جو عام طور پر براہ راست استعمال میں آتے ہیں۔
واپسی کے اعداد و شمار کی مثال:
[
{"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
}
GetTrades
ایک خاص وقت کی حد کے لئے ٹرانزیکشن ڈیٹا حاصل کریں (اپنے ٹرانزیکشن ڈیٹا کے بجائے) ، کچھ تبادلے اس کی حمایت نہیں کرتے ہیں۔ یہ نسبتا کم استعمال ہوتا ہے ، آپ API دستاویزات پر تفصیلی معلومات حاصل کرسکتے ہیں۔
ایک اکاؤنٹ کھولیں اور تجارت کریں
چونکہ یہ انٹرفیس اکاؤنٹس سے وابستہ ہیں ، لہذا ان تک براہ راست رسائی حاصل نہیں کی جاسکتی ہے ، لہذا ان کو API-KEY دستخط استعمال کرنے کی ضرورت ہے۔ ایف ایم زیڈ پلیٹ فارم نے بیک گراؤنڈ میں یکساں طور پر خود کار طریقے سے اس کا انتظام کیا ہے ، لہذا وہ براہ راست استعمال ہوسکتے ہیں۔
GetAccount اکاؤنٹ حاصل کریں
اکاؤنٹ کی معلومات حاصل کریں۔ یہ انٹرفیس سب سے زیادہ استعمال کیا جاتا ہے ، اور آپ کو کم از کم بیلنس سے بچنے کے ل order دوبارہ آرڈر کرنے سے پہلے کال کرنے کی ضرورت ہے۔ یہ مندرجہ ذیل نتائج واپس کرتا ہے:{"Stocks":0.38594816,"FrozenStocks":0,"Balance":542.858308,"FrozenBalance":0,"Info":{}}❚ جہاں اسٹاکس ٹریڈنگ جوڑی کے لئے دستیاب کرنسی کا ٹریڈنگ بیلنس ہے ، FrozenStocks زیر التواء آرڈرز کا منجمد بیلنس ہے ، بیلنس قیمتوں کا تعین کرنے والی کرنسی کا دستیاب بیلنس ہے ، اور FrozenBalance منجمد بیلنس ہے۔ اگر ٹریڈنگ جوڑیBTC_USDTاسٹاکس کا مطلب بی ٹی سی ہے اور بیلنس کا مطلب یو ایس ڈی ٹی ہے۔
نوٹ کریں کہ واپسی کا نتیجہ ایک مخصوص جوڑی کا نتیجہ ہے اور ٹریڈنگ اکاؤنٹ میں موجود دیگر کرنسیوں کی معلومات انفو فیلڈ میں موجود ہے ، اور ایک سے زیادہ جوڑی کو چلانے کے لئے متعدد بار کال کرنے کی ضرورت نہیں ہے۔
ایک ڈسپلے جس میں موجودہ ٹرانزیکشن جوڑے کی مجموعی قیمت پرنٹ کی جاتی ہے:
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)قیمت قیمت ہے ، رقم مقدار ہے ، ایم ایس جی ایک اضافی تار ہے جو ریئل ڈسک کی تاریخ میں دکھائی دے سکتی ہے ، غیر ضروری ہے۔ یہ طریقہ آرڈر لگانے کے لئے ہے ، اگر فوری طور پر مکمل طور پر مکمل نہیں کیا جاسکتا ہے تو اس سے غیر منقولہ آرڈر پیدا ہوجاتا ہے ، آرڈر کامیابی کے ساتھ آرڈر آئی ڈی کے طور پر واپس آجاتا ہے ، ناکام آرڈر آئی ڈی کے طور پرnull، آرڈر کی حیثیت کے بارے میں معلومات حاصل کرنے کے لئے استعمال کیا جاتا ہے۔
اگر آپ کو کم قیمت پر خریدنے کی ضرورت ہے تو، قیمت 1 ہے، اور رقم آرڈر کی قیمت ہے، جیسےexchange.Buy(-1, 0.5)تجارت درست ہےETH_BTCای ٹی ایچ کے لئے 0.5 بی ٹی سی خریدنے کے لئے مارکیٹ کی قیمت کی نمائندگی کریں گے۔ کچھ تبادلے مارکیٹ کی قیمت کی فہرست کی حمایت نہیں کرتے ہیں ، اور نہ ہی فیوچر ریٹرننگ کی حمایت کرتے ہیں۔
تمام قیمتوں اور مقدار کی درستگی کی ضرورت ہے، دستیاب ہے_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.2 ETH کے لئے مارکیٹ کی قیمت کی نمائندگی کرتا ہے۔
GetOrder آرڈر حاصل کریں
آرڈر آئی ڈی کے مطابق آرڈر کی معلومات حاصل کریں۔ عام استعمال شدہ انٹرفیس ، کال کرنے کا طریقہexchange.GetOrder(OrderId)آرڈر آئی ڈی آرڈر آئی ڈی کے طور پر استعمال کیا جاتا ہے اور آرڈر کے وقت واپس آ جاتا ہے۔**آرڈر کی قسم پر توجہ دیںTypeکھیت اور آرڈر کی حیثیتStatusاصل اقدار اعداد ہیں جو مختلف معنی کی نمائندگی کرتے ہیں، لیکن یہ میموری کے لئے نقصان دہ ہے، FMZ ان اقدار کو عالمی سطح پر مستقل طور پر نمائندگی کرتا ہے، جیسے کہ غیر منقولہ احکاماتStatus0 کے برابر ہےORDER_STATE_PENDINGیہ تمام گلوبل کنسٹنٹس دستاویزات میں دیکھے جا سکتے ہیں۔**◦ نتائج کی واپسی:
{
"Id":125723661, //订单id
"Amount":0.01, //订单数量
"Price":7000, //订单价格
"DealAmount":0, //已成交数量
"AvgPrice":0, //成交均价
"Status":0, // 0:未完全成交, 1:已成交, 2:已撤单
"Type":1,// 订单类型,0:买单, 1:卖单
"ContractType":"",//合约类型,用于期货交易
"Info":{} //交易所返回原始信息
}
}
ایک حکمت عملی جس میں ایک مخصوص رقم خریدنے کی حکمت عملی ہے:
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){ //这里也可以用 status == ORDER_STATE_PENDING 来判断。
exchange.CancelOrder(id)
}
}
}
}
GetOrders نے ابھی تک کوئی آرڈر نہیں دیا
تمام زیر التواء آرڈرز کی فہرست کے لئے موجودہ ٹرانزیکشنز حاصل کریں۔ اگر کوئی زیر التواء آرڈر خالی صف کو واپس نہیں کرتا ہے۔ آرڈر کی فہرست کے مخصوص نتائج جیسے GetOrder۔
تمام احکامات کے لئے موجودہ ٹرانزیکشن کو منسوخ کرنے کا ایک مثال:
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)
}
}
CancelOrder (آرڈر منسوخ کریں)
آرڈر id کے مطابق آرڈر منسوخ کریں۔exchange.CancelOrder(OrderId)。 منسوخی کامیاب واپسی true، ورنہ واپسی false 。 نوٹ کریں کہ آرڈر مکمل طور پر مکمل ہوچکا ہے منسوخ کرنے میں ناکامی 。
مستقبل اور مستقل معاہدے
ڈیجیٹل کرنسی فیوچر ٹریڈنگ اور نقد رقم کی تجارت میں تھوڑا سا فرق ہے ، اوپر کی نقد رقم کی تجارت کا فنکشن فیوچر کے لئے بھی لاگو ہوتا ہے ، ایک فیوچر ٹریڈنگ کا ایک خصوصی فنکشن ہے۔ ڈیجیٹل کرنسی فیوچر پروگریسڈ ٹریڈنگ کرنے سے پہلے ، سائٹ پر دستی آپریشن سے واقف ہوں ، بنیادی تصورات کو سمجھیں ، جیسے پوزیشن کھولنا ، کم پوزیشن ، مکمل پوزیشن ، کم پوزیشن ، بیعانہ ، فلیٹ پوزیشن نقصان ، فلوٹنگ آمدنی ، بیعانہ وغیرہ کے تصورات اور اسی طرح کے حساب کتاب کے فارمولے ، متعلقہ سبق ہر فیوچر ایکسچینج میں پایا جاسکتا ہے ، اپنے آپ کو سیکھنے کی ضرورت ہے۔
مستقل معاہدہ اور مستقبل کے معاہدے کی طرح ہے ، اس کے علاوہ ایک ہی وقت میں زیادہ جگہ رکھنے کا تصور نہیں ہے۔
اگر ایک ایکسچینج فیوچر کیش کی حمایت کرتا ہے ، جیسے OKEX اور Huobi فیوچر ، تو اسے ایکسچینج کے انٹرفیس میں علیحدہ علیحدہ OKEX فیوچر خانہ اور Huobi فیوچر خانہ شامل کرنے کی ضرورت ہے ، جسے FMZ میں نقد سے مختلف ایکسچینج سمجھا جاتا ہے۔
SetContractType معاہدہ سیٹ کریں
فیوچر ٹریڈنگ کا پہلا قدم تجارت کرنے کے لئے معاہدہ قائم کرنا ہے۔ مثال کے طور پر ، OKEX فیوچر میں ، فکسڈ یا ریٹرننگ کے وقت بی ٹی سی ٹریڈنگ جوڑی کا انتخاب کریں۔ کوڈ میں بھی اس ہفتے ، اگلے ہفتے یا سہ ماہی کے معاہدے کی ضرورت ہوتی ہے۔ اگر ایسا نہیں ہے تو ، آپ کو اشارہ کیا جائے گا۔invalid contract type。**نقد تجارت کے جوڑوں کے برعکس ، فیوچر معاہدے اکثر تجارت کی کرنسیوں جیسے بی ٹی سی کے ساتھ تجارت کی جاتی ہیں ، جوڑی جو بی ٹی سی کو شامل کرتی ہے وہ عام طور پر بی ٹی سی کے ساتھ تجارت کی جانے والی بی ٹی سی_ یو ایس ڈی ٹریڈنگ جوڑی کی نمائندگی کرتی ہے ، اگر یو ایس ڈی ٹی میں موجود فیوچر موجود ہے تو ، اس کے لئے ایک ٹھوس تخلیق کی ضرورت ہوتی ہے جس میں بی ٹی سی_ یو ایس ڈی ٹی ٹریڈنگ جوڑی شامل کی جاتی ہے۔ جیسے کرنسی اور اوکیکس فیوچر جیسے کرنسی کی سطح اور یو ایس ڈی ٹی کی سطح پر ایک ساتھ موجود ایک مستقل معاہدہ۔**ایک بار جب آپ نے تجارت کی جوڑی ترتیب دی ہے تو ، آپ کو مخصوص معاہدے کی اقسام بھی ترتیب دینے کی ضرورت ہے ، جیسے مستقل ، اسی ہفتے ، اگلے ہفتے وغیرہ۔ معاہدہ ترتیب دینے کے بعد ، آپ تجارت ، خرید و فروخت وغیرہ حاصل کرنے کے لئے کارروائی کرسکتے ہیں۔
بئنان، اوکیکس، ہووبی ڈی ایم اور دیگر جیسے سکے بیس اور یو ایس ڈی ٹی بیس کے معاہدے موجود ہیں، جس میں فکسڈ سیٹ اپ معاہدے کو شامل کرنے کے دوران فرق کرنے کی ضرورت ہے۔ مخصوص ترتیبات مندرجہ ذیل ہیں۔
//OKEX期货
exchange.SetContractType("swap") // 设置为永续合约
exchange.SetContractType("this_week") // 设置为当周合约
exchange.SetContractType("next_week") // 设置为次周合约
exchange.SetContractType("quarter") // 设置为季度合约
//HuobiDM
exchange.SetContractType("this_week") // 设置为当周合约
exchange.SetContractType("next_week") // 设置为次周合约
exchange.SetContractType("quarter") // 设置为季度合约
exchange.SetContractType("swap") // 设置为永续合约
//币安期货
exchange.SetContractType("swap") // 设置为永续合约,注意币本位和USDT本位都存在永续
exchange.SetContractType("quarter") // 设置为当季合约
exchange.SetContractType("next_quarter") // 设置为次季合约
//BitMEX
exchange.SetContractType("XBTUSD") // 设置为永续合约
exchange.SetContractType("XBTM19") // 具体某个时间结算的合约,详情登录BitMEX查询各个合约代码
//GateIO
exchange.SetContractType("swap") // 设置为永续合约,不设置默认为swap永续合约。
//Deribit
exchange.SetContractType("BTC-27APR18") // 具体某个时间结算的合约,详情参看Deribit官网。
گیٹ پوزیشن
موجودہ ہولڈنگ معلومات کی فہرست حاصل کریں ، OKEX ((OKCOIN) فیوچر ایک پیرامیٹر میں منتقل کیا جاسکتا ہے ، جس میں معاہدے کی قسم کی وضاحت کی جائے گی۔ اگر کوئی ہولڈنگ نہیں ہے تو خالی فہرست واپس کریں[]ہولڈنگ کی معلومات مندرجہ ذیل ہے، بہت سے مخصوص معلومات، جو ٹرانزیکشن کے لئے مخصوص تجزیہ کے ساتھ مل کر کی ضرورت ہوتی ہے.
| ڈیٹا کی قسم | متغیر نام | مثال دینا |
|---|
"Object HDI Info HDI ایکسچینج کی طرف سے واپس آ گیا اصل ساخت"
<unk>number <unk>Margin <unk>Level <unk>چھڑی کا سائز <unk>OKCoin <unk>10 یا <unk>20 <unk>OK Futures <unk>Forex <unk>Forex <unk>
نمبر ڈیسک ٹاپ کی رقم، OKCoin کا مطلب ہے کہ معاہدے کی تعداد (ایک عدد اور 1 سے زیادہ)
FrozenAmount تعداد منجمد شدہ رقم
♬ نمبر اور قیمت ♬
♬ نَمَرِسِسِسِ مارجِنِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِسِ
[number] [Profit] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [number] [num
<unk> const <unk> type <unk> PD_LONG کثیر پوزیشن کے لئے ((CTP میں closebuy_today صف پوزیشن), PD_SHORT خالی پوزیشن کے لئے ((CTP میں closesell_today) صف پوزیشن, (CTP فیوچر میں) PD_LONG_YD کل کثیر پوزیشن کے لئے ((closebuy صف پوزیشن), PD_SHORT_YD کل خالی پوزیشن کے لئے ((closesell صف پوزیشن)
string <unk> ContractType <unk> فاریکس کے لئے معاہدہ کا کوڈ، اسٹاک کے لئے شیلف ایکسچینج کا کوڈ _ اسٹاک کوڈ شیلف، مخصوص پیرامیٹرز SetContractType کی ٹرانسمیشن کی قسم
function main(){
exchange.SetContractType("this_week");
var position = exchange.GetPosition();
if(position.length>0){ //特别要注意引用前要先判断position长度再引用,否则会出错
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,closebuy。**خاص تعلقات:
| آپریشن | SetDirection کے پیرامیٹرز | نیچے آرڈر فنکشن |
|---|---|---|
| پوزیشن کھولیں | exchange.SetDirection("buy") | exchange.Buy() |
| پینڈو پوزیشن | exchange.SetDirection("closebuy") | exchange.Sell() |
| خالی پوزیشن | exchange.SetDirection("sell") | exchange.Sell() |
| خالی پوزیشن | exchange.SetDirection("closesell") | exchange.Buy() |
آخر میں ، مخصوص پوزیشن کھولنے اور پوزیشن کوڈ ، مندرجہ ذیل آرڈر کی مقدار مختلف تبادلے سے مختلف ہوتی ہے ، جیسے huobi فیوچر شیٹ کی تعداد پر ہے ، ایک شیٹ 100 ڈالر ہے۔ براہ کرم نوٹ کریں کہ فیوچر ریٹرننگ مارکیٹ کی قیمت کی حمایت نہیں کرتی ہے۔
function main(){
exchange.SetContractType("this_week") // 举例设置 为OKEX期货 当周合约
price = exchange.GetTicker().Last
exchange.SetMarginLevel(10) //设置杠杆为10倍
exchange.SetDirection("buy") //设置下单类型为做多
exchange.Buy(price+10, 20) // 合约数量为20下单
pos = exchange.GetPosition()
Log(pos)
Log(exchange.GetOrders()) //查看是否有未成交订单
exchange.SetDirection("closebuy"); //如果是永续合约,直接设置exchange.SetDirection("sell")
exchange.Sell(price-10, 20)
}
ذیل میں ایک مخصوص مثال کے طور پر مکمل طور پر غیر فعال کرنے کی حکمت عملی دی گئی ہے۔
function main(){
while(true){
var pos = exchange.GetPosition()
var ticker = exchange.GetTicekr()
if(!ticker){
Log('无法获取ticker')
return
}
if(!pos || pos.length == 0 ){
Log('已无持仓')
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: لیوریج اکاؤنٹ کے طریقوں میں جوڑے جو عام سے مختلف ہیں ، اور کچھ جوڑے جو نہیں ہوسکتے ہیں۔
- Bitcoin: لیوریج اکاؤنٹ کے ماڈل میں جوڑے جو عام سے مختلف ہیں ، اور کچھ جوڑے جو نہیں ہوسکتے ہیں۔
- ZB: فنڈز صرف QC کے طور پر منتقل ہوسکتے ہیں ، لیورڈ ٹریڈنگ سیکٹر ، مختلف جوڑوں کے مابین فنڈز کی آزادی ، یعنی ETH_QC ٹریڈنگ جوڑے کے تحت QC سکے کی تعداد ، جو BTC_QC میں نہیں دیکھی جاتی ہے۔
- FCoin
- Binance (بائننس)
اجناس کے فیوچر ٹریڈنگ
اجناس کے فیوچر ٹریڈنگ اور ڈیجیٹل کرنسی کے فیوچر ٹریڈنگ میں بہت بڑا فرق ہے۔ سب سے پہلے ، اجناس کے فیوچر ٹریڈنگ کا وقت بہت کم ہے ، ڈیجیٹل کرنسی 24h ٹریڈنگ ہے۔ اجناس کے فیوچر کا معاہدہ بھی عام طور پر استعمال نہیں کیا جاتا ہے REST API؛ اجناس کے فیوچر کی تجارت کی فریکوئنسی اور انوینٹری کی تعداد کی پابندی ، ڈیجیٹل کرنسی بہت نرمی ہے ، وغیرہ۔ لہذا ، اجناس کے فیوچر ٹریڈنگ میں بہت ساری جگہیں ہیں جن پر خصوصی توجہ کی ضرورت ہے ، اور مشورہ دیا جاتا ہے کہ آپ کو عملی طور پر دستی آپریشن کا تجربہ ہو۔ FMZ سیمنوا اجناس کے فیوچر سمپلنگ ڈسک کی حمایت کرتا ہے ، حوالہ: https://www.fmz.com/bbs-topic/325 。 اجناس کے فیوچر کمپنی نے مزید کہا: https://www.fmz.com/bbs-topic/371
جون 2019 میں ، فرنٹ ٹریڈنگ کے ساتھ ، فرنٹ ٹریڈنگ کے لائسنسنگ کوڈ کے لئے انفرادی پروگرامنگ کے لئے انفرادی صارفین کی ضرورت ہوتی ہے۔ اس میں عام طور پر 4-5 دن لگتے ہیں۔ ایف ایم زیڈ مقداری پلیٹ فارم ، پروگرامنگ ٹریڈنگ فراہم کرنے والے کے طور پر ، مختلف فرنٹ ٹریڈنگ سروسز کے لئے سافٹ ویئر لائسنسنگ کے لئے درخواست دیتا ہے۔ صارفین کو براہ راست درخواست دینے کی ضرورت نہیں ہے۔ فرنٹ ٹریڈنگ کو شامل کرنے کے لئے ، فرنٹ ٹریڈنگ کو تلاش کرنے کے لئے ، فرنٹ ٹریڈنگ کو تلاش کریں اور ایف ایم زیڈ کی درخواستوں کی فہرست دیکھیں۔ مخصوص حوالہ پوسٹ: https://www.fmz.com/bbs-topic/3860 。 اگر آپ کا فاریکس سپلائر فہرست میں شامل نہیں ہے تو ، صرف خود ہی درخواست دے سکتا ہے ، یا تجارت کھولنے میں دوبارہ تعاون کرسکتا ہے ، عام طور پر 2 دن کی ضرورت ہوتی ہے۔
ایف ایم زیڈ پلیٹ فارم کے فن تعمیر کے فوائد کی وجہ سے ، صارفین متعدد فیوچر ڈیلر اکاؤنٹس بھی شامل کرسکتے ہیں ، اور کچھ ایسی خصوصیات کو انجام دے سکتے ہیں جو دوسرے اجناس کے مستقبل کے پروگرام ٹریڈنگ سافٹ ویئر نہیں کرسکتے ہیں ، جیسے اعلی تعدد ٹک کی ترکیب ، حوالہ: https://www.fmz.com/bbs-topic/1184
پالیسی فریم ورک
سب سے پہلے ، چونکہ یہ 24 گھنٹے کی تجارت نہیں ہے اور اس کے لئے لاگ ان کرنے کی ضرورت ہے ، لہذا تجارت کرنے سے پہلے لنک کی حیثیت کا اندازہ لگانا ضروری ہے۔exchange.IO("status")کے لیےtrueاس کا مطلب ہے کہ منسلک ہونے پر تبادلہ کریں۔ اگر لاگ ان کامیابی سے نہیں ہوا تو API کو بلایا گیا ، 'not login' نہیں کہا گیا۔ حکمت عملی کے آغاز کے بعد سوتے ہیں ((2000)) ، لاگ ان کرنے کے لئے ایک خاص وقت دیا گیا ہے۔ آپ سبسکرپشن کی دوبارہ کوشش بھی کرسکتے ہیں۔_C(exchange.SetContractType,"MA888")اس سے لینڈنگ کی کامیابی کو یقینی بنایا جا سکتا ہے۔
کموڈٹی فیوچر کے لئے حاصل کرنے اور تجارت کرنے کا کوڈ ڈیجیٹل کرنسی فیوچر کی طرح ہی ہے۔ یہاں مختلف اور توجہ دینے کی ضرورت ہے۔
function main(){
_C(exchange.SetContractType,"MA888") //没登陆成功是无法订阅合约的,最好重试一下
while(true){
if(exchange.IO("status")){
var ticker = exchange.GetTicker()
Log("MA888 ticker:", ticker)
LogStatus(_D(), "已经连接CTP !")//_D获取事件
} else {
LogStatus(_D(), "未连接CTP !")
Sleep(1000)
}
}
}
اس وقت کوڈ بہت آسان ہو جائے گا، اس وقت تک کہ آپ کو پیچیدہ تفصیلات کے ساتھ نمٹنے کی ضرورت نہیں ہوگی. ماخذ کاپی کریں: https://www.fmz.com/strategy/57029
function main() {
// 使用了商品期货类库的CTA策略框架
$.CTA(Symbols, function(st) {
var r = st.records
var mp = st.position.amount
var symbol = st.symbol
/*
r为K线, mp为当前品种持仓数量, 正数指多仓, 负数指空仓, 0则不持仓, symbol指品种名称
返回值如为n:
n = 0 : 指全部平仓(不管当前持多持空)
n > 0 : 如果当前持多仓,则加n个多仓, 如果当前为空仓则平n个空仓,如果n大于当前持仓, 则反手开多仓
n < 0 : 如果当前持空仓,则加n个空仓, 如果当前为多仓则平n个多仓,如果-n大于当前持仓, 则反手开空仓
无返回值表示什么也不做
*/
if (r.length < SlowPeriod) {
return
}
var cross = _Cross(TA.EMA(r, FastPeriod), TA.EMA(r, SlowPeriod));
if (mp <= 0 && cross > ConfirmPeriod) {
Log(symbol, "金叉周期", cross, "当前持仓", mp);
return Lots * (mp < 0 ? 2 : 1)
} else if (mp >= 0 && cross < -ConfirmPeriod) {
Log(symbol, "死叉周期", cross, "当前持仓", 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")انڈیکس کی واپسی ایک ایکسچینج انڈیکس کی واپسی کو ظاہر کرتی ہے.
ٹاک ٹریک میں تبدیلیاں{Event:"tick", Index:交易所索引(按实盘上交易所添加顺序), Nano:事件纳秒级时间, Symbol:合约名称}
آرڈر کی ترسیل:{Event:"order", Index:交易所索引, Nano:事件纳秒级时间, Order:订单信息(与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")){ //判断链接状态
exchange.IO("mode", 0)
_C(exchange.SetContractType, "MA888")//订阅MA,只有第一次是真正的发出订阅请求,接下来都是程序切换,不耗时间。
_C(exchange.SetContractType, "rb888")//订阅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 ہوتی ہے۔
معاہدے کی ترتیب
exchange.IO ((("instruments"): تمام معاہدوں کی فہرست کو واپس کرتا ہے {معاہدے کا نام: تفصیلات} لغت کی شکل میں ، صرف فکسڈ ڈسک کی حمایت کرتا ہے۔
exchange.IO ((("products"): تمام مصنوعات کی فہرست {پروڈکٹ کا نام: تفصیل} لغت کی شکل میں واپسی ، صرف فکسڈ ڈسک کی حمایت کریں۔
exchange.IO ((("subscribed"): سبسکرائب شدہ معاہدوں کی واپسی ، اسی شکل میں ، صرف فکسڈ ڈسک کی حمایت کریں۔
روایتی CTP مستقبل کے لئےContractTypeمثال کے طور پر:exchange.SetContractType("au1506")معاہدے کی ترتیب کامیابی کے بعد واپس آنے والے معاہدے کی تفصیلات ، جیسے کم سے کم ایک بار خریدنے کے لئے کتنا ، ہینڈلنگ فیس ، ترسیل کا وقت وغیرہ۔ جب ایک سے زیادہ معاہدوں کی خریداری کی جائے تو ، صرف پہلی بار خریداری کی درخواست بھیجنے کے لئے ، اور پھر صرف کوڈ کی سطح پر جوڑے کو تبدیل کرنے کے لئے ، وقت ضائع نہ کریں۔ اہم مسلسل معاہدے کوڈ 888 جیسے MA888 ، مسلسل انڈیکس معاہدہ 000 جیسے MA000 ، 888 اور 000 صرف ورچوئل معاہدوں کے لئے واپسی کی حمایت کرتے ہیں ، اور حقیقی ڈسک صرف حصول کی حمایت کرتا ہے۔لیکن میک زبان میں آپریٹنگ طاقت کے معاہدے، پروگرام خود کار طریقے سے پوزیشن تبدیل کرے گا، یعنی غیر طاقت پوزیشنوں کو صاف کریں، اور اہم پوزیشنوں پر نیا پوزیشن کھولیں.
اگر آپ لاگ ان نہیں کرتے ہیں تو معاہدہ قائم نہیں کیا جاسکتا ہے ، لیکن یہ فوری طور پر واپس آجائے گا ، لہذا آپ CTP لاگ ان کرنے کے لئے C ++ کے ساتھ دوبارہ کوشش کرسکتے ہیں۔ لاگ ان کرنے کے بعد ، معاہدہ دوبارہ قائم کرنا وقت طلب نہیں ہے اور نہ ہی حقیقی نیٹ ورک تک رسائی حاصل ہوگی۔
پوزیشن کھولیں
SetDirectionکے Direction حاصلbuy, closebuy, sell, closesellچار پیرامیٹرز، اشیاء فیوچر زیادہ باہرclosebuy_todayاورclosesell_todayاس کے بجائے، اس کے بجائے، اس کے بجائے، اس کے بجائےclosebuy/closesellپچھلی پوزیشن کے لئے ، صرف پچھلی مدت کی اقسام میں فرق کیا گیا ہے ، اس سے کارروائی کی فیس پر اثر پڑ سکتا ہے ، لہذا پچھلی پوزیشن کو ترجیح دینے کی ضرورت ہے۔ سی ٹی پی روایتی مستقبل کے ل you ، آپ دوسرا پیرامیٹر کٹ 1 کٹ یا کٹ 2 کٹ یا کٹ 3 کٹ ترتیب دے سکتے ہیں ، بالترتیب اشارہ کرتے ہیں قیاس آرائی کا کٹ ، کٹ منافع کٹ ، کٹ محافظ کٹ ، کوئی ڈیفالٹ قیاس آرائی نہیں ہے۔مخصوص خرید و فروخت ، پوزیشن حاصل کرنے ، آرڈر حاصل کرنے ، انوائس واپس لینے ، اکاؤنٹ حاصل کرنے جیسے آپریشن ڈیجیٹل کرنسی کے مستقبل کے لین دین کی طرح ہیں۔
| آپریشن | SetDirection کے پیرامیٹرز | نیچے آرڈر فنکشن |
|---|---|---|
| پوزیشن کھولیں | exchange.SetDirection("buy") | exchange.Buy() |
| پینڈو پوزیشن | exchange.SetDirection("closebuy") | exchange.Sell() |
| خالی پوزیشن | exchange.SetDirection("sell") | exchange.Sell() |
| خالی پوزیشن | exchange.SetDirection("closesell") | exchange.Buy() |
ذیل میں مثال کے طور پر ایک مخصوص فلیٹ پوزیشن فنکشن ہے، اس مثال کو بہت آسان ہے، اور یہ بھی غور کرنے کی ضرورت ہے کہ آیا تجارت کے وقت میں ہے، مکمل طور پر تجارت نہیں کی گئی ہے، کس طرح ایک ہی بار بار آزمائشی ہے، زیادہ سے زیادہ نیچے آرڈر کی مقدار کتنی ہے، کیا تعدد بہت زیادہ ہے، خاص طور پر قیمت یا کھلے دروازے وغیرہ وغیرہ کے سلسلے میں. صرف ریفرنس کے لئے.**فکسڈ ڈسک کے لئے کھلنے والے گوداموں کو پلیٹ فارم کے ساتھ پیکڈ کلاس رومز کا استعمال کرنے کی سفارش کی جاتی ہے. 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 ? "平今" : "平昨", '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 ? "平今" : "平昨", 'Ask', depth.Asks[0]);
}
}
}
اشیاء کی فیوچر کی حمایت اپنی مرضی کے مطابق آرڈر کی قسم (پوری ڈسک کی حمایت، retracement کی حمایت نہیں) ، بعد میں سلاخوں کے طریقہ کار کی وضاحت، سلاخوں میں شامل_مثال کے طور پر
exchange.SetDirection("buy_ioc");
exchange.SetDirection("sell_gtd-20170111")
خاص طور پر، اس کے بعد:
- ioc فوری طور پر مکمل کریں ، ورنہ THOST_FTDC_TC_IOC کو منسوخ کریں
- gfs یہ سیکشن درست ہے THOST_FTDC_TC_GFS
- gfd اس دن THOST_FTDC_TC_GFD کے لئے درست ہے
- gtd مخصوص تاریخ سے پہلے درست ہے THOST_FTDC_TC_GTD
- gtc منسوخی سے پہلے THOST_FTDC_TC_GTC
- gfa مجموعہ بولی درست ہے THOST_FTDC_TC_GFA
آسان انٹرفیس
ڈیفالٹ کے طور پر کموڈٹی فیوچر ٹریڈر میں CTP انٹرفیس کھلتا ہے ، اگر درخواست کی جائے تو ، اس کو ایشین انٹرفیس میں تبدیل کیا جاسکتا ہے۔ ایف ایم زیڈ کے ذریعے پیکیجنگ ، کال کرنے کا طریقہ ایک جیسا ہے۔ فرق یہ ہے کہ اکاؤنٹ ، آرڈر ، اور ہولڈنگ پش موڈ میں ہیں ، لہذا ٹرسٹ ان اعداد و شمار کو مقامی طور پر برقرار رکھتا ہے ، اور جب متعلقہ انٹرفیس کو کال کیا جاتا ہے تو فوری طور پر واپس آجاتا ہے ، اصل میں درخواست نہیں کی جاتی ہے۔
ایشنگ معاہدہ حسب ضرورت آرڈر کی اقسام مندرجہ ذیل ہیں:
- 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
- TAPI_ORDER_TIMEINFORCE_FOK کو مکمل طور پر منسوخ کرنے میں ناکام
عام طور پر استعمال شدہ گلوبل فنکشن
لاگ ان اور ویکیپیڈیا کی ترسیل
رئیل ڈسک انٹرفیس میں لاگ ان کریں ، اسکرین کے بعد @ حرف شامل کریں ، پیغام کو آگے بڑھانے کی قطار میں ڈال دیا جائے گا ، اور جب وہ ویکیسینٹ یا ٹیلیگرام کو پابند کرے گا تو وہ براہ راست آگے بڑھے گا۔Log('推送到微信@')
لاگ ان کا رنگ بھی اپنی مرضی کے مطابق کیا جا سکتا ہےLog('这是一个红色字体的日志 #ff0000') 。#ff0000RGB رنگ کے لئے 16 عددی نمائندگی
تمام لاگ فائلیں میزبان کی ڈائرکٹری میں ڈسک پر موجود اسکلٹ ڈیٹا بیس میں موجود ہیں ، جو ڈیٹا بیس سافٹ ویئر کے ساتھ کھولنے کے لئے ڈاؤن لوڈ کیا جاسکتا ہے ، یا بیک اپ کی بحالی کی نقل کرنے کے لئے استعمال کیا جاسکتا ہے (ڈیٹا بیس کا نام اور ڈسک کی شناخت ایک جیسی ہے) ۔
LogProfit آمدنی پرنٹ کریں
آمدنی کو ریکارڈ کریں ، اور آمدنی کی منحنی خطوط کو فکسڈ ڈسک انٹرفیس پر ڈرائنگ کریں ، فکسڈ ڈسک کو دوبارہ شروع کرنے کے بعد بھی برقرار رکھا جاسکتا ہے۔LogProfit(1000)توجہLogProfitکے پیرامیٹرز ضروری نہیں کہ منافع ہو ، یہ کوئی بھی نمبر ہوسکتا ہے ، اسے خود ہی بھرنا پڑتا ہے۔
LogStatus کی حیثیت کا ٹیبل دکھا رہا ہے
ریلڈ ڈسک کی حیثیت سے ، چونکہ لاگ کو پہلے محفوظ کیا جاتا ہے اور اسے مستقل طور پر تازہ کیا جاتا ہے ، اگر آپ کو صرف غیر محفوظ شدہ معلومات دکھانے کی ضرورت ہو تو ، اس کا استعمال کیا جاسکتا ہےLogStatusفنکشنLogStatusکی پیرامیٹرز سٹرنگ ہیں اور ٹیبل کی معلومات ظاہر کرنے کے لئے بھی استعمال کیا جا سکتا ہے۔
مثال کے طور پر ایک ٹیبل جس میں ریلڈ ڈسک کی حیثیت کا مقام دکھایا گیا ہے:
var table = {type: 'table', title: '持仓信息', cols: ['列1', '列2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]};
LogStatus('`' + JSON.stringify(table) + '`'); // JSON序列化后两边加上`字符, 视为一个复杂消息格式(当前支持表格)
LogStatus('第一行消息\n`' + JSON.stringify(table) + '`\n第三行消息'); // 表格信息也可以在多行中出现
LogStatus('`' + JSON.stringify([table, table]) + '`'); // 支持多个表格同时显示, 将以TAB显示到一组里
LogStatus('`' + JSON.stringify(tab1) + '`\n' + '`' + JSON.stringify(tab2) + '`\n'); // 上下排列显示多个表
نیند نیند
پیرامیٹرز ملی سیکنڈ ہیں، جیسےSleep(1000)نیند کے لئے ایک سیکنڈ۔ تمام ٹرانزیکشنز کی رسائی کی فریکوئنسی کی حد کی وجہ سے ، عام حکمت عملی میں ڈیڈ لوپ میں نیند کا وقت شامل کرنا ہوتا ہے۔
_G ڈیٹا محفوظ کریں
اس کے بعد، آپ کو ایک بار پھر آپ کے کمپیوٹر کو دوبارہ شروع کرنے کی ضرورت ہے، اور آپ کو ایک بار پھر آپ کے کمپیوٹر کو دوبارہ شروع کرنے کی ضرورت ہے، اور آپ کو کچھ دیرپا معلومات کو بچانے کے لئے ہے._Gیہ بہت آسان اور عملی ہے اور JSON ترتیب شدہ مواد کو محفوظ کرنے کے لئے استعمال کیا جاتا ہے._Gفنکشن میں لکھا ہےonexit()اس کے علاوہ، یہ آپ کو آپ کے کمپیوٹر پر ایک بار جب آپ کو آپ کے کمپیوٹر سے منسلک کر سکتے ہیں کی اجازت دیتا ہے کہ آپ کو آپ کے کمپیوٹر سے منسلک کر سکتے ہیں.
اگر آپ مزید فارمیٹڈ ڈیٹا کو محفوظ کرنا چاہتے ہیں، تو یہ آپ کے لئے آسان ہے۔_جی فنکشن زیادہ مناسب نہیں ہے، اسے براہ راست پیتھون کے ذریعے ڈیٹا بیس میں لکھا جاسکتا ہے۔
function onexit(){
_G('profit', profit)
}
function main(){
_G("num", 1); // 设置一个全局变量num, 值为1 s
_G("num", "ok"); // 更改一个全局变量num, 值为字符串ok
_G("num", null); // 删除全局变量 num
_G("num"); // 返回全局变量num的值,如果不存在返回null
var profit = 0
if(_G('profit')){
profit = _G('profit')
}
}
_N صحت سے متعلق فنکشن
آرڈر دیتے وقت، اکثر قیمت اور مقدار کی درستگی کو کنٹرول کرنے کے لئے، FMZ نے _N فنکشن کو بلٹ میں رکھا ہے، جس میں چھوٹے عددی ڈاٹ ڈگری کو محفوظ کرنے کا تعین کیا گیا ہے، جیسے:_N(4.253,2)اس کا نتیجہ 4.25 <unk> ہے.
_C خودکار دوبارہ کوشش
اس کے علاوہ ، یہ بھی یقینی بنانا ہے کہ آپ کے پاس پہلے سے موجود تمام ایپلی کیشنز کو انسٹال کرنے کے لئے ایک ایپلی کیشن موجود ہے۔_C ایک خود کار طریقے سے دوبارہ کوشش کرنے والا فنکشن ہے۔ اس کو کال کیا جائے گا جب تک کہ یہ کامیاب نہ ہو جائے۔ مثال کے طور پر:_C(exchange.GetTicker)ڈیفالٹ ریٹرننگ وقفہ 3 سیکنڈ ہے ، ریٹرننگ وقفہ کو کنٹرول کرنے کے لئے _CDelay فنکشن کو کال کیا جاسکتا ہے ، جیسے _CDelay(1000) ، تجویز کردہ 1 سیکنڈ ریٹرننگ وقفہ کو تبدیل کرنے کے لئے _C فنکشنGetTicker(),exchange.GetDepth,GetTrade,GetRecords,GetAccount,GetOrders, GetOrderیہ سب کچھ C_Error tolerant کے ذریعے کیا جاتا ہے تاکہ رسائی کی ناکامی سے پروگرام کو روکنے میں مدد ملے۔
CancelOrder_C فنکشن کا استعمال نہیں کیا جاسکتا ہے ، کیونکہ واپسی کی ناکامی کی مختلف وجوہات ہیں۔ اگر ایک یونٹ پہلے ہی ٹرانزیکشن ہوچکا ہے تو ، واپسی کی واپسی ناکام ہوجائے گی ، اور _C فنکشن کا استعمال کرنے سے دوبارہ کوشش ہوگی۔
_C فنکشن کو پیرامیٹرز میں بھی منتقل کیا جاسکتا ہے اور اسے اپنی مرضی کے مطابق فنکشن میں بھی استعمال کیا جاسکتا ہے۔
function main(){
var ticker = _C(exchange.GetTicker)
var depth = _C(exchange.GetDepth)
var records = _C(exchange.GetRecords, PERIOD_D1) //传入参数
}
_ڈیٹ فنکشن
براہ راست کال کریں_D()موجودہ ٹائم سٹرنگ لوٹاتا ہے، جیسے:2019-08-15 03:46:14。 اگر یہ ردمیٹ میں بلایا جاتا ہے تو ردمیٹ کا وقت لوٹایا جائے گا۔ وقت کا تعین کرنے کے لئے _D فنکشن کا استعمال کیا جاسکتا ہے ، جیسے: _D().slice(11) > '09:00:00':
_D(timestamp,fmt)اس کے علاوہ، اگر آپ کو اس کی ضرورت ہو تو، آپ کو اس کی ضرورت ہو گی._D(1565855310002)fmt پیرامیٹر وقت کی شکل ہے، پہلے سے طے شدہyyyy-MM-dd hh:mm:ss
ٹی اے اشاریہ فنکشن
کچھ عام استعمال شدہ اشارے جیسے MA\MACD\KDJ\BOLL وغیرہ کے لئے ، ایف ایم زیڈ پلیٹ فارم براہ راست بلٹ ان ہے ، مخصوص معاون اشارے API دستاویزات میں دیکھے جاسکتے ہیں۔
اشاریہ فنکشن کا استعمال کرنے سے پہلے ، یہ بہتر ہے کہ K لائن کی لمبائی کا اندازہ لگایا جائے۔ جب پچھلی K لائن کی لمبائی حساب کتاب کے لئے درکار دورانیے کو پورا نہیں کرتی ہے تو ، نتیجہnull。 اگر ان پٹ کی K لائن کی لمبائی 100 ہے ، اور ما کی مدت 10 ہے ، تو پہلے 9 اقدار نول ہیں ، اور بعد میں اس کا صحیح حساب لگایا جاتا ہے۔。
جاوا اسکرپٹ بھی مکمل طور پر تالیب کی حمایت کرتا ہے ، جیسا کہ تیسری پارٹی کے لائبریری کی حمایت کرتا ہے ، جیسے:talib.CCI(records)。 حوالہ http://ta-lib.org/function.html 。 پیتھون کے لئے آپ خود انسٹال کرسکتے ہیں talib لائبریری ، کیونکہ اس کی تالیف کی ضرورت ہے ، پیپ انسٹال کرنے کے لئے آسان استعمال نہیں کیا جاسکتا ہے ، آپ خود انسٹال کرنے کا طریقہ تلاش کرسکتے ہیں۔
اشاریہ فنکشن K لائن کے اعداد و شمار میں منتقل کرنے کے علاوہ ، کسی بھی صف میں بھی منتقل کیا جاسکتا ہے
function main(){
var records = exchange.GetRecords(PERIOD_M30)
if (records && records.length > 9) {
var ma = TA.MA(records, 14)
Log(ma)
}
}
جاوا اسکرپٹ میں عام طور پر استعمال ہونے والے افعال
یہاں کچھ عام طور پر استعمال ہونے والے جاوا اسکرپٹ فنکشنز ہیں۔
Date.now()موجودہ ٹائم ٹیبل پر واپس جائیںparseFloat()سٹرنگ کو اعداد میں تبدیل کریں، جیسےparseFloat("123.21")parseInt()سٹرنگ کو عددی شکل میں تبدیل کریںnum.toString()اعداد کو سٹرنگ میں تبدیل کریں، num کو ڈیجیٹل متغیر میں تبدیل کریںJSON.parse()فارمیٹ Json سٹرنگ، جیسےJSON.parse(exchange.GetRawJSON())- جاوا اسکرپٹ میں Math library کے فنکشنز ہیں:
Math.max(),Math.abs()عام طور پر استعمال کیا جاتا ریاضی آپریشن، وغیرہ. https://www.w3school.com.cn/jsref/jsref_obj_math.asp - ایف ایم زیڈ نے جاوا اسکرپٹ تھرڈ پارٹی میتھ لائبریری کا حوالہ دیا ، حوالہ: https://mathjs.org/
- ایف ایم زیڈ نے جاوا اسکرپٹ تھرڈ پارٹی انڈر سکور لائبریری کا حوالہ دیا ہے ، جس میں بہت سے جے ایس کے بوجھل آپریشن کو آسان بنانے کی سفارش کی گئی ہے۔ حوالہ: https://underscorejs.org/
ٹیمپلیٹ لائبریری
ایک لکیری حکمت عملی کی خصوصیت لکھنے کے لئے بہت سارے حالات پر غور کرنے کی ضرورت ہے ، جیسے 5 سکے خریدنے کی طرح ایک آسان خصوصیت ، ہمیں اس پر غور کرنا چاہئے: کیا موجودہ بیلنس کافی ہے؟ آرڈر کی قیمت کتنی ہے؟ درستگی کتنی ہے؟ کیا مارکیٹ کو جھٹکا دینے سے بچنے کے لئے آرڈر کو تقسیم کرنے کی ضرورت نہیں ہے؟ نامکمل آرڈر کو کس طرح سنبھالنا ہے؟ وغیرہ وغیرہ۔ مختلف حکمت عملیوں میں ، یہ خصوصیات ایک جیسی ہیں ، ایک ٹیمپلیٹ کے طور پر کی جاسکتی ہیں۔
جاوا اسکرپٹ ڈیجیٹل کرنسی ٹریڈنگ کلاس لائبریری اور کموڈٹی فیوچر ٹریڈنگ کلاس لائبریری ڈیفالٹ کے طور پر بلٹ میں ہیں ، ان کی نقل کرنے کی ضرورت نہیں ہے۔ دیگر ٹیمپلیٹ کلاس لائبریریاں پالیسی اسکوائر پر مل سکتی ہیں https://www.fmz.com/square/20/1۔ ٹیمپلیٹ کلاس لائبریری کو کاپی اور محفوظ کریں ، اور اپنی حکمت عملی بنانے کے وقت استعمال کرنے کے لئے منتخب کردہ کلاس لائبریریوں کا استعمال کریں۔
جاوا اسکرپٹ ٹیمپلیٹ افعال$پیتھون کے ساتھ شروع کریںextآغاز
ڈیجیٹل کرنسی ٹرانزیکشن کلاس بیس
ماخذ کوڈ ایڈریس: https://www.fmz.com/strategy/10989 ، پہلے سے ہی بلٹ ان ہے ، اس کی نقل کرنے کی ضرورت نہیں ہے۔ مخصوص افعال کے نفاذ کے طریقے براہ راست ماخذ کوڈ کا حوالہ دے سکتے ہیں۔
اکاؤنٹ تک رسائی:
$.GetAccount(e)
Log($.GetAccount()); // 获取账户信息, 带容错功能
Log($.GetAcccount(exchanges[1]));
اس کے بعد، میں نے اس سے کہا:
$.Buy/Sell(e, amount)
$.Buy(0.3); // 主交易所买入0.3个币
$.Sell(0.2); // 主交易所卖出0.2个币
$.Sell(exchanges[1], 0.1); // 次交易所卖出0.1个币
$.CancelPendingOrders(e, orderType)
$.CancelPendingOrders(); // 取消主交易所所有委托单
$.CancelPendingOrders(ORDER_TYPE_BUY); // 取消主交易所所有的买单
$.CancelPendingOrders(exchanges[1]); // 取消第二个交易所所有订单
$.CancelPendingOrders(exchanges[1], ORDER_TYPE_SELL); // 取消第二个交易所所有的卖单
فیصلہ کرو:
$.Cross(periodA, periodB) / $.Cross(arr1, arr2);
var n = $.Cross(15, 30);
var m = $.Cross([1,2,3,2.8,3.5], [3,1.9,2,5,0.6])
如果 n 等于 0, 指刚好15周期的EMA与30周期的EMA当前价格相等
如果 n 大于 0, 比如 5, 指15周期的EMA上穿了30周期的EMA 5个周期(Bar)
如果 n 小于 0, 比如 -12, 指15周期的EMA下穿了30周期的EMA 12个周期(Bar)
如果传给Cross不是数组, 则函数自动获取K线进行均线计算
如果传给Cross的是数组, 则直接进行比较
$.withdraw(e, currency, address, amount, fee, password) واپسی کا فنکشن:
$.withdraw(exchange, "btc", "0x.........", 1.0, 0.0001, "***")
کموڈٹی فیوچر ٹریڈنگ کلاس بیس
فاریکس ٹریڈنگ کی کلاس بیس کا استعمال مستحکم ہے ، اس کا استعمال کرنے کی سفارش کی جاتی ہے۔ ماخذ کوڈ کا پتہ: https://www.fmz.com/strategy/12961 。 پہلے سے ہی اندرونی ہے ، اس کی نقل کرنے کی ضرورت نہیں ہے۔
سی ٹی اے
- فکسڈ ڈسک خود کار طریقے سے اشارے کو مرکزی توانائی کے سلسلے میں نقشہ کرے گا
- خود کار طریقے سے آپ کی منتقلی کا انتظام کرے گا
- ریٹرننگ میپنگ کی وضاحت کر سکتا ہے مثال کے طور پر rb000/rb888 یہ ہے کہ rb اشاریہ ٹرانزیکشنز کو مین فورس تسلسل میں میپ کیا جائے
- یہ دوسرے معاہدوں پر بھی نقشہ لگایا جا سکتا ہے، مثال کے طور پر rb000/MA888 جو rb انڈیکس کے K لائن کو دیکھتا ہے اور MA پرنسپل فورس کے سلسلے میں تجارت کرتا ہے.
function main() {
$.CTA("rb000,M000", function(r, mp) {
if (r.length < 20) {
return
}
var emaSlow = TA.EMA(r, 20)
var emaFast = TA.EMA(r, 5)
var cross = $.Cross(emaFast, emaSlow);
if (mp <= 0 && cross > 2) {
Log("金叉周期", cross, "当前持仓", mp);
return 1
} else if (mp >= 0 && cross < -2) {
Log("死叉周期", cross, "当前持仓", mp);
return -1
}
});
}
کلاس لائبریری کال کی مثال
function main() {
var p = $.NewPositionManager();
p.OpenShort("MA609", 1);
p.OpenShort("MA701", 1);
Log(p.GetPosition("MA609", PD_SHORT));
Log(p.GetAccount());
Log(p.Account());
Sleep(60000 * 10);
p.CoverAll("MA609");
LogProfit(p.Profit());
Log($.IsTrading("MA609"));
// 多品种时使用交易队列来完成非阻塞的交易任务
var q = $.NewTaskQueue();
q.pushTask(exchange, "MA701", "buy", 3, function(task, ret) {
Log(task.desc, ret)
})
while (true) {
// 在空闲时调用poll来完成未完成的任务
q.poll()
Sleep(1000)
}
}
ڈرائنگ کلاس لائبریری
چونکہ اصل ڈرائنگ فنکشن زیادہ پیچیدہ ہے ، اس کی وضاحت اگلے سبق میں کی جائے گی ، لہذا ابتدائی افراد کو ڈرائنگ کلاس لائبریری ، بہت آسان ڈرائنگ فولڈنگ لائن گراف ، کے لائن گراف ، وغیرہ کا براہ راست استعمال کرنے کی سفارش کی جاتی ہے۔ ایف ایم زیڈ میں ایک سادہ کلاس لائبریری ہے ، جو پالیسی میں ترمیم کرنے والے صفحے پر دیکھی جاسکتی ہے ، اگر اس میں کوئی بلٹ ان نہیں ہے تو ، صارف کو خود کاپی کرنے اور بچانے کی ضرورت ہوگی تاکہ وہ پالیسی میں حوالہ جات کو منتخب کرسکے۔
جاوا اسکرپٹ پرنٹنگ نقشہ جات کی نقل: https://www.fmz.com/strategy/27293
پیتھون پرنٹنگ لائن کلاس لائبریری کاپی کریں: https://www.fmz.com/strategy/39066
مثال کے طور پر
function main() {
while (true) {
var ticker = exchange.GetTicker()
if (ticker) {
$.PlotLine('Last', ticker.Last) //可以同时画两条线,Last是这条线的名字
$.PlotLine('Buy', ticker.Buy)
}
Sleep(6000)
}
}
پالیسی پیرامیٹرز کی ترتیبات
پالیسی ایڈیٹر کے نیچے پالیسی پیرامیٹرز کی ترتیب ہے ، جو پالیسی کے عالمی متغیر کے برابر ہے ، جو کوڈ میں کسی بھی جگہ سے قابل رسائی ہے۔ پالیسی پیرامیٹرز کو رئیل ڈسک انٹرفیس میں تبدیل کیا جاسکتا ہے ، اور دوبارہ شروع ہونے پر اس کا اثر ہوگا۔ لہذا کچھ متغیرات کو پیرامیٹرز کے طور پر ترتیب دیا جاسکتا ہے ، اور پالیسی کو تبدیل کیے بغیر پیرامیٹرز کو تبدیل کیا جاسکتا ہے۔

- متغیر نام: یعنی اوپر کے گراف میں نمبر، سٹرنگ، کوم باکس وغیرہ، حکمت عملی گروپ میں براہ راست استعمال کیا جا سکتا ہے۔
- بیان کریں: پیرامیٹرز کا نام پالیسی کے انٹرفیس میں ، پیرامیٹرز کے معنی کو سمجھنے میں مدد کے لئے۔
- نوٹ: پیرامیٹرز کی تفصیلی وضاحت ، اس کی وضاحت اس وقت ظاہر ہوتی ہے جب ماؤس پیرامیٹرز پر ٹھہرتی ہے۔
- قسم: اس پیرامیٹر کی اقسام، ذیل میں تفصیل سے متعارف کرایا گیا ہے۔
- پہلے سے طے شدہاس پیرامیٹر کی ڈیفالٹ:
سٹرنگ کی قسم اور عددی قسم کو سمجھنے کے لئے آسان ہے اور یہ سب سے زیادہ استعمال ہونے والی قسم ہے۔ ڈراپ ڈاؤن باکس آپشنز کے ڈراپ ڈاؤن باکس کو پیرامیٹر انٹرفیس میں دکھائے گا ، جیسا کہ ڈراپ ڈاؤن SYMBOL پیرامیٹر کی قیمت کو سیٹ کیا جاسکتا ہے۔BTC|USDT|ETH، پیرامیٹرز کے صفحے پر ڈریگ ڈاؤن میں USDT منتخب کیا گیا ہے ، حکمت عملی میں SYMBOL کی قیمت USDT کا انڈیکس 1 ہے۔ ایک منتخب خانہ ہے ، جس پر نشان لگا دیا گیا ہے سچ ہے ، ورنہ غلط ہے۔
پیرامیٹرز کے لئے بہت سی ترتیبات دستیاب ہیں، ملاحظہ کریں https://www.fmz.com/bbs-topic/1306
حکمت عملی بیک ٹیسٹنگ
جب آپ حکمت عملی کی مقدار پر کام کرتے ہیں تو ، آپ اپنی حکمت عملی کو تاریخی اعداد و شمار کے ساتھ جانچ سکتے ہیں تاکہ یہ معلوم ہوسکے کہ آپ کی حکمت عملی تاریخی اعداد و شمار میں کس طرح منافع بخش رہی ہے۔ یقینا. ریٹرننگ کے نتائج صرف ریفرنس کے لئے ہیں۔ ایف ایم زیڈ کوانٹمٹیکل پلیٹ فارم ڈیجیٹل کرنسی کیش ، فیوچر ، بٹ ایم ای ایکس مستقل معاہدے ، اور اجناس کے مستقبل کی ریٹرننگ کی حمایت کرتا ہے ، جس میں ڈیجیٹل کرنسی بنیادی طور پر مرکزی دھارے کی حمایت کرتی ہے۔
جاوا اسکرپٹ کی بازیافت براؤزر میں کی جاتی ہے ، پائتھون کی بازیافت کی ضرورت میزبان پر ہوتی ہے ، جو پلیٹ فارم کو عوامی میزبان فراہم کرنے کے لئے استعمال کیا جاسکتا ہے۔ میک زبان کی بازیافت اور مزید پیرامیٹرز کی ضرورت ہوتی ہے ، میک زبان کی دستاویزات کا حوالہ دیں۔
ریٹرننگ میکانزم
onbar ریٹرننگ میکانیزم K لائن پر مبنی ہے ، یعنی ہر K لائن ایک ریٹرننگ ٹائم پوائنٹ پیدا کرتی ہے ، جس میں موجودہ K لائن کی اعلی اور کم قیمت ، ٹرانزیکشن کی مقدار اور اس سے پہلے کی تاریخی K لائن کی معلومات حاصل کی جاسکتی ہیں۔ اس طریقہ کار کا نقصان واضح ہے: ایک K لائن پر ، صرف ایک بار خرید و فروخت پیدا ہوسکتی ہے ، عام طور پر قیمت K لائن کی بندش کی قیمت پر مبنی ہوتی ہے۔ اور ایک K لائن صرف چار قیمتوں کو کھولنے اور کم کرنے تک حاصل کرسکتی ہے ، اس طرح ایک لائن K کے اندر قیمت میں تبدیلی کیسے ہوتی ہے ، یہ سب سے زیادہ قیمت پہلے ہوتی ہے ، کم قیمت یا پہلے ہوتی ہے۔ مثال کے طور پر ، 1 گھنٹہ K لائن سے ، ریئل ٹائم ڈیسک ہر چند سیکنڈ میں ایک بار چلتی ہوئی معلومات حاصل کرنے کی یقین دہانی کرتا ہے ، اور اس کے بجائے ڈسک میں جاری ہونے کے بجائے تجارت کے احکامات جاری کیے جاتے ہیں۔
ایف ایم زیڈ پلیٹ فارم کی بازیافت دو قسم کی ہے: ینالاگ سطح کی بازیافت اور ریلڈ ڈسک سطح کی بازیافت۔ ینالاگ سطح کی بازیافت 14 ٹائم پوائنٹس کی بازیافت کرے گی ، جس میں ہر بنیادی K لائن کی مدت کے مطابق تخروپن پیدا کیا جائے گا۔**اور ریئل ڈسک کی سطح پر، حقیقی طور پر جمع کردہ ٹک، تقریبا چند سیکنڈ میں ایک بار، فی الحال جزوی طور پر حقیقی گہرائی کی حمایت کرتا ہے (جس میں 20 فائلیں شامل ہیں) ، حقیقی طور پر ایک سے ایک ٹرانزیکشن.**اعداد و شمار کی مقدار بہت زیادہ ہے ، اور پیچھے کی رفتار سست ہے ، لہذا خاص طور پر طویل عرصے تک پیچھے کی جانچ نہیں کی جاسکتی ہے۔ ایف ایم زیڈ کے پیچھے کی جانچ کا طریقہ کار حکمت عملی کو ایک K لائن پر متعدد بار تجارت کرنے کی اجازت دیتا ہے ، جس سے صرف کوریج کی قیمتوں میں سودے کی صورت حال سے بچا جاسکتا ہے ، زیادہ درست اور پیچھے کی رفتار کو مدنظر رکھتے ہوئے۔
ریٹرننگ کی حکمت عملی کا فریم ورک ریلڈ ڈسک کی طرح ہی ہے ، یہ ایک مردہ لوپ ہے۔ چونکہ ریٹرننگ مختلف ریٹرننگ پوائنٹس پر کودتا ہے ، اس وقت آپ نیند کا استعمال نہیں کرسکتے ہیں ، اور ایک لوپ کے اختتام پر خود بخود اگلے وقت پر کود جائیں گے۔ لیکن پیتھون کو پروگرامنگ کے طریقہ کار کی وجہ سے ایک پر مجبور کرنے کی ضرورت ہے۔Sleep(10)اس سے بچنے کے لئے
ریٹائٹ فوٹو
ریٹرننگ انجن صارف کے آرڈر کی قیمت اور ریٹرننگ ٹائم پوائنٹ کی کھپت کی قیمت کے مطابق جمع کرے گا ، اگر خریدنے کی قیمت فروخت سے زیادہ ہے تو ، فروخت کرنے کے لئے ایک لین دین کریں۔ اگر لین دین ممکن نہیں ہے تو ، ایک لنگوٹ پیدا ہوگا۔ لین دین کو یقینی بنانے کے لئے ایک سلائڈ پوائنٹ شامل کرنے کی ضرورت ہے۔ اگر ریٹرننگ کے وقت کوئی گودام نہ کھلنے یا نہ کھلنے کی صورت حال پیش آتی ہے تو ، چیک کریں کہ کیا غیر منقولہ احکامات کی وجہ سے پوزیشن منجمد ہے۔
پیج کی ترتیبات کا پتہ لگانا
-
- پیمائش کے صفحے کا انتخاب کریں، بائیں طرف حکمت عملی ترمیم صفحہ <unk>
-
- ریٹرننگ شروع اور ختم ہونے کا وقت۔ اعداد و شمار نامکمل ہونے کی وجہ سے ، ریٹرننگ براہ راست اس وقت سے شروع ہوسکتی ہے جب اعداد و شمار موجود ہوں۔
- 3۔ جائزہ
GetRecords()فنکشن کا ڈیفالٹ دورانیہ ، آپ کوڈ میں دورانیہ پیرامیٹرز کی وضاحت بھی کرسکتے ہیں۔ - 4۔ ریٹرننگ میکانزم کا انتخاب۔
- 5۔ دکھائیں یا چھپائیں اور کثیر ردعمل کی ترتیبات۔
- 6۔ زیادہ سے زیادہ لاگ کی تعداد ، آمدنی کے اعداد و شمار کی تعداد ، چارٹ کے اعداد و شمار کی تعداد وغیرہ ، تاکہ ڈیٹا کی زیادہ مقدار سے بچنے کے لئے جو براؤزر کو روکنے کا سبب بنے۔
- 6۔ بنیادی ٹِک کی پیداوار K لائن دورانیے کے مطابق ہوتی ہے۔
- 7۔ ٹرانزیکشن سلائڈ۔
- 7۔ رواداری، API کی درخواستوں کی غلطیوں کا مظاہرہ کرتا ہے، پالیسی رواداری کی جانچ پڑتال کرتا ہے۔
-
- کیا ٹریڈنگ آئیکن تیار کیا گیا ہے؟ اگر ٹی اے اشارے کا فنکشن استعمال کیا گیا ہے تو ، یہ خود بخود آئیکن پر ظاہر ہوگا ، اور خرید و فروخت بھی نشان زد ہوگی۔
-
- فیس کی ترتیب
- 10۔ ایکسچینج شامل کریں - جوڑے اور اثاثے۔
- 11۔ پیمائش کے پیرامیٹرز کی ترتیب ، اگر پیرامیٹرز ڈیجیٹل ہیں تو ایک کلید کی اصلاح کے پیرامیٹرز کی بھی حمایت کی جاتی ہے ، جو پیرامیٹرز کی پیمائش کو خود بخود ایک خاص حد کے مطابق طے کرتا ہے۔
ریٹائرمنٹ اور ریئل ڈسک کے درمیان فرق
- صرف GetTicker اور GetRecords ہی ریٹرننگ کے وقت کارآمد ہیں ، اور دیگر جیسے گہرائی اور ٹرانزیکشن کی تاریخ حقیقی نہیں ہے۔ (ڈیٹا کی مقدار بہت زیادہ ہونے کی وجہ سے ، ریڈ ڈسک ریٹرننگ فی الحال ان اعداد و شمار کی حمایت کرتی ہے ، لیکن صرف حالیہ اعداد و شمار) ۔
-
- ریٹریکٹ میں شامل تبادلے الگ الگ اکاؤنٹس ہیں اور فی الحال جوڑے کو تبدیل کرنے کی حمایت نہیں کرتے ہیں۔ لہذا ایک اکاؤنٹ میں دو جوڑے کو چلانے کے لئے یہ ممکن نہیں ہے۔
- 3۔ ریٹرننگ میں نیٹ ورک کی درخواستوں کا استعمال نہیں کیا جا سکتا۔
- 4۔ بازیافت آئی او توسیع کا استعمال نہیں کرسکتی ہے ، صرف بنیادی API کو ہی کام کرسکتی ہے۔
- 5۔ صرف معیاری اعداد و شمار کا پتہ لگانا ممکن ہے، انفو جیسی فلیش ڈسک سے متعلق اعداد و شمار موجود نہیں ہیں۔
- 6۔ ریٹرننگ کے دوران ٹرانسمیشن کی کمی ہوسکتی ہے ، آرڈر منجمد کرنے پر دھیان دیں۔
- 7۔ اشیاء کی فیوچر ریٹرننگ مارکیٹ کی قیمت کی حمایت نہیں کرتی۔
حکمت عملی کی غلطی اور عام غلطیاں
پہلے کہا گیا تھا کہ رئیل ڈسک میں API انٹرفیس کا استعمال کرتے ہوئے رسائی میں ناکامی اور واپسی کا امکان ہےnullاس کے علاوہ ، اگر آپ کے پاس کوئی ڈیٹا نہیں ہے تو ، آپ کو اس کے بارے میں مزید معلومات حاصل کرنے کی ضرورت نہیں ہے۔
عام طور پر استعمال ہونے والی غلطیوں کو برداشت کرنا
عام غلط فہمیاں:
- API تک رسائی نیٹ ورک کی خرابی ، انٹرفیس تک رسائی کا وقت ختم ہو جائے گا ، اس وقت استعمال ہونے پر غلطی ہوگی۔
- ایکسچینج کی پابندی کی غلطیاں ، جیسے آئی پی کی پابندی ، آرڈر کی درستگی ، رسائی کی فریکوئنسی ، پیرامیٹرز کی غلطیاں ، اثاثوں کی کمی ، مارکیٹ میں تجارت نہیں ہوسکتی ہے ، آرڈرز کو منسوخ کرنا وغیرہ۔ آپ API دستاویزات کو غلطی کے کوڈ کے مطابق تلاش کرسکتے ہیں۔
- تبادلے کے اعداد و شمار کی واپسی کی غلطی ، کبھی کبھار ہوتی ہے ، جیسے خالی گہرائی ، تاخیر سے اکاؤنٹ کی معلومات ، تاخیر سے آرڈر کی حیثیت وغیرہ۔
- پروگرام کی منطق کی خرابی
API کا استعمال کرتے ہوئے اعداد و شمار کو واپس کرنے سے پہلے ، اس کا فیصلہ کرنا ضروری ہے کہ آیا یہ نول ہے یا نہیں۔ ذیل میں مرکزی طور پر استعمال ہونے والے طریقوں کا تعارف ہے:
//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
Log('ticker 获取出错');
ticker = exchange.GetTicker();
}
Log(ticker.Last);
// 2.判断不为null再进行引用
var ticker = exchange.GetTicker();
if(!ticker){
Log(ticker.Last);
}
// 3._C()函数重试
var ticker = _C(exchange.GetTicker);
Log(ticker.Last);
// 4. try catch容错
try{
var ticker = exchange.GetTicker();
Log(ticker.Last);
}
catch(err){
Log('ticker 获取出错');
}
اگر آپ غلط معلومات حاصل کرنا چاہتے ہیں، تو آپ اس کا استعمال کر سکتے ہیں:GetLastError(), پچھلی غلطی کی معلومات کا تار واپس کرے گا ، جس کی وجہ سے غلطیوں کو فرق سے نمٹایا جاسکتا ہے۔
FAQ
فورم کے عنوانات میں بہت سی عام غلطیاں ہیں: https://www.fmz.com/bbs-topic/1427 。 یہاں کچھ کا خلاصہ دیا گیا ہے، اگر آپ کو کوئی مسئلہ درپیش ہو تو Ctrl+F کے ذریعے تلاش کریں۔
ٹرسٹی کو کیسے تعینات کیا جائے؟
مزید تفصیلات کے لیے Add a Trustee ملاحظہ کریں۔
کیا ہم کسی اور کو لکھنے کے لیے حکمت عملی تلاش کر سکتے ہیں؟
https://www.fmz.com/markets پر کچھ لوگ ہیں جو آپ کے لئے خدمات فراہم کرتے ہیں یا آپ کو گروپوں میں مشورہ دیتے ہیں، آپ کو اپنے خطرے پر اپنے آپ سے رابطہ کرنا ہوگا.
تمام انٹرفیس پر ٹائم آؤٹ کی اطلاع
اس کا مطلب یہ ہے کہ اگر کبھی کبھار ایکسچینج انٹرفیس پر ٹائم آؤٹ ہوجاتا ہے تو یہ کوئی مسئلہ نہیں ہے ، اگر یہ اشارہ کیا جاتا ہے کہ نیٹ ورک تک رسائی نہیں ہے تو ، بیرون ملک سرور استعمال کرنے کی ضرورت ہے۔
ERR_INVALID_POSITION غلطی
ریٹرننگ سسٹم کی غلطی ، جو عام طور پر حکمت عملی کے لئے تحریری غلطی کا سبب بنتی ہے ، جب کوئی ہولڈنگ یا ہولڈنگ کی کم تعداد نہ ہو تو ، پوزیشن کو صاف کرنے کی کوشش کی جائے۔
symbol not set
فیوچر ایکسچینج ریٹرننگ ، کوڈ میں کوئی معاہدہ نہیں ہے ، ملاحظہ کریں exchange.SetContractType فنکشن
BITMEX 429 خرابی،{"error":{"message":"Rate limit exceeded retry in 1 seconds ......"}}
ایکسچینج انٹرفیس تک رسائی کی اعلی تعدد۔
{"status":6004,"msg":"timestamp is out of range"}
سرور ٹائم ٹیبل سے باہر کی حد کو اپ ڈیٹ کرنے کے لئے سرور ٹائم ٹیبل کی ضرورت ہوتی ہے ، اور اس سے زیادہ انحراف نہیں کیا جاسکتا ہے
GetOrder(455284455): Error: invalid order id or order cancelled.
کچھ تبادلے کے احکامات کو منسوخ کر دیا گیا ہے، تبادلے کو اس آرڈر کی معلومات کو برقرار رکھنے کے لئے نہیں ہے، اور اسے حاصل نہیں کیا جا سکتا.
GetOrders: 400: {"code":-1121,"msg":"Invalid symbol."}
غلط جوڑے کی جانچ پڑتال کریں کہ آیا جوڑے کی ترتیب غلط ہے۔
Secret key decrypt failed
API KEY حل کرنے میں ناکامی ، اگر آپ نے APIKEY کی تشکیل کے بعد FMZ پاس ورڈ میں ترمیم کی ہے تو ، FMZ میں ایکسچینج کا صفحہ شامل کرنے کی کوشش کریں ، اور ایکسچینج APIKEY کو دوبارہ تشکیل دیں۔
Signature not valid: Invalid submission time or incorrect time format [غلط وقت یا وقت کی شکل]
لینکس سرورز کا استعمال کرنے کی سفارش کی جاتی ہے یا ونڈوز سسٹم پر انسٹال کرنے کے لئے سافٹ ویئر کا وقت مطابقت پذیر ہے جہاں مسئلہ پیدا ہوتا ہے۔
اگر آپ کے پاس ایک عالمی ایجنٹ ہے تو ، آپ کو یہ معلوم کرنے کی ضرورت نہیں ہے کہ آپ کے پاس ایک عالمی ایجنٹ ہے یا نہیں ، لیکن آپ کو یہ معلوم کرنے کی ضرورت ہے کہ آپ کے پاس ایک عالمی ایجنٹ ہے۔
گلوبل ایجنٹ کے پاس ایجنٹ میزبان نیٹ ورک پورٹ نہیں ہے ، تاخیر کے مسئلے کی وجہ سے ، بیرون ملک سرورز کی تعیناتی کرنے والے میزبان بہتر ہیں
اس حکمت عملی کو اپ لوڈ کیے جانے کے بجائے مقامی طور پر کیسے محفوظ کیا جائے؟
پیتھون کا استعمال کرتے ہوئے مقامی فائلوں کو درآمد کیا جاسکتا ہے ، ایف ایم زیڈ کے API کے مطابق لکھے گئے معمول کی پالیسیوں کو فائلوں میں محفوظ کیا جاسکتا ہے ، جو اپنے سرور پر عملدرآمد کے راستے کے تحت ہیں ، اور براہ راست عملدرآمد کو پڑھ سکتے ہیں۔
#!python2.7
def run(runfile):
with open(runfile,"r") as f:
exec(f.read())
def main():
run('my.py')
ایپلی کیشن بیس ایڈریس کو تبدیل کرنے یا ایپلی کیشن ٹیسٹ نیٹ ورک کو استعمال کرنے کا طریقہ
exchange.SetBase () کا استعمال کرتے ہوئے براہ راست متعلقہ API بیس ایڈریس پر سوئچ کریں۔ جیسے:
exchange.SetBase("https://www.okex.me")
我是看1分钟k线图操作的,所以Python死循环的sleep time 可以设置为0.1s,也就是sleep(100)吗,我看你其中写过一个sleep(10),也就是0.1s不会超过huobi HM的API限制吗?
exchange.SetDirection("closebuy"); //如果是永续合约,直接设置exchange.SetDirection("sell")
这儿我试了OKex的永续合约,如果设置成 sell,直接开空了,平不是平多
是我错了。。。
exchange.Buy(-1, 0.5),交易对是ETH_BTC,市价单代表买入0.5BTC的ETH
exchange.Buy(price, 0.5),如果是这种限价单,则代表用price的价格买入 0.5ETH
- 1







