কৌশল ঠিকানাঃhttps://www.fmz.com/strategy/345
এই নিবন্ধে, আসুন একটি সহজ জাভাস্ক্রিপ্ট কৌশল পোর্টিং অনুশীলন করি। কৌশল পোর্টিংয়ের মাধ্যমে, আমরা এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম ইন্টারফেসের কলের সাথে আরও পরিচিত হতে পারি এবং প্ল্যাটফর্ম বিকাশের কৌশলতে বিভিন্ন ভাষার মধ্যে সামান্য পার্থক্য বুঝতে পারি। আসলে, জাভাস্ক্রিপ্ট সংস্করণ এবং পাইথন সংস্করণের মধ্যে পার্থক্য খুব সামান্য, কারণ ইন্টারফেস কলগুলি মূলত একই।
জাভাস্ক্রিপ্ট সংস্করণ থেকে উদ্ধৃত বর্ণনাঃ
এটি একটি অবস্থান খুলতে প্রয়োজন। উদাহরণস্বরূপ, যদি অ্যাকাউন্টে 5000 ইউয়ান এবং একটি মুদ্রা থাকে, যদি মুদ্রার মান 5000 ইউয়ান অ্যাকাউন্ট ব্যালেন্সের চেয়ে বেশি হয় এবং দামের পার্থক্য প্রান্তিক মান অতিক্রম করে, উদাহরণস্বরূপ, যদি মুদ্রার মূল্য এখন 6000 ইউয়ান হয়, তবে (6000-5000) / 6000/2 মুদ্রা বিক্রি করুন, যা নির্দেশ করে যে মুদ্রা মূল্যবান হয়েছে এবং আমরা অর্থটি ফিরে রূপান্তর করতে পারি। যদি মুদ্রা মূল্য হ্রাস পায়, উদাহরণস্বরূপ, 4000 ইউয়ান, তবে আমরা (5000-4000) / 4000/2 মুদ্রা কিনে থাকি। যদি মুদ্রা হ্রাস পায় তবে কিছু কিনুন। যদি এটি আবার বেড়ে যায়, আবার বিক্রি করুন, ব্যালেন্সের মতো, উভয় পক্ষের আলাদা হেজ রয়েছে, তাই আমি এটিকে ভারসাম্য কৌশল বলি।
কৌশলটির নীতিটি খুব সহজ। জাভাস্ক্রিপ্ট সংস্করণের কোডটি দীর্ঘ নয়, কেবল 70 টিরও বেশি লাইন। আরও সংক্ষিপ্ত ব্যাকরণ সহ পাইথন ভাষার কৌশলটি প্রতিস্থাপিত হয় এবং কোডটি অনেক ছোট, যা শিক্ষানবিশদের শেখার জন্য খুব উপযুক্ত। এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে ডেভেলপারদের দ্বারা প্রচুর কোড ভাগ করা হয় এবং ভাষাটি সমর্থন করেJavaScript
/C++
/Python
অতএব, আরো ডেভেলপমেন্ট ল্যাঙ্গুয়েজ আয়ত্ত করা শুধুমাত্র শেখার, গবেষণা এবং ডেভেলপমেন্ট কৌশলগুলির জন্য সহায়ক নয়, প্ল্যাটফর্মের বিভিন্ন এপিআই ইন্টারফেসের সাথে পরিচিত।
'''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
কৌশলটি শুধুমাত্র রেফারেন্স, শেখার এবং ব্যাক টেস্টিং এর জন্য। যদি আপনি আগ্রহী হন, আপনি এটি অপ্টিমাইজ এবং আপগ্রেড করতে পারেন।