حکمت عملی کا پتہ:https://www.fmz.com/strategy/345
اس مضمون میں ، آئیے ایک سادہ جاوا اسکرپٹ حکمت عملی کی پورٹنگ کی مشق کریں۔ حکمت عملی کی پورٹنگ کے ذریعے ، ہم ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم انٹرفیس کی کال سے زیادہ واقف ہوسکتے ہیں ، اور پلیٹ فارم کی ترقی کی حکمت عملی میں مختلف زبانوں کے مابین معمولی اختلافات کو سمجھ سکتے ہیں۔ در حقیقت ، جاوا اسکرپٹ ورژن اور پائیتھون ورژن کے مابین فرق بہت کم ہے ، کیونکہ انٹرفیس کال بنیادی طور پر ایک جیسے ہیں۔
جاوا اسکرپٹ ورژن سے نقل کردہ تفصیل:
اس کے لئے پوزیشن کھولنے کی ضرورت ہے۔ مثال کے طور پر اگر اکاؤنٹ میں 5000 یوآن اور ایک کرنسی ہے ، اگر کرنسی کی قیمت اکاؤنٹ بیلنس 5000 یوآن سے زیادہ ہے اور قیمت کا فرق حد سے زیادہ ہے ، مثال کے طور پر ، اگر کرنسی کی قیمت اب 6000 یوآن ہے تو ، پھر (6000-5000) / 6000/2 کرنسیاں فروخت کریں ، جس سے یہ ظاہر ہوتا ہے کہ کرنسی کی قدر بڑھ گئی ہے اور ہم رقم کو واپس تبدیل کرسکتے ہیں۔ اگر کرنسی کی قدر کم ہوگئی ہے ، مثال کے طور پر ، 4000 یوآن ، تو ہم (5000-4000) / 4000/2 کرنسیاں خریدتے ہیں۔ اگر کرنسی کم ہوتی ہے تو ، کچھ خریدیں۔ اگر یہ دوبارہ بڑھتی ہے تو ، دوبارہ فروخت کریں ، بیلنس کی طرح ، دونوں اطراف میں مختلف ہیج ہیں ، لہذا میں اسے توازن کی حکمت عملی کہتا ہوں۔
حکمت عملی کا اصول بہت آسان ہے۔ جاوا اسکرپٹ ورژن کا کوڈ لمبا نہیں ہے ، صرف 70 لائنوں سے زیادہ ہے۔ زیادہ جامع گرائمر کے ساتھ پائیتھون زبان کی حکمت عملی کو پیوند کیا گیا ہے ، اور کوڈ بہت مختصر ہے ، جو ابتدائی افراد کے سیکھنے کے لئے بہت موزوں ہے۔ ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر ڈویلپرز کے ذریعہ بہت سارے کوڈ شیئر کیے گئے ہیں ، اور زبان کی حمایت کرتی ہے۔JavaScript
/C++
/Python
، وغیرہ۔ لہذا ، مزید ترقیاتی زبانوں پر عبور حاصل کرنا نہ صرف سیکھنے ، تحقیق اور ترقیاتی حکمت عملیوں کے لئے مددگار ہے ، بلکہ پلیٹ فارم کے مختلف API انٹرفیس سے بھی واقف ہے۔
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
InitAccount = None
def CancelPendingOrders():
ret = False
while True:
orders = _C(exchange.GetOrders)
if len(orders) == 0 :
return ret
for j in range(len(orders)):
exchange.CancelOrder(orders[j].Id)
ret = True
if j < len(orders) - 1:
Sleep(Interval)
return ret
def onTick():
acc = _C(exchange.GetAccount)
ticker = _C(exchange.GetTicker)
spread = ticker.Sell - ticker.Buy
diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
ratio = diffAsset / acc.Balance
LogStatus("ratio:", ratio, _D())
if abs(ratio) < threshold:
return False
if ratio > 0 :
buyPrice = _N(ticker.Sell + spread, ZPrecision)
buyAmount = _N(diffAsset / buyPrice, XPrecision)
if buyAmount < MinStock:
return False
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
else :
sellPrice = _N(ticker.Buy - spread, ZPrecision)
sellAmount = _N(-diffAsset / sellPrice, XPrecision)
if sellAmount < MinStock:
return False
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
return True
def main():
global InitAccount, LoopInterval
InitAccount = _C(exchange.GetAccount)
LoopInterval = max(LoopInterval, 1)
while True:
if onTick():
Sleep(1000)
CancelPendingOrders()
Log(_C(exchange.GetAccount))
Sleep(LoopInterval * 1000)
کوڈ کے ساتھ شروع ہوتا ہے
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
یہ بیک ٹیسٹنگ کی ترتیب سے مراد ہے ، جس کا مطلب ہے کہ بیک ٹیسٹنگ کی ترتیب (ترتیبات) کوڈ کی شکل میں محفوظ کی جاتی ہے اور بیک ٹیسٹنگ کے دوران ترتیب کے مطابق خود بخود تشکیل دی جاتی ہے۔ اس حصے کو حذف کیا جاسکتا ہے۔ اگر اسے حذف کردیا جاتا ہے تو ، ہمیں بیک ٹیسٹنگ پیج پر بیک ٹیسٹنگ کی ترتیب کی معلومات کو دستی طور پر ترتیب دینے کی ضرورت ہے۔ حوالہ:https://www.fmz.com/bbs-topic/859
اس حکمت عملی کے پیرامیٹرز جاوا اسکرپٹ ورژن کے ساتھ مکمل طور پر ہم آہنگ ہیں۔ حکمت عملی کا کوڈ بھی جملہ بہ جملہ منتقل کیا جاتا ہے۔ پروگرام کی ساخت میں کوئی تبدیلی نہیں آئی ہے۔ آپ مختلف زبانوں میں لکھی گئی حکمت عملیوں کا جملہ بہ جملہ موازنہ کرسکتے ہیں۔
پیرامیٹر کی ترتیب
شماریات
حکمت عملی کا پتہ:https://www.fmz.com/strategy/183374
یہ حکمت عملی صرف حوالہ، سیکھنے اور بیک ٹیسٹنگ کے لیے ہے۔ اگر آپ دلچسپی رکھتے ہیں تو آپ اسے بہتر اور اپ گریڈ کر سکتے ہیں۔