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

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

آپ براہ راست ڈیٹا بیس میں لکھنے کے لئے پائیٹون استعمال کر سکتے ہیں.

function onexit(){
    _G('profit', profit)
}
function main(){
    _G("num", 1); // Set a global variable num, with a value of 1 second 
    _G("num", "ok"); // Change a global variable num, whose value is the string "ok"
    _G("num", null); // Delete the global variable num 
    _G("num"); // Return the value of the global variable num; if it does not exist, return null

    var profit = 0
    if(_G('profit')){
        profit = _G('profit')
    }
}

_N

ایک آرڈر کی جگہ جب، قیمت اور حجم کی درستگی عام طور پر کنٹرول کرنے کی ضرورت ہے؛ FMZ محفوظ کرنے کے لئے اعشاریہ مقامات کا تعین کرنے کے لئے _N تقریب میں تعمیر کیا ہے؛ مثال کے طور پر، کے نتیجے میں_N(4.253,2)4.25.

_C

پلیٹ فارم API کو کال کرنے سے اس بات کی ضمانت نہیں دی جاسکتی ہے کہ ہر بار رسائی کامیابی سے ہوگی ، اور _C ایک خودکار دوبارہ کوشش کا فنکشن ہے۔ یہ ہمیشہ مخصوص افعال کو کال کرے گا جب تک کہ یہ کامیابی کے ساتھ واپس نہ آئے (اگر فنکشن null یا false لوٹاتا ہے تو دوبارہ کوشش کرے گا) ؛ مثال کے طور پر ،_C(exchange.GetTicker)، 3 سیکنڈ کے ڈیفالٹ دوبارہ کوشش کے وقفے کے ساتھ، اور آپ _CDelay فنکشن کو دوبارہ کوشش کے وقفے کو کنٹرول کرنے کے لئے کال کر سکتے ہیں، جیسے _CDelay ((1000) ، جس کا مطلب ہے کہ _C فنکشن دوبارہ کوشش کے وقفے کو 1 سیکنڈ میں تبدیل کرنا ہے.GetTicker(), exchange.GetDepth, GetTrade, GetRecords, GetAccount, GetOrdersاورGetOrderرسائی کی ناکامی کی وجہ سے پروگرام کے وقفے کو روکنے کے لئے.

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

function main(){
    var ticker = _C(exchange.GetTicker)
    var depth = _C(exchange.GetDepth)
    var records = _C(exchange.GetRecords, PERIOD_D1) // Pass in the parameters
}

_D

بلا رہا ہے_D()براہ راست موجودہ ٹائم سٹرنگ واپس کرے گا، جیسے:2019-08-15 03:46:14اگر اسے بیک ٹیسٹ کے دوران بلایا جاتا ہے تو ، بیک ٹیسٹ کا وقت لوٹایا جائے گا۔ آپ وقت کا فیصلہ کرنے کے لئے _D فنکشن کا استعمال کرسکتے ہیں ، جیسے:_D().slice(11) > '09:00:00':. _D(timestamp, fmt)، ایک ٹائم اسٹیمپ میں ms ٹائم اسٹیمپ تبدیل کرے گا، جیسے_D(1565855310002). fmt پیرامیٹر وقت کی شکل ہے، اور ڈیفالٹ ہےyyyy-MM-dd hh:mm:ss.

ٹی اے اشارے کے افعال

کچھ عام طور پر استعمال ہونے والے اشارے کے افعال کے لئے ، جیسے MA\MACD\KDJ\BOLL اور دیگر عام اشارے ، جو براہ راست FMZ پلیٹ فارم کے ذریعہ بنائے گئے ہیں ، اور مخصوص معاون اشارے API دستاویز میں پائے جاسکتے ہیں۔

اشارے کے افعال کو استعمال کرنے سے پہلے ، K لائن کی لمبائی کا فیصلہ کرنا بہتر ہے۔ جب پچھلی K لائن کی لمبائی حساب کتاب کے لئے مطلوبہ مدت کو پورا نہیں کرسکتی ہے تو ، نتیجہ یہ ہےnullمثال کے طور پر، اگر ان پٹ K لائن کی لمبائی 100 ہے اور MA کا حساب کرنے کے لئے مدت 10 ہے، تو پہلے 9 اقدار تمام صفر ہیں، اور فارمیٹر 9 اقدار کے بعد حساب عام طور پر کیا جائے گا.

جاوا اسکرپٹ تیسری پارٹی کی لائبریری کے طور پر مکمل طالب کو بھی سپورٹ کرتا ہے ، جس میں کال کرنے کا طریقہ جیسےtalib.CCI(records)براہ مہربانی ملاحظہ کریںhttp://ta-lib.org/function.html. پیتھون کے لئے ، آپ طالب لائبریری کو خود انسٹال کرسکتے ہیں۔ مرتب کرنے کی ضرورت کی وجہ سے ، آپ انسٹال کرنے کے لئے صرف پائپ کا استعمال نہیں کرسکتے ہیں۔ آپ خود انسٹالیشن کا طریقہ تلاش کرسکتے ہیں۔

اشارے افعال نہ صرف 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()اعداد کو تاروں میں منتقل کرتا ہے، جس میں نمبر متغیر نمبر ہوتا ہے۔
  • JSON.parse()فارمیٹس Json ڈور، جیسےJSON.parse(exchange.GetRawJSON());
  • جاوا اسکرپٹ کے اپنے ریاضی کے افعال ہیں ، جیسے عام ریاضی کے آپریشن ، بشمولMath.max(), Math.abs()وغیرہ؛ حوالہ:https://www.w3school.com.cn/jsref/jsref_obj_math.asp ;
  • ایف ایم زیڈ کی طرف سے استعمال کردہ تیسری پارٹی ریاضی لائبریری؛ حوالہ:https://mathjs.org/ ;
  • ایف ایم زیڈ کی طرف سے استعمال کردہ جاوا اسکرپٹ کی تیسری پارٹی کی روشنی لائبریری، جس کے بارے میں علم رکھنے کی سفارش کی جاتی ہے اور جو tedious Js آپریشنز کو زیادہ آسان بناتا ہے؛ حوالہ:https://underscorejs.org/.

نمونہ

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

جاوا اسکرپٹ کریپٹوکرنسی ٹریڈنگ لائبریری اور کموڈٹی فیوچر ٹریڈنگ لائبریری پہلے سے طے شدہ طور پر شامل ہیں اور ان کی کاپی کرنے کی ضرورت نہیں ہے۔ دیگر ٹیمپلیٹ لائبریریاں حکمت عملی اسکوائر (https://www.fmz.com/square/20/1کاپی کریں اور ٹیمپلیٹ لائبریری محفوظ کریں، اور آپ کی اپنی حکمت عملی بنانے کے لئے استعمال کیا جائے گا لائبریری چیک کریں.

جاوا اسکرپٹ ٹیمپلیٹ افعال سب کے ساتھ شروع$، جبکہ پائتھون ان سب کے ساتھ شروعext.

کریپٹوکرنسی ٹریڈنگ لائبریری

ماخذ کوڈ کا پتہ:https://www.fmz.com/strategy/10989، جو پہلے ہی بلٹ ان ہے ، لہذا کاپی کرنے کی ضرورت نہیں ہے۔ مخصوص فنکشن کا نفاذ براہ راست سورس کوڈ کا حوالہ دے سکتا ہے۔

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

$.GetAccount(e)

Log($.GetAccount()); // Obtain the account information, with fault tolerance function 
Log($.GetAcccount(exchanges[1]));

آرڈر کی جگہ اور منسوخی:

$.Buy/Sell(e, amount)
$.Buy(0.3); // The main platform buys 0.3 coin
$.Sell(0.2); // The main platform sells 0.2 coin
$.Sell(exchanges[1], 0.1); // The secondary platform sells 0.1 coin
$.CancelPendingOrders(e, orderType)

$.CancelPendingOrders(); // Cancel all entrusted orders of the main platform 
$.CancelPendingOrders(ORDER_TYPE_BUY); // Cancel all buy orders of the main platform
$.CancelPendingOrders(exchanges[1]); // Cancel all orders of the secondary platform
$.CancelPendingOrders(exchanges[1], ORDER_TYPE_SELL); // Cancel all sell orders of the secondary platforom 

صلیب کا فیصلہ:

$.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])
If n = 0, it means that the current prices of exactly 15-period EMA and 30-period EMA are equal. 
If n > 0, such as 5, it means that the 15-period EMA up-crosses the 30-period EMA by 5 periods (Bar)
If n < 0, such as -12, it means that the 15-period EMA down-crosses the 30-period EMA by 12 periods (Bar)
If it is not an array passed to the Cross, the function automatically obtains the K-line for moving average calculation.
If an array is passed to Cross, compare directly.

$.withdraw ((e، کرنسی، پتہ، رقم، فیس، پاس ورڈ) فنکشن:

$.withdraw(exchange, "btc", "0x.........", 1.0, 0.0001, "***")

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

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

سی ٹی اے لائبریری

  • روبوٹ خود بخود انڈیکس کو مرکزی مسلسل معاہدے میں نقشہ کرے گا؛
  • یہ خود کار طریقے سے منتقل سنبھال لیں گے؛
  • آپ backtest کے لئے میپنگ کی وضاحت کر سکتے ہیں، جیسے rb000/rb888، جو مرکزی مسلسل معاہدے کی تجارت کے لئے rb انڈیکس کی k لائن کو میپ کرنا ہے؛
  • یہ دوسرے معاہدوں کے ساتھ بھی منسلک کیا جا سکتا ہے۔ مثال کے طور پر، rb000/MA888 کو MA اہم مسلسل معاہدے کی تجارت کے لئے rb انڈیکس کی K لائن کو دیکھنا ہے۔
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("Golden cross period", cross, "the moment position", mp);
            return 1
        } else if (mp >= 0 && cross < -2) {
            Log("Death cross period", cross, "the moment position", 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"));
    // Multiple varieties use the trading queue to complete the non-blocking trading task
    var q = $.NewTaskQueue();
    q.pushTask(exchange, "MA701", "buy", 3, function(task, ret) {
        Log(task.desc, ret)
    })
    while (true) {
        // Call "poll" to execute the unfinished tasks in the spare time
        q.poll()
        Sleep(1000)
    }
}

ڈرائنگ لائبریری

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

img

جاوا اسکرپٹ ورژن ڈرائنگ لائبریری کا کاپی پتہ: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) // You can draw two lines at the samw time, "Last" is the name of the line
            $.PlotLine('Buy', ticker.Buy)
        }
        Sleep(6000)
    }
}

حکمت عملی پیرامیٹر کی ترتیبات

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

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

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

ترتیبات کے لئے زیادہ پیرامیٹرز ہیں؛ حوالہ:https://www.fmz.com/api.

حکمت عملی کا بیک ٹیسٹ

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

بیکٹیسٹ میکانزم

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

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

بیک ٹیسٹ اور بوٹ کا فریم ورک ایک ہی ہے ، دونوں لامحدود لوپ ہیں۔ چونکہ بیک ٹیسٹ مختلف بیک ٹیسٹ پوائنٹس پر کودنا ہے ، لہذا بیک ٹیسٹ سلیپ کے استعمال کے بغیر چلا جاسکتا ہے ، اور جب ایک لوپ ختم ہوجاتا ہے تو یہ خود بخود اگلے وقت کے نقطہ پر کود جائے گا۔ تاہم ، پروگرام میکانزم کی وجہ سے ، پطرون کو ایک پابندی کی ضرورت ہوتی ہےSleep(10)، پھنسنے سے بچنے کے لئے.

بیک ٹیسٹ میچنگ

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

بیک ٹسٹ پیج کی ترتیبات

img

  • Backtest کا صفحہ منتخب کرنا، جس کے بائیں جانب Edit Strategy صفحہ ہے۔
  • 2.بیک ٹسٹ کا آغاز اور اختتام کا وقت۔ اعداد و شمار نامکمل ہوسکتے ہیں ، بیک ٹسٹ براہ راست اس وقت سے شروع ہوسکتا ہے جب اعداد و شمار موجود ہوں؛
  • 3.بیک ٹیسٹنگ کی ڈیفالٹ مدتGetRecords()فنکشن؛ آپ کوڈ میں ایک مدت پیرامیٹر کی وضاحت کر سکتے ہیں؛
  • 4.بیک ٹیسٹ کے طریقہ کار کا انتخاب؛
  • 5.زیادہ بیک ٹسٹ کی ترتیبات دکھانا یا چھپانا۔
  • 6.بڑی مقدار میں ڈیٹا کی وجہ سے براؤزر کو خرابی سے بچانے کے لئے لاگ ان پوائنٹس ، منافع لاگ ان پوائنٹس اور چارٹ لاگ ان پوائنٹس کی زیادہ سے زیادہ تعداد۔
  • 7.K لائن کے مطابق نیچے کی پرت کی ٹک کی طرف سے پیدا ہونے والی مدت؛
  • 8.ٹریننگ سلپ پوائنٹ؛
  • 9.fault tolerance، جو اس صورت حال کا نمونہ پیش کرے گا جب API کی درخواست غلط ہے، اور حکمت عملی کی غلطی برداشت کی صلاحیت کا تجربہ کرے گا؛
  • 10.کیا مارکیٹ چارٹ کھینچنا ہے۔ اگر بیک ٹسٹ میں ٹی اے اشارے کا فنکشن استعمال کیا جاتا ہے تو ، فنکشن خود بخود چارٹ میں دکھایا جائے گا ، اور خرید و فروخت کو بھی نشان زد کیا جائے گا۔
  • 11.سروس فیس کا تعین؛
  • 12.ایڈیٹنگ پلیٹ فارم - ٹریڈنگ جوڑی اور اثاثے؛
  • 13.backtest پیرامیٹر کی ترتیبات؛ اگر پیرامیٹرز نمبر ہیں اور ایک کلید کی اصلاح کی حمایت کرتے ہیں تو ، پیرامیٹرز کو بیک ٹیسٹ میں ایک خاص حد میں خود بخود پار کیا جائے گا۔

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

  • 1.بیک ٹیسٹ میں صرف درست مارکیٹ کی قیمتیں صرف گیٹ ٹکر اور گیٹ ریکارڈز سے ہیں۔ دیگر جیسے گیٹ ڈیپتھ اور گیٹ ٹریڈز حقیقی نہیں ہیں (ڈیٹا کا حجم بہت زیادہ ہے ، اور اگرچہ حقیقی مارکیٹ کی سطح کا بیک ٹیسٹ اب پہلے سے ہی ڈیٹا کی حمایت کرتا ہے ، لیکن یہ صرف تازہ ترین ڈیٹا کی حمایت کرتا ہے) ۔
  • 2.بیک ٹیسٹ میں شامل پلیٹ فارم تمام الگ الگ اکاؤنٹس ہیں۔ ٹریڈنگ کے جوڑوں کو تبدیل کرنے کی حمایت نہیں کی جاتی ہے۔ لہذا آپ ایک اکاؤنٹ میں دو ٹریڈنگ کے جوڑے کا کام نہیں کرسکتے ہیں۔
  • 3.netwrok درخواست backtest میں استعمال نہیں کیا جا سکتا؛
  • 4.IOتوسیع backtest میں استعمال نہیں کیا جا سکتا، اور صرف بنیادی APIs کام کر سکتے ہیں؛
  • 5.بیک ٹیسٹ میں صرف معیاری ڈیٹا حاصل کیا جاسکتا ہے ، اور ڈیٹا ، جیسے انفو جو بوٹ سے متعلق ہے ، موجود نہیں ہے۔
  • 6.باک ٹسٹ میں تاخیر ممکن نہیں ہے، اور منجمد احکامات کی صورت حال پر توجہ دینا؛
  • 7.inاجناس کے فیوچر کے بیک ٹسٹ، مارکیٹ آرڈر کی حمایت نہیں کی جاتی ہے۔

حکمت عملی غلطی برداشت اور عام غلطیاں

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

غلطی برداشت کرنے کے عام طریقے

عام وجوہات

  • API رسائی نیٹ ورک کی خرابی؛ انٹرفیس تک رسائی کا ٹائم آؤٹ nunll لوٹاتا ہے، اور ایک غلطی کی اطلاع دی جائے گی.

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

  • پلیٹ فارم ڈیٹا کی واپسی کی غلطی۔ یہ کبھی کبھی ہوتا ہے ، جیسے صفر کی گہرائی ، تاخیر سے اکاؤنٹ کی معلومات اور تاخیر سے آرڈر کی حیثیت وغیرہ کی واپسی۔

  • پروگرام منطق غلطی.

API کے واپس کیے گئے ڈیٹا کو استعمال کرنے سے پہلے ، آپ کو یہ فیصلہ کرنا چاہئے کہ آیا اعداد و شمار نل ہیں ، اور عام طریقے درج ذیل ہیں:

//1.judge the data is null and handle 
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker obtain error');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2. judge the data is not null, and use 
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3.retry _C() function 
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4.try cache fault tolerance
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker obtain error');
 } 

اگر آپ غلطیوں کی معلومات حاصل کرنا چاہتے ہیں تو، آپ استعمال کر سکتے ہیںGetLastError()، اور آخری بار کی غلطی کی معلومات کی تاریں واپس آ جائیں گی، اور غلطیوں کو اختلافات کی طرف سے عملدرآمد کیا جا سکتا ہے.

عمومی سوالات

فورم کے اوپری مراسلوں میں عام غلطی کا خلاصہ:https://www.fmz.com/bbs-topic/9158یہاں ہم اسے مختصر طور پر متعارف کراتے ہیں؛ آپ کو مسائل ہیں جب، تلاش کرنے کے لئے CTRL + F استعمال کر سکتے ہیں.

ڈوکر کو کیسے تعینات کیا جائے؟

اس کے بارے میں ایک تفصیلی تعارف ہے ایک ڈوکر شامل کرنے کے سیکشن میں.

کیا میں کسی سے کہہ سکتا ہوں کہ وہ میرے لیے حکمت عملی لکھے؟

پرhttps://www.fmz.com/markets، کچھ لوگ ایسے ہیں جو دوسروں کے لئے حکمت عملی لکھنے کی خدمات فراہم کرتے ہیں، یا آپ چیٹ گروپس میں پوچھ سکتے ہیں۔ نوٹ کریں کہ ان قسم کی خدمات سے آپ خود رابطہ کریں گے، اور آپ کو یہ بھی معلوم ہونا چاہئے کہ خطرہ آپ خود برداشت کریں گے۔

تمام انٹرفیس تک رسائی حاصل کرنے پر ٹائم آؤٹ کا اشارہ

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

ERR_INVALID_POSITION

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

علامت مقرر نہیں

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

BITMEX 429error,{error:{message:Rate limit exceeded دوبارہ کوشش کریں 1 سیکنڈ میں......}}

پلیٹ فارم انٹرفیس کی رسائی کی تعدد بہت زیادہ ہے.

{status:6004،msg:ٹائم اسٹیمپ رینج سے باہر ہے}

سرور کا ٹائم اسٹیمپ سرور کو اپ ڈیٹ کرنے کے وقت کی حد سے تجاوز کرتا ہے ، اور تجاوز شدہ وقت بہت لمبا نہیں ہوسکتا ہے۔

GetOrder ((455284455): غلطی: غلط آرڈر ID یا آرڈر منسوخ.

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

حاصل احکامات: 400: {کوڈ:-1121،msg:غلط علامت.}

ناقابل عمل ٹریڈنگ جوڑی؛ چیک کریں کہ آیا ٹریڈنگ جوڑی کی ترتیب غلط ہے۔

خفیہ چابی کو ڈیکرپٹ کرنے میں ناکامی

APIKEY تجزیہ ناکام ہوگیا۔ اگر APIKEY کی تشکیل کے بعد FMZ پاس ورڈ میں ترمیم کی گئی ہے تو ، FMZ پر ایک پلیٹ فارم پیج شامل کرنے کی کوشش کریں اور پلیٹ فارم APIKEY کو دوبارہ ترتیب دیں۔

دستخط درست نہیں: جمع کرانے کا غلط وقت یا غلط وقت کی شکل

تجویز ہے کہ آپ لینکس سرور استعمال کریں، یا ان ونڈوز سسٹم پر وقت کی ہم وقت سازی کا سافٹ ویئر انسٹال کریں جہاں یہ مسئلہ پیش آتا ہے۔

کیوں ڈاکر اب بھی ایک عالمی پراکسی مقرر کیا جاتا ہے جب پلیٹ فارم API تک رسائی حاصل نہیں کر سکتے ہیں؟

عالمی پراکسی میں پراکسی ڈوکر نیٹ ورک پورٹ نہیں ہے۔ تاخیر کے مسئلے کی وجہ سے ، بیرون ملک سرور کے ڈوکر کو تعینات کرنا بہتر ہے۔

مقامی طور پر ایک حکمت عملی کو محفوظ کرنے کے لئے کس طرح، FMZ پر اسے اپ لوڈ کرنے کے لئے نہیں؟

پائیتھون کا استعمال کرتے ہوئے، اور آپ مقامی فائلوں کو درآمد کر سکتے ہیں، ایک فائل کے طور پر عام طور پر FMZ API کی طرف سے لکھا حکمت عملی کو محفوظ کریں اور اپنے سرور پر عملدرآمد کے راستے میں ڈال دیا، اور آپ کو براہ راست پڑھ اور اسے عملدرآمد کر سکتے ہیں.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

کس طرح ایک پلیٹ فارم کی ٹیسٹ نیٹ یا کس طرح API بیس ایڈریس کو تبدیل کرنے کے لئے؟

براہ راست متعلقہ API بیس ایڈریس پر سوئچ کرنے کے لئے exchange.SetBase( کا استعمال کریں۔ مثال کے طور پر:

exchange.SetBase("https://www.okex.me")

مزید