নবাগত, এটি পরীক্ষা করে দেখুন আপনাকে ক্রিপ্টোকারেন্সি পরিমাণগত ট্রেডিংয়ে নিয়ে যান (2)

লেখক:নিনাবাদাস, তৈরিঃ ২০২২-০৪-১৯ ১৬ঃ৪৬ঃ৫৩, আপডেটঃ ২০২২-০৪-২০ ১৬ঃ৫৬ঃ৪৩

নবাগত, এটি পরীক্ষা করে দেখুন আপনাকে ক্রিপ্টোকারেন্সি পরিমাণগত ট্রেডিংয়ে নিয়ে যান (2)

গত নিবন্ধে, আমরা প্রোগ্রামযুক্ত ট্রেডিং স্ক্রিপ্ট সম্পর্কে কথা বলেছি। আসলে, ট্রেডিং কৌশলটি একটি ট্রেডিং স্ক্রিপ্ট প্রোগ্রাম। নিবন্ধটি মূলত ট্রেডিং স্ক্রিপ্ট প্রোগ্রামের জন্য একটি হার্ডওয়্যার ক্যারিয়ারের প্রয়োজনীয়তার কথা বলেছে (যেখানে প্রোগ্রামটি চালিত হয়), এবং স্ক্রিপ্ট ট্রেডিং প্রোগ্রামটি সেই কম্পিউটার প্রোগ্রামিং ভাষায় লেখা যেতে পারে (এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে ব্যবহৃত তিনটি প্রোগ্রামিং ভাষা তালিকাভুক্ত করে; অবশ্যই, আপনি প্রোগ্রামযুক্ত ট্রেডিংয়ে কৌশল বাস্তবায়নের জন্য যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন) । এই নিবন্ধে, আমরা ক্রিপ্টোকারেন্সি সার্কেলের পরিমাণ নির্ধারণ এবং এর জ্ঞান বোঝার বিষয়ে আলোচনা চালিয়ে যাচ্ছি।

প্রোগ্রামড ট্রেডিং স্ক্রিপ্ট

  • ট্রেডিং কৌশল প্রকার প্রোগ্রামড ট্রেডিং এবং পরিমাণগত ট্রেডিংয়ে নতুন যারা, তারা বিভিন্ন শর্তে বিভ্রান্ত হতে পারে যেমন ট্রেন্ড কৌশল, আরবিট্রেজ কৌশল, উচ্চ-ফ্রিকোয়েন্সি কৌশল, গ্রিড কৌশল ইত্যাদি। আসলে, প্রোগ্রামড ট্রেডিং এবং পরিমাণগত ট্রেডিংয়ের সাধারণ ধরণের কৌশলগুলি কেবল বেশ কয়েকটি দিকের।

    • সালিসি কৌশল সহজভাবে বলতে গেলে, একটি কৌশল যা মূলত শর্ট পজিশন ধরে রেখে লং পজিশন ধারণ করে তা একটি সালিশ কৌশল হিসাবে শ্রেণীবদ্ধ করা যেতে পারে। এর অনেকগুলি নির্দিষ্ট প্রকার রয়েছে, যেমন স্পট ক্রস মার্কেট, ফিউচার ক্রস পিরিয়ড, ফিউচার এবং স্পট সালিশ এবং ক্রস-সিম্বল সালিশ ইত্যাদি।

    • প্রবণতা কৌশল সহজভাবে বলতে গেলে, এটি প্রবণতা অনুসরণ এবং একটি একক অবস্থান স্থাপন করার কৌশল, যেমন দ্বৈত চলমান গড়, এমএসিডি এবং অন্যান্য কৌশল।

    • প্রত্যাবর্তন কৌশল উদাহরণস্বরূপ, গ্রিড কৌশল, অস্থির বাজারে দামের ওঠানামা থেকে রিটার্ন অর্জন।

    • উচ্চ-ফ্রিকোয়েন্সি কৌশল সহজভাবে বলতে গেলে, এটি বাজারের মাইক্রোস্ট্রাকচার, নিয়ম, সুযোগ ইত্যাদি আবিষ্কারের জন্য কিছু অ্যালগরিদমের মাধ্যমে উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং পরিচালনা করার কৌশল।

    উপরের প্রকারগুলি ট্রেডিং কৌশল থেকে শ্রেণীবদ্ধ করা হয়; FMZ Quant-এ কৌশল নকশা থেকে কৌশলগুলিও বিভক্ত করা যেতে পারেঃ

    • একক প্রতীক কৌশল অর্থাৎ, কৌশলটি কেবলমাত্র একটি প্রতীক পরিচালনা করতে পারে, যেমন বিটিসি বাণিজ্য বা ইটিএইচ বাণিজ্য করা।

    • মাল্টি-সিম্বল কৌশল সহজভাবে বলতে গেলে, এটি একটি কৌশল যুক্তি দ্বারা একাধিক চিহ্ন পরিচালনা করা হয়।

    • একাধিক অ্যাকাউন্টের কৌশল সহজভাবে বলতে গেলে, এটি একটি বটে একাধিক এক্সচেঞ্জ অবজেক্ট কনফিগার করা (প্ল্যাটফর্মের ধারণাটি পূর্ববর্তী নিবন্ধে চালু করা হয়েছে, এবং একটি এপিআই কী দিয়ে কনফিগার করা এক্সচেঞ্জ অবজেক্ট একটি প্ল্যাটফর্ম অ্যাকাউন্টকে উপস্থাপন করে) । উদাহরণস্বরূপ, কিছু অর্ডার তদারকি কৌশলগুলিতে, একাধিক অ্যাকাউন্ট একসাথে একটি ক্রিয়াকলাপ অনুসরণ করবে (যা একই প্ল্যাটফর্মের অ্যাকাউন্ট বা বিভিন্ন প্ল্যাটফর্ম হতে পারে) । সংক্ষেপে, একাধিক এক্সচেঞ্জ অবজেক্ট (অ্যাকাউন্ট) এক বটে পরিচালিত হয়।

    • মাল্টি-লজিক কৌশল উদাহরণস্বরূপ, MACD কৌশল, চলন্ত গড় কৌশল, গ্রিড কৌশল, ইত্যাদি একই সময়ে একটি বট উপর ডিজাইন করা হয় (অবশ্যই, এটি বিভিন্ন বিনিময় বস্তু পরিচালনা করা হয়, এবং একই অপারেশন সঙ্গে বিনিময় বস্তু নির্দিষ্ট কৌশল যৌক্তিকভাবে দ্বন্দ্বপূর্ণ কিনা উপর নির্ভর করে)

  • প্ল্যাটফর্ম এপিআই ইন্টারফেস প্ল্যাটফর্ম অ্যাকাউন্টটি কীভাবে প্রোগ্রাম করা ট্রেডিং স্ক্রিপ্টটি পরিচালনা করে? উত্তরটি প্ল্যাটফর্ম দ্বারা খোলা এপিআই ইন্টারফেসের মাধ্যমে। সুতরাং কোন ধরনের ইন্টারফেসগুলি প্ল্যাটফর্মের জন্য উন্মুক্ত? গত নিবন্ধে, আমরা প্ল্যাটফর্ম বিভাগে প্ল্যাটফর্মগুলির সাধারণত REST এবং ওয়েবসকেট ইন্টারফেস রয়েছে তা নিয়ে কথা বলেছি। এখানে আমরা কৌশল পদ্ধতির দিক থেকে কিছু ধারণা যুক্ত করি। প্ল্যাটফর্ম ইন্টারফেসগুলি যাচাই করা হয়েছে কিনা (REST এবং ওয়েবসকেট উভয়ই), যথা যাচাই করা হয়েছে এবং যাচাই করা হয়নি তার ভিত্তিতে বিভক্ত।

    • যাচাই করার প্রয়োজন নেই এমন ইন্টারফেস সাধারণভাবে, এগুলিকে পাবলিক ইন্টারফেস বলা হয়; এই ধরনের ইন্টারফেসগুলির জন্য তথ্য যাচাই করার প্রয়োজন হয় না।API KEY(আপনি যদি এপিআই কী কি তা মনে না রাখেন তবে আপনি পূর্ববর্তী নিবন্ধে যেতে পারেন) । এই ধরণের ইন্টারফেসটি সাধারণত একটি বাজার ইন্টারফেস, যেমন গভীরতার বাজার কোট, কে-লাইন ডেটা, তহবিলের হার, ট্রেডিং প্রতীক সম্পর্কে তথ্য, প্ল্যাটফর্ম সার্ভারের টাইমস্ট্যাম্প ইত্যাদি অনুসন্ধান করা। সহজভাবে বলতে গেলে, আপনার অ্যাকাউন্টের সাথে মূলত সম্পর্কহীন ইন্টারফেসটি মোটামুটিভাবে একটি পাবলিক ইন্টারফেস হিসাবে নির্ধারণ করা যেতে পারে (কোনও যাচাইকরণের প্রয়োজন নেই) । এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, যখন একটি যাচাইকৃত এপিআই ফাংশন (প্ল্যাটফর্মের যাচাইকৃত ইন্টারফেস; পাবলিক ইন্টারফেসকে ক্যাপসুল করে) কল করা হয়, এমনকি যদি এপিআই কী কনফিগারেশনটি ভুল হয়, ইন্টারফেস দ্বারা ফিরে আসা ডেটা স্বাভাবিকভাবে প্রাপ্ত করা যেতে পারে (কোনও যাচাইকরণের প্রয়োজন নেই) ।

    • যাচাই করার প্রয়োজন ইন্টারফেস সহজভাবে বলতে গেলে, এগুলি এমন ইন্টারফেস যা যাচাই করা দরকার (এপিআই কী দ্বারা) । এই ধরণের ইন্টারফেসকে একটি ব্যক্তিগত ইন্টারফেস বলা হয়। এই ধরণের ইন্টারফেস সাধারণত আপনার অ্যাকাউন্টের কিছু ক্রিয়াকলাপ বা তথ্যের সাথে সম্পর্কিত, যেমন অ্যাকাউন্টের সম্পদ, অ্যাকাউন্টের অবস্থান, অপেক্ষমান অর্ডার, স্থানান্তর, মুদ্রা রূপান্তর, লিভারেজ সমন্বয় এবং অবস্থান মোড সেটিং ইত্যাদি। এই অপারেশনগুলো যাচাই করতে হবে।

      এফএমজেড কোয়ান্টে, যাচাইকরণের প্রয়োজন API ফাংশনগুলি কল করার সময় (বেসরকারী ইন্টারফেসগুলি, যা ক্যাপসুল করা হয় এবং প্ল্যাটফর্ম যাচাইকরণের প্রয়োজন) । যদি API KEY এর কনফিগারেশনটি ভুল হয় তবে এই ধরণের ফাংশনটি কল করলে একটি ত্রুটি রিপোর্ট করবে এবং null প্রদান করবে।

    সুতরাং, কিভাবে FMZ কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে এই ইন্টারফেস ব্যবহার করবেন?

    এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম ইউনিফাইড ক্রিয়া এবং সংজ্ঞা (যেমন কে-লাইন ইন্টারফেস, গভীরতা বাজার ইন্টারফেস, বর্তমান সম্পদ অনুসন্ধান ইন্টারফেস, অর্ডার ইন্টারফেস, অর্ডার বাতিলকরণ ইন্টারফেস ইত্যাদি) সহ প্ল্যাটফর্ম ইন্টারফেসগুলিকে ক্যাপসুল করে। এই ইন্টারফেসগুলি এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে বলা হয়। এফএমজেড এপিআই ফাংশনগুলি এপিআই ডকুমেন্টেশন অনুসন্ধান করে দেখা যায়ঃ (https://www.fmz.com/api).

    সুতরাং, কিভাবে FMZ Quant এ ইউনিফাইড অ্যাকশন এবং সংজ্ঞা ছাড়া কিছু প্ল্যাটফর্ম ইন্টারফেস ব্যবহার করবেন?

    এই প্ল্যাটফর্ম ইন্টারফেসগুলির মধ্যে রয়েছেঃ সম্পদ স্থানান্তর, শর্তাধীন অর্ডার, ব্যাচ অর্ডার, ব্যাচ অর্ডার বাতিলকরণ, অর্ডার সংশোধন ইত্যাদি। কিছু প্ল্যাটফর্মে এই ইন্টারফেস রয়েছে, কিছু প্ল্যাটফর্ম নেই এবং ফাংশন এবং ব্যবহারের বিবরণগুলি বেশ আলাদা হতে পারে, তাই এই ইন্টারফেসগুলি থেকে অ্যাক্সেস করা যেতে পারেexchange.IOএফএমজেড কোয়ান্ট (বিস্তারিত জানতে, এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের এপিআই ডকুমেন্টেশন দেখুনঃhttps://www.fmz.com/api#exchange.io..এফএমজেড কোয়ান্টের স্কোয়ারে কিছু ব্যবহারিক আইও উদাহরণ কৌশল রয়েছে।

এফএমজেড এপিআই ডকুমেন্টেশনে থাকা সমস্ত এপিআই ফাংশন কি নেটওয়ার্ক অনুরোধ করতে পারে?

আমাদের বলতে হবে যে প্ল্যাটফর্ম এপিআইগুলির অ্যাক্সেসের ফ্রিকোয়েন্সির একটি সীমা রয়েছে (উদাহরণস্বরূপ, 1 সেকেন্ডে 5 বার) । অ্যাক্সেসটি খুব ঘন ঘন হতে পারে না, অথবা http 429 এর ত্রুটি রিপোর্ট করা হবে, এবং অ্যাক্সেস প্রত্যাখ্যান করা হবে (বেশিরভাগ প্ল্যাটফর্ম 429 রিপোর্ট করে) । অতএব, এফএমজেড কোয়ান্টের ইনক্যাপসুলেটেড প্ল্যাটফর্ম ইন্টারফেসগুলি কল করারও সীমা রয়েছে, তবে নেটওয়ার্ক অনুরোধগুলি না করা এপিআই ফাংশনগুলি কল করার এমন কোনও সীমা নেই।
এফএমজেড কোয়ান্টের সমস্ত এপিআই ফাংশন নেটওয়ার্ক অনুরোধ করতে পারে না; এফএমজেডের কিছু এপিআই ফাংশন কেবলমাত্র কিছু স্থানীয় সেটিংস সংশোধন করে, যেমন বর্তমান ট্রেডিং জোড়া, চুক্তি কোড এবং সূচক গণনা ফাংশন সেট করা, পাশাপাশি এক্সচেঞ্জ অবজেক্টের নাম অর্জন ইত্যাদি। মূলত, একটি ফাংশন ব্যবহার থেকে, আপনি একটি নেটওয়ার্ক অনুরোধ করা হবে কিনা তা নির্ধারণ করতে পারেন; যতক্ষণ এটি প্ল্যাটফর্ম ডেটা অর্জন করতে হয়, বা একটি প্ল্যাটফর্ম অ্যাকাউন্ট পরিচালনা করতে হয়, একটি নেটওয়ার্ক অনুরোধ করা হবে; এই ইন্টারফেসগুলিকে কল ফ্রিকোয়েন্সিতে মনোযোগ দিতে হবে।

  • আসুন FMZ Quant এ API ফাংশন ব্যবহারের বিভিন্ন সাধারণ সমস্যা এবং অভিজ্ঞতা সম্পর্কে কথা বলি।

    • ত্রুটি সহনশীলতা এটি সবচেয়ে সাধারণ ত্রুটি, যা অসংখ্য নতুনদের সমস্যায় ফেলেছে। প্রায়শই, কৌশল ব্যাকটেস্ট ভাল এবং সবকিছু স্বাভাবিক। কেন বট কিছুক্ষণের জন্য চালানোর পরে অস্বাভাবিকভাবে কাজ করে (যা যে কোনও সময় ট্রিগার হতে পারে)?

      img

      একটি কৌশল লেখার সময়, ইন্টারফেস দ্বারা ফিরে আসা তথ্যের জন্য যাচাই করা প্রয়োজন। উদাহরণস্বরূপ, এফএমজেড কোয়ান্টের টিকার পাওয়ার কোড (যা সরাসরি প্ল্যাটফর্ম ইন্টারফেস অ্যাক্সেস করতে আপনার নিজের প্রোগ্রাম লেখার মতো):var ticker = exchange.GetTicker()যদি আমাদের প্রয়োজন হয়Last(সর্বশেষ মূল্য)ticker(আপনি ফাংশন GetTicker এর রিটার্ন কাঠামো উল্লেখ করতে পারেন), আমরা তথ্য পেতে হবে (কি newPrice? new: সর্বশেষ; Price: price; thats right, combine them up!)

      এখন, এটা ঠিক আছে যদি ফাংশনGetTicker()স্বাভাবিক তথ্য ফেরত; যদি একটি টাইমআউট অনুরোধ, নেটওয়ার্ক ত্রুটি, প্ল্যাটফর্ম ক্যাবল বন্ধ টানা, ক্যাবল খনন দ্বারা ভাঙা, বা শিশুদের বিদ্যুৎ সুইচ বন্ধ, ফাংশনGetTicker()ফিরে আসবেnullএই মুহূর্তে, এর মূল্যtickerহয়null; যখন আমিLastএর মধ্যে, কৌশলগত কর্মসূচি প্রোগ্রাম ব্যতিক্রম দ্বারা বন্ধ করা হবে। এর থেকে মনে হয় যে ইন্টারফেস কল ব্যর্থতা (GetTicker এর কল ব্যর্থ এবং null ফেরত) কৌশল বট বন্ধের সরাসরি কারণ নয় (সরাসরি কারণ হল যে একটি বৈশিষ্ট্য একটিnullইন্টারফেস কলের ব্যর্থতা একটি ত্রুটির রিপোর্ট করে এমন পরিস্থিতিতে বটটি থামবে না (এখানে জোর দেওয়া হয়েছে) ।

      তাহলে, বোটের অস্বাভাবিক বন্ধ হওয়া এড়াতে আমাদের কী করা উচিত?
      উত্তর হল ইন্টারফেস দ্বারা ফেরত তথ্য ত্রুটি সহনশীলতা প্রক্রিয়া করতে; এটা খুব সহজ, এবং আপনি শুধুমাত্র ফিরে তথ্য হয় কিনা বিচার করতে হবেnull(এখানে জাভাস্ক্রিপ্টকে উদাহরণ হিসেবে নেওয়া যাক, কারণ অন্যান্য ভাষা অনুরূপ) । একটি ছোট কোড সেগমেন্ট লিখুন (যা শুধুমাত্র নির্দেশের জন্য, এবং সরাসরি চালানো যাবে না!

      var ticker = exchange.GetTicker()
      if (ticker) {
          var newPrice = ticker.Last
          Log("Print the latest price:", newPrice)
      } else {
          // data is null, so no operation will make no problem 
      }
      

      শুধুGetTickerইন্টারফেসটি ত্রুটি-সহনশীল প্রক্রিয়াকরণ করতে হবে, কিন্তু নেটওয়ার্ক অনুরোধগুলির সাথে ইন্টারফেসটি ফেরত মানের জন্য ত্রুটি-সহনশীল প্রক্রিয়াকরণ করতে হবে (যদি আপনি ফাংশনের ফেরত মান ব্যবহার করেন) অনেক ত্রুটি সহনশীলতা পদ্ধতি আছে. আপনি ব্যবহার করতে পারেন_C()ফাংশন (এফএমজেড এপিআই ডকুমেন্টেশন দেখুন) আপনার নিজের ত্রুটি-সহনশীল ফাংশন লিখতে এবং আপনার নিজস্ব ত্রুটি-সহনশীল প্রক্রিয়া এবং যুক্তি ডিজাইন করতে।

      এর ব্যবহার সম্পর্কে_C()এই ফাংশন, অনেক নতুন শিক্ষার্থী এটি ভুলভাবে ব্যবহার করার খুব সম্ভাবনা আছে।_C()ফাংশন একটি ফাংশন রেফারেন্স, একটি ফাংশন কল নয়।_C(funcName, param1, param2); কলটি সঠিক; funcName এর কোন বন্ধনী নেই, এবং param1 এবং param2 হল ফাংশন funcName এ আমদানি করা পরামিতি।_C(funcName(param1, param2)); কলটি ভুল; সাধারণত যদি একজন নবজাতক FMZ API ডকুমেন্টেশনটি মনোযোগ সহকারে না পড়ে তবে এটি এইরকম লেখা হবে।

    • স্পট মার্কেটে ক্রয় আদেশের পরিমাণ

      নতুনদেরও সহজেই স্পট মার্কেট ক্রয় অর্ডারের অর্ডার পরিমাণে ভুল করতে হয়। পূর্ববর্তী নিবন্ধে উল্লিখিত হিসাবে, স্পট মার্কেট ক্রয় অর্ডারের অর্ডার পরিমাণ সাধারণত অর্থের পরিমাণ (শুধুমাত্র কয়েকটি প্ল্যাটফর্মের অন্যান্য সেটিংস থাকতে পারে এবং সাধারণত এই বিশেষ প্ল্যাটফর্ম সেটিংসগুলি এফএমজেড এপিআই ডকুমেন্টেশনে ব্যাখ্যা করা হবে) । উদাহরণস্বরূপ, আমি পরীক্ষার জন্য OKEX V5 সিমুলেটেড বট ব্যবহার করেছিঃ

      ট্রেডিং জোড়া নির্ধারণ করুনঃLTC_USDT

      function main() {
          exchange.IO("simulate", true)   // switch to OKEX simulated bot 
          exchange.Buy(-1, 1)             // the price is -1, representing the placed order is market order; the amount of 1 means the order amount of 1 USDT
      }
      

      যেহেতু প্ল্যাটফর্মগুলিতে সাধারণত অর্ডারের পরিমাণের উপর একটি সীমা থাকে, তাই সীমার চেয়ে কম পরিমাণের অর্ডারগুলি স্থাপন করা হবে না (উদাহরণস্বরূপ, বাইনারেন্স স্পটের প্রয়োজন কেবলমাত্র 5USDT এর বেশি পরিমাণের অর্ডার সফলভাবে স্থাপন করা যেতে পারে) । অতএব, এই জাতীয় অর্ডার স্থাপন করলে একটি ত্রুটি রিপোর্ট করবেঃ

      error	Buy(-1, 1): map[code:1 data:[map[clOrdId: ordId: sCode:51020 sMsg:Order amount should be greater than the min available amount. tag:]] msg:]
      
    • ফিউচার অর্ডারের দিক

      ফিউচার কৌশলগুলি করার সময়, নতুনরা প্রায়শই অর্ডার দিকের ভুল করে। এফএমজেড কোয়ান্টে কৌশল লেখার উদাহরণ গ্রহণ করে, আসুন প্রথমে এপিআই ডকুমেন্টেশনের বর্ণনাটি দেখুনঃhttps://www.fmz.com/api#exchange.setdirection...

      img

      কারণ অর্ডার স্থাপন ফাংশন শুধুমাত্র আছেBuyএবংSellযাইহোক, ফিউচার (অবশ্যই, স্পট জন্য কোন সমস্যা নেই, স্পট শুধুমাত্র কিনতে এবং বিক্রয় আছে) খোলা দীর্ঘ, বন্ধ দীর্ঘ, খোলা সংক্ষিপ্ত, এবং সংক্ষিপ্ত বন্ধ দিক আছে, তাই স্পষ্টতই Buy এবং Sell অনেক দিক অপারেশন প্রকাশ করতে পারবেন না, তারপর এটি ফাংশন প্রবর্তন করা প্রয়োজনexchange.SetDirection()ফিউচার ট্রেডিংয়ের দিকনির্দেশনা নির্ধারণ। এফএমজেডে,exchange.SetDirection("buy")(যা প্রথমে প্রথম দিক নির্ধারণ করে) এর সাথে ব্যবহার করা হয়exchange.Buy, যার অর্থ হল যে অর্ডারটি লং পজিশন খোলার অর্ডার। আর এভাবেই:

      ব্যবহারexchange.SetDirection("sell")এবংexchange.Sellএকসাথে, যা স্থাপন আদেশ প্রতিনিধিত্ব করে একটি শর্ট পজিশন খোলার আদেশ। ব্যবহারexchange.SetDirection("closebuy")এবংexchange.Sellএকসাথে, যা স্থাপন আদেশ প্রতিনিধিত্ব করে একটি দীর্ঘ পজিশন বন্ধ করার আদেশ। ব্যবহারexchange.SetDirection("closesell")এবংexchange.Buyএকসাথে, যা স্থাপন আদেশ প্রতিনিধিত্ব করে একটি শর্ট পজিশন বন্ধ করার আদেশ। নতুনরা সাধারণত ব্যবহার করেexchange.SetDirection("sell")এবংexchange.Buyতারপর, একটি ত্রুটি রিপোর্ট করা হবে (একটি ত্রুটি ব্যাকটেস্টে রিপোর্ট করা যাবে না, কিন্তু এটি স্পষ্টতই একটি যৌক্তিক ত্রুটি, যা আমার মতো আবেগপ্রবণ-কম্পলসিভ মানুষদের দ্বারা উপেক্ষা করা যাবে না) এখানে আরেকটি ভুল রয়েছে যা সাধারণত নতুনদের দ্বারা করা হয়।

      function main() {
          exchange.SetContractType("quarter")   // set the current contract to a quarterly contract 
          exchange.SetDirection("sell")
          var id = exchange.Sell(-1, 1)    
          Log("placed market order, executed, get positions", exchange.GetPosition())    
          exchange.SetDirection("closebuy")   // use closebuy and Sell together, yes, no problem 
          exchange.Sell(-1, 1)
      }
      

      img
      যখন এটি এখানে আসে, আপনি জিজ্ঞাসা করতে পারেন:" আমার অবস্থান আছে, এবং closebuy এবং বিক্রয় একসাথে ব্যবহার, তাই কেন একটি ত্রুটি রিপোর্ট করা হয় এবং আমি অবস্থান বন্ধ করতে পারবেন না? "আমি বলবঃভুল দিক অবস্থান বন্ধ করতে! আপনি দীর্ঘ অবস্থান বন্ধ। উপরন্তু, ত্রুটি অন্য পরিস্থিতিতে হতে পারেঃ কাছাকাছি অবস্থান দিক সেটিং সঠিক, অর্ডার স্থাপন ফাংশন ব্যবহার এছাড়াও সঠিক, এবং আপনিও দিক অবস্থানের রাখা, কিন্তু ত্রুটি এখনও রিপোর্ট করা হয়। কারণ হতে পারেঃ আপনার প্রোগ্রাম অনেক অর্ডার স্থাপন করেছে, অর্ডারগুলি প্রথমে কার্যকর করা হয় না, এবং বন্ধ অবস্থানের অর্ডারগুলি এখন বাজারে রয়েছে এবং কার্যকর হওয়ার জন্য অপেক্ষা করছে। সেই সময়ে, প্রোগ্রামটি অবস্থানগুলি বন্ধ করতে থাকে, যা বন্ধ অবস্থানের বেশি হওয়ার ত্রুটির অনুরোধ করবে।

    • রপ্তানি ও ট্রেডিং তথ্য প্রদর্শন লগ প্রোগ্রামযুক্ত এবং পরিমাণগত ট্রেডিং কৌশলগুলি ডিজাইন এবং লেখার সাথে মানব-কম্পিউটার মিথস্ক্রিয়াগুলির নকশা অবিচ্ছেদ্য, যেমন ডাটা প্রদর্শন এবং অপারেশন লগ এক্সপোর্ট। সাধারণত স্থানীয় প্রোগ্রামিং ভাষা ব্যবহার করে বট স্ক্রিপ্ট এবং কৌশল প্রোগ্রাম লিখতে। সরাসরি বর্তমান ভাষার আউটপুট ফাংশন ব্যবহার করুন। উদাহরণস্বরূপঃ পাইথন ব্যবহারprint. জাভাস্ক্রিপ্ট ব্যবহারconsole.log. গোলং ব্যবহারfmt.Println(). সি++ ব্যবহারcout.

      আসুন FMZ-এ তথ্য প্রদর্শন সম্পর্কে কথা বলি। FMZ Quant-এ তথ্য প্রদর্শনের জন্য মূলত দুটি জায়গা রয়েছে।

      • অবস্থা বার বট চালু হওয়ার পর, বট পৃষ্ঠাটি নিম্নরূপ প্রদর্শিত হবেঃ

        img

        প্রদর্শন অংশটি হল স্ট্যাটাস বার তথ্য। স্ট্যাটাস বারটি মূলত কিছু রিয়েল-টাইম পরিবর্তন ডেটা প্রদর্শন করতে ব্যবহৃত হয় (কারণ রিয়েল-টাইম পরিবর্তনগুলি রিয়েল-টাইমে পর্যবেক্ষণ করা দরকার এবং প্রতিবার লগ হিসাবে মুদ্রণ করা যায় না, তাই এই ধরণের ডেটা স্ট্যাটাস বারে প্রদর্শিত হতে পারে। যদি প্রতিটিটির প্রিন্ট লগ হয় তবে প্রচুর অর্থহীন পুনরাবৃত্তি ডেটা থাকবে, যা অনুসন্ধানকে প্রভাবিত করবে) । স্ট্যাটাস বারে প্রদর্শিত ডেটাLogStatusবিস্তারিত জানার জন্য, দয়া করে FMZ API ডকুমেন্টেশন দেখুন।

      • লগ বার এটি বট পৃষ্ঠাতেও রয়েছে, যেমন নিচের ছবিতে দেখা যাচ্ছে:

        img

        প্রদর্শন অংশটি হল লগ বার। লগ বারটি মূলত নির্দিষ্ট সময়ে নির্দিষ্ট ডেটা স্থায়ীভাবে রেকর্ড করতে বা নির্দিষ্ট সময়ে একটি নির্দিষ্ট কৌশলটির অপারেশন রেকর্ড করতে ব্যবহৃত হয়। লগগুলি বিভিন্ন ধরণের মধ্যে বিভক্তঃ

        1. common log; FMZ কৌশলটি Log ফাংশন ব্যবহার করে কৌশল লগটিতে এটি আউটপুট এবং মুদ্রণ করতে।

        img

        1. অর্ডার লগ; ব্যবহার করেexchange.Sell/exchange.Buyএকটি FMZ কৌশল স্বয়ংক্রিয়ভাবে লগ রেকর্ড আউটপুট হবে.

        img

        1. বাতিলকরণ লগ;exchange.CancelOrderFMZ কৌশল ব্যবহার করা হয়, এবং বাতিল লগ স্বয়ংক্রিয়ভাবে লগ আউটপুট করা হবে।

        img

        1. ত্রুটি লগ; যখন এফএমজেড কৌশলটি চলছে, এবং নেটওয়ার্ক অনুরোধের জন্য ইন্টারফেসে একটি কল ত্রুটি রয়েছে, এবং একটি ব্যতিক্রম ছুঁড়ে ফেলা হয় (যেমন একটি throw বিবৃতি), ত্রুটি লগটি স্বয়ংক্রিয়ভাবে লগটিতে আউটপুট হবে।

        img

      এফএমজেড এপিআই ফাংশনগুলির মধ্যে, ফাংশনগুলি যা লগ আউটপুট উত্পন্ন করতে পারে, যেমন লগ ((...), বিনিময়.কিনুন ((মূল্য, পরিমাণ), বিনিময়.বাতিল করুনঅর্ডার ((আইডি), ইত্যাদি, প্রয়োজনীয় পরামিতিগুলির পরে কিছু অতিরিক্ত আউটপুট পরামিতি দ্বারা অনুসরণ করা যেতে পারে, যেমনঃ বিনিময়। বাতিল করুনঅর্ডার ((অর্ডার[জে]।আইডি, অর্ডার[জে]); এটি অর্ডার অর্ডার[জে] বাতিল হওয়ার পরে অতিরিক্ত অর্ডার তথ্য আউটপুট করা হয়।

      function main() {
          Log("data1", "data2", "data3", "...")
          var data2 = 200
          var id = exchange.Sell(100000, 0.1, "additional data1", data2, "...")
          exchange.CancelOrder(id, "additional data1", data2, "...")
          LogProfit(100, "additional data1", data2, "...")
      }
      
    • সূচক ফাংশন ব্যবহার সূচক ফাংশন সম্পর্কে কথা বলার আগে, আসুন প্রথমে বুঝতে পারি যে একটি সূচক কী। সহজভাবে বলতে গেলে, এটি একটি রেখা যেমন চলমান গড়, এমএসিডি, বা এটিআর।

      প্রশ্ন: এই সূচকগুলো কিভাবে তৈরি করা হয়? উঃ অবশ্যই এগুলো গণনার মাধ্যমে তৈরি হয়।

      প্রশ্ন: এগুলো কিসের ভিত্তিতে গণনা করা হয়? উঃ কে-লাইন ডেটা।

      প্রশ্ন: আপনি একটি উদাহরণ দিতে পারেন? উত্তরঃ উদাহরণস্বরূপ সরলতম চলমান গড় সূচকটি নেওয়া। যদি আমরা প্রতিদিনের কে-লাইন (যেমন, একটি ইয়াং লাইন বা ইয়িন লাইন একটি দিন প্রতিনিধিত্ব করে) ডেটা সূচক হিসাবে সূচক গণনার জন্য ব্যবহার করি। চলমান গড় সূচক পরামিতি 10 হয়, তাহলে গণনা করা চলমান গড় সূচকটি 10 দিনের চলমান গড়।

      প্রশ্ন: যদি K-line BAR এর সংখ্যা 10 এর চেয়ে কম হয়, তাহলে চলমান গড়ের সূচকটি গণনা করা যেতে পারে? উত্তরঃ শুধুমাত্র চলমান গড় সূচক গণনা করা যাবে না, কিন্তু কোন সূচক কার্যকর সূচক মান গণনা করতে পারবেন না যখন K-লাইন তথ্য সংখ্যা BAR সূচক সময়ের পরামিতি পূরণ করে না, এবং গণনা অ্যারে এর সংশ্লিষ্ট অবস্থান ফাঁকা মান দিয়ে ভরা হবে, যেমনnullপ্রদর্শিত হয় যখনJavaScriptকৌশল গণনা করা সূচক তথ্য মুদ্রণ করে।

      স্কোয়ারে একটি শিক্ষামূলক উদাহরণ আছে:https://www.fmz.com/strategy/125770এই শিক্ষা উদাহরণ কৌশল ব্যাকটেস্ট করুন, এবং আপনি ব্যাকটেস্ট সিস্টেম এবং 10 সময়ের চলমান গড় দ্বারা উত্পন্ন চার্ট দেখতে পারেনঃ

      img

      কৌশল কাস্টম অঙ্কন, আঁকা K-লাইন এবং চলন্ত গড় চার্ট দ্বারাঃ

      img

      প্রশ্ন: যদি আমি ১০ ঘণ্টার চলমান গড় ব্যবহার করতে চাই? উঃ ঘণ্টার পর ঘন্টা সময়কালের কে-লাইন ডেটা ব্যবহার করুন।

      সহজভাবে বলতে গেলে, আমরা যে কে-লাইনটি দেখি তা ডিজিটালাইজ করার পরে এটি একটি অ্যারে (যদি আপনি অ্যারের ধারণাটি বুঝতে না পারেন তবে আপনি এটি বাইডুতে অনুসন্ধান করতে পারেন), এবং অ্যারের প্রতিটি উপাদান একটি কে-লাইন বার, যা ক্রমে সাজানো হয়। অ্যারের প্রথম উপাদানটি বর্তমান সময়ের থেকে সবচেয়ে দূরে এবং অ্যারের শেষ উপাদানটি বর্তমান সময়ের নিকটতম। সাধারণত কে-লাইন ডেটার শেষ বারটি বর্তমান সময়ের বার, যা রিয়েল টাইমে পরিবর্তিত হয় এবং সম্পূর্ণ হয় না (আপনি কোনও প্ল্যাটফর্ম পৃষ্ঠায় লগ ইন করে এবং এর কে-লাইন পর্যবেক্ষণ করে পরিবর্তনগুলি পর্যবেক্ষণ করতে পারেন) । গণনা করা সূচকগুলিও কে-লাইন বারগুলির সাথে এক-এক চিঠিপত্রের মধ্যে রয়েছে। উপরের উদাহরণে, আপনি দেখতে পারেন যে একটি সূচক মান একটি কে-লাইন বারের সাথে মিলে যায়। নোট করুন যে শেষ কে-লাইন বারটি রিয়েল টাইমে পরিবর্তিত হয় এবং গণনা করা সূচকটিও কে-লাইন বারের পরিবর্তনের সাথে পরিবর্তিত হবে।

      এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, আপনি টিএ লাইব্রেরি (এফএমজেড দ্বারা বাস্তবায়িত লাইব্রেরি, ডকারের সাথে সংহত, এবং বিভিন্ন ভাষায় সরাসরি ব্যবহার করা যেতে পারে) বা তালিব (পুরানো বিখ্যাত সূচক লাইব্রেরি তালিব, জেএস, সি ++ এ সংহত; পাইথনকে অতিরিক্ত ইনস্টল করতে হবে) ব্যবহার করতে পারেন। উদাহরণস্বরূপ, উপরের উদাহরণে গড় গণনাঃ FMZ TA লাইব্রেরি ব্যবহার করুনঃ

      function main() {
          var records = exchange.GetRecords()
          var ma = TA.MA(records, 10)
          Log(ma)       // print average
      }
      

      তালেব ব্যবহার করুন:

      function main() {
          var records = exchange.GetRecords()
          var ma = talib.MA(records, 10)
          Log(ma)       // print average 
      }      
      

      গণনা সূচক তথ্য মা একটি অ্যারে, এবং প্রতিটি উপাদান এক এক করে K-লাইন অ্যারে (রেকর্ড) অনুরূপ, অর্থাৎ,ma[ma.length -1]এর সাথে মিলে যায়records[records.length - 1]ইত্যাদি।

      এটি অন্যান্য জটিল সূচকগুলির জন্যও একই, এবং আপনাকে MACD এর মতো সূচকগুলিতে মনোযোগ দিতে হবে।

      var macd = TA.MACD(records)   // In this way, only the K-line data is passed in, and no indicator parameters are passed in. The indicator parameters use the default values, and that is the same for other indicator functions
      

      এই সময়ে, পরিবর্তনশীল macd একটি দ্বি-মাত্রিক অ্যারে (আপনি Baidu এটি করতে পারেন, যদি আপনি ধারণা বুঝতে না পারেন) । একটি দ্বি-মাত্রিক অ্যারে কেবল একটি অ্যারে, এবং এর প্রতিটি উপাদানও একটি অ্যারে।

      প্রশ্নঃ কেন MACD সূচক তথ্য একটি দ্বি-মাত্রিক অ্যারে? উত্তরঃ কারণ ম্যাকড সূচকটি দুটি লাইন (ডিফ লাইন এবং ডিএ লাইন) এবং ভলিউম বারগুলির একটি সেট দিয়ে গঠিত (ম্যাকড ভলিউম বার ডেটা, আসলে, একটি লাইন হিসাবেও বিবেচনা করা যেতে পারে) । সুতরাং ম্যাকড ভেরিয়েবলকে বিভক্ত করা যেতে পারেঃ

      var dif = macd[0]
      var dea = macd[1]
      var macdbar = macd[2]
      

      এখানে একটি প্রস্তুত শিক্ষার উদাহরণ রয়েছে; যদি আপনি আগ্রহী হন, আপনি এটি অধ্যয়ন করতে পারেনঃhttps://www.fmz.com/strategy/151972

      img


আরো