
حکمت عملی کا پتہ: https://www.fmz.com/strategy/345
اس مضمون میں، آئیے ایک سادہ JavaScript حکمت عملی کو پورٹ کرنے کی مشق کریں۔ حکمت عملیوں کو ٹرانسپلانٹ کرنے سے، آپ انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم انٹرفیس کی کالوں سے زیادہ واقف ہو جائیں گے اور پلیٹ فارم پر حکمت عملی تیار کرتے وقت مختلف زبانوں کے درمیان معمولی فرق کو سمجھیں گے، درحقیقت JavaScript ورژن کی حکمت عملی اور Python ورژن کے درمیان فرق حکمت عملی بہت چھوٹی ہے کیونکہ انٹرفیس کالز بنیادی طور پر ایک جیسی ہیں۔
ہدایات کے جاوا اسکرپٹ ورژن سے حوالہ دیتے ہوئے:
اس کے لیے پوزیشن کھولنے کی ضرورت ہے، مثال کے طور پر، اگر اکاؤنٹ میں 5,000 یوآن اور 1 سکہ ہے، اگر سکے کی قیمت اکاؤنٹ بیلنس 5,000 سے زیادہ ہے اور قیمت کا فرق حد سے زیادہ ہے، مثال کے طور پر، سکے کی قیمت اب 6000 ہے۔ یوآن، پھر (6,000-5,000)/6,000/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
حکمت عملی صرف حوالہ، بیک ٹیسٹنگ اور جانچ کے لیے ہے، اگر آپ دلچسپی رکھتے ہیں، تو آپ اسے بہتر اور اپ گریڈ کر سکتے ہیں۔