রিসোর্স লোড হচ্ছে... লোডিং...

সহজ ভোল্টেবিলিটি ইএমভি কৌশল

লেখক:ভাল, তৈরিঃ 2020-07-01 10:39:17, আপডেটঃ 2023-10-28 15:26:49

img

সংক্ষিপ্তসার

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

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

ইএমভি গণনার সূত্র

ধাপ ১ঃ mov_mid গণনা করুন

এর মধ্যে TH হল দিনের সর্বোচ্চ মূল্য, TL হল দিনের সর্বনিম্ন মূল্য, YH হল আগের দিনের সর্বোচ্চ মূল্য এবং YL হল আগের দিনের সর্বনিম্ন মূল্য। তাহলে যদি MID> 0 হয় তবে আজকের গড় মূল্য গতকালের গড় মূল্যের চেয়ে বেশি।

img

ধাপ ২ঃ অনুপাত গণনা করুন

এর মধ্যে, টিভিওএল দিনের ট্রেডিং ভলিউমকে উপস্থাপন করে, TH দিনের সর্বোচ্চ মূল্যকে উপস্থাপন করে এবং TL দিনের সর্বনিম্ন মূল্যকে উপস্থাপন করে।

img

ধাপ ৩ঃ এমভি গণনা করুন

img

ইএমভি ব্যবহার

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

EMV এর ব্যবহার বেশ সহজ, কেবল EMV শূন্য অক্ষ অতিক্রম করে কিনা তা দেখুন। যখন EMV 0 এর নীচে থাকে, তখন এটি একটি দুর্বল বাজারকে উপস্থাপন করে; যখন EMV 0 এর উপরে থাকে, তখন এটি একটি শক্তিশালী বাজারকে উপস্থাপন করে। যখন EMV নেতিবাচক থেকে ইতিবাচক হয়ে যায়, তখন এটি কেনা উচিত; যখন EMV ইতিবাচক থেকে নেতিবাচক হয়ে যায়, তখন এটি বিক্রি করা উচিত। এর বৈশিষ্ট্যটি হ'ল এটি কেবল বাজারে শক বাজার এড়াতে পারে না, তবে ট্রেন্ড মার্কেট শুরু হওয়ার সময় বাজারে প্রবেশ করতে পারে। তবে, কারণ EMV দামের পরিবর্তনের সময় ভলিউমের পরিবর্তনকে প্রতিফলিত করে, এটি কেবল মাঝারি থেকে দীর্ঘমেয়াদী প্রবণতাগুলিতে প্রভাব ফেলে। স্বল্পমেয়াদী বা তুলনামূলকভাবে সংক্ষিপ্ত ট্রেডিং চক্রের জন্য, EMV এর প্রভাব খুব খারাপ।

কৌশল বাস্তবায়ন

ধাপ ১ঃ কৌশলগত কাঠামো লিখুন

# Strategy main function
def onTick():
     pass

# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

FMZ.COMরোটেশন প্রশিক্ষণ মোড গ্রহণ করে। প্রথমত, আপনি একটিmainফাংশন এবং একটিonTickফাংশন।mainফাংশন কৌশল এন্ট্রি ফাংশন, এবং প্রোগ্রাম কোড লাইন দ্বারা লাইন থেকে চালানো হবেmainফাংশন.mainফাংশন লিখুনwhileলুপ এবং বারবার সঞ্চালনonTickকৌশলটির সমস্ত কোর কোডonTick function.

ধাপ ২ঃ অবস্থান তথ্য পান

def get_position():
     position = 0 # The number of assigned positions is 0
     position_arr = _C(exchange.GetPosition) # Get array of positions
     if len(position_arr)> 0: # If the position array length is greater than 0
         for i in position_arr: # Traverse the array of positions
             if i['ContractType'] =='IH000': # If the position symbol is equal to the subscription symbol
                 if i['Type']% 2 == 0: # if it is long position
                     position = i['Amount'] # Assign a positive number of positions
                 else:
                     position = -i['Amount'] # Assign the number of positions to be negative
     return position # return position quantity

কারণ এই কৌশলতে, রিয়েল টাইম পজিশনের সংখ্যা ব্যবহার করা হয়, যাতে রক্ষণাবেক্ষণ সহজ হয়,get_positionযদি বর্তমান অবস্থান দীর্ঘ হয়, এটি একটি ধনাত্মক সংখ্যা ফেরত দেয়, এবং যদি বর্তমান অবস্থান সংক্ষিপ্ত হয়, এটি একটি নেতিবাচক সংখ্যা ফেরত দেয়।

পদক্ষেপ 3: কে-লাইন ডেটা পান

exchange.SetContractType('IH000') # Subscribe to futures variety
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <10: # If the number of K lines is less than 10
     return

নির্দিষ্ট K-line ডেটা পাওয়ার আগে আপনাকে প্রথমে একটি নির্দিষ্ট ট্রেডিং চুক্তিতে সাবস্ক্রাইব করতে হবে,SetContractTypeথেকে ফাংশনFMZ.COM, এবং চুক্তি কোড পাস. আপনি চুক্তি সম্পর্কে অন্যান্য তথ্য জানতে চান, আপনি এই তথ্য গ্রহণ করার জন্য একটি পরিবর্তনশীল ব্যবহার করতে পারেন. তারপর ব্যবহারGetRecordsফাংশন K-লাইন তথ্য পেতে, কারণ ফিরে একটি অ্যারে, তাই আমরা পরিবর্তনশীল ব্যবহারbars_arrএটাকে গ্রহণ করতে।

ধাপ ৪ঃ এমভি গণনা করুন

bar1 = bars_arr[-2] # Get the previous K-line data
bar2 = bars_arr[-3] # get the previous K-line data
# Calculate the value of mov_mid
mov_mid = (bar1['High'] + bar1['Low']) / 2-(bar2['High'] + bar2['Low']) / 2
if bar1['High'] != bar1['Low']: # If the dividend is not 0
     # Calculate the value of ratio
     ratio = (bar1['Volume'] / 10000) / (bar1['High']-bar1['Low'])
else:
     ratio = 0
# If the value of ratio is greater than 0
if ratio> 0:
     emv = mov_mid / ratio
else:
     emv = 0

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

ধাপ ৫ঃ অর্ডার দেওয়া

current_price = bars_arr[-1]['Close'] # latest price
position = get_position() # Get the latest position
if position> 0: # If you are holding long positions
    if emv <0: # If the current price is less than teeth
        exchange.SetDirection("closebuy") # Set the trading direction and type
        exchange.Sell(round(current_price-0.2, 2), 1) # close long position
if position <0: # If you are holding short positions
    if emv> 0: # If the current price is greater than the teeth
        exchange.SetDirection("closesell") # Set the trading direction and type
        exchange.Buy(round(current_price + 0.2, 2), 1) # close short position
if position == 0: # If there is no holding position
    if emv> 0: # If the current price is greater than the upper lip
        exchange.SetDirection("buy") # Set the trading direction and type
        exchange.Buy(round(current_price + 0.2, 2), 1) # open long position
    if emv <0: # if the current price is smaller than the chin
        exchange.SetDirection("sell") # Set the trading direction and type
        exchange.Sell(round(current_price-0.2, 2), 1) # open short position

অর্ডার স্থাপন করার আগে, আমরা দুটি তথ্য নির্ধারণ করতে হবে, এক অর্ডার মূল্য এবং অন্যান্য বর্তমান অবস্থান অবস্থা. একটি অর্ডার স্থাপন মূল্য খুব সহজ, শুধু বর্তমান বন্ধ মূল্য যোগ বা বৈচিত্র্য সর্বনিম্ন পরিবর্তন মূল্য বিয়োগ করতে ব্যবহার করুন. যেহেতু আমরা ব্যবহার করেছিget_positionঅবশেষে, অবস্থান EMV এবং শূন্য অক্ষের মধ্যে অবস্থানের সম্পর্ক অনুযায়ী খোলা এবং বন্ধ করা হয়।

কৌশল ব্যাকটেস্ট

ব্যাকটেস্ট কনফিগারেশন

img

ব্যাকটেস্ট লগ

img img

মূলধন কার্ভ

img

সম্পূর্ণ কৌশল

# Backtest configuration
'''backtest
start: 2019-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''


def get_position():
     position = 0 # The number of assigned positions is 0
     position_arr = _C(exchange.GetPosition) # Get array of positions
     if len(position_arr)> 0: # If the position array length is greater than 0
         for i in position_arr: # Traverse the array of positions
             if i['ContractType'] =='IH000': # If the position symbol is equal to the subscription symbol
                 if i['Type']% 2 == 0: # if it is long position
                     position = i['Amount'] # Assign a positive number of positions
                 else:
                     position = -i['Amount'] # Assign the number of positions to be negative
     return position # return position quantity


# Strategy main function
def onTick():
     # retrieve data
     exchange.SetContractType('IH000') # Subscribe to futures
     bars_arr = exchange.GetRecords() # Get K-line array
     if len(bars_arr) <10: # If the number of K lines is less than 10
         return

     # Calculate emv
     bar1 = bars_arr[-2] # Get the previous K-line data
     bar2 = bars_arr[-3] # get the previous K-line data
     # Calculate the value of mov_mid
     mov_mid = (bar1['High'] + bar1['Low']) / 2-(bar2['High'] + bar2['Low']) / 2
     if bar1['High'] != bar1['Low']: # If the dividend is not 0
          # Calculate the value of ratio
          ratio = (bar1['Volume'] / 10000) / (bar1['High']-bar1['Low'])
     else:
          ratio = 0
     # If the value of ratio is greater than 0
     if ratio> 0:
          emv = mov_mid / ratio
     else:
          emv = 0

     # Placing orders
     current_price = bars_arr[-1]['Close'] # latest price
     position = get_position() # Get the latest position
     if position> 0: # If you are holding long positions
          if emv <0: # If the current price is less than teeth
               exchange.SetDirection("closebuy") # Set the trading direction and type
               exchange.Sell(round(current_price-0.2, 2), 1) # close long position
     if position <0: # If you are holding short positions
          if emv> 0: # If the current price is greater than the teeth
               exchange.SetDirection("closesell") # Set the trading direction and type
               exchange.Buy(round(current_price + 0.2, 2), 1) # close short position
     if position == 0: # If there is no holding position
          if emv> 0: # If the current price is greater than the upper lip
               exchange.SetDirection("buy") # Set the trading direction and type
               exchange.Buy(round(current_price + 0.2, 2), 1) # open long position
     if emv <0: # if the current price is smaller than the chin
               exchange.SetDirection("sell") # Set the trading direction and type
               exchange.Sell(round(current_price-0.2, 2), 1) # open short position

# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

সমগ্র কৌশলটি প্রকাশিত হয়েছেFMZ.COMওয়েবসাইট, এবং এটি কপি ক্লিক করে ব্যবহার করা যেতে পারে.https://www.fmz.com/strategy/213636

সংক্ষেপে

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


সম্পর্কিত

আরো