دوسرے تکنیکی اشارے کے برعکس ،
سادہ اتار چڑھاؤ ای ایم وی کو مساوی حجم چارٹ اور کمپریسڈ چارٹ کے اصول کے مطابق ڈیزائن کیا گیا ہے۔ اس کا بنیادی تصور یہ ہے کہ: مارکیٹ کی قیمت صرف اس وقت بہت زیادہ توانائی استعمال کرے گی جب رجحان بدل جاتا ہے یا بدلنے والا ہے ، اور بیرونی کارکردگی یہ ہے کہ تجارتی حجم بڑا ہوجاتا ہے۔ جب قیمت بڑھ رہی ہے تو ، اس کے فروغ کے اثر کی وجہ سے یہ زیادہ توانائی استعمال نہیں کرے گی۔ اگرچہ یہ خیال اس نظریے کے برعکس ہے کہ مقدار اور قیمت دونوں میں اضافہ ہوتا ہے ، لیکن اس کی اپنی منفرد خصوصیات ہیں۔
مرحلہ 1: mov_mid کا حساب لگائیں
ان میں ، TH دن کی سب سے زیادہ قیمت کی نمائندگی کرتا ہے ، TL دن کی سب سے کم قیمت کی نمائندگی کرتا ہے ، YH پچھلے دن کی سب سے زیادہ قیمت کی نمائندگی کرتا ہے ، اور YL پچھلے دن کی سب سے کم قیمت کی نمائندگی کرتا ہے۔ پھر اگر MID > 0 کا مطلب ہے کہ آج کی اوسط قیمت کل کی اوسط قیمت سے زیادہ ہے۔
مرحلہ 2: تناسب کا حساب لگائیں
ان میں سے، ٹی وی او ایل دن کے تجارتی حجم کی نمائندگی کرتا ہے، TH دن کی سب سے زیادہ قیمت کی نمائندگی کرتا ہے، اور TL دن کی سب سے کم قیمت کی نمائندگی کرتا ہے.
مرحلہ 3: EMV کا حساب لگائیں
ای ایم وی کے مصنف کا خیال ہے کہ بڑے پیمانے پر اضافے کے ساتھ توانائی کی تیزی سے کمی ہوتی ہے ، اور اضافہ اکثر زیادہ دیر تک نہیں رہتا ہے۔ اس کے برعکس ، اعتدال پسند حجم ، جو ایک خاص مقدار میں توانائی کی بچت کرسکتا ہے ، اکثر اضافے کو زیادہ دیر تک جاری رکھتا ہے۔ ایک بار جب ایک عروج کا رجحان تشکیل دیا جاتا ہے تو ، کم تجارتی حجم قیمتوں کو اوپر دھکیل سکتا ہے ، اور ای ایم وی کی قیمت میں اضافہ ہوگا۔ ایک بار جب ڈاؤن ٹرینڈ مارکیٹ تشکیل دی جاتی ہے تو ، اس کے ساتھ اکثر لامحدود یا چھوٹی کمی ہوتی ہے ، اور ای ایم وی کی قیمت میں کمی واقع ہوگی۔ اگر قیمت اتار چڑھاؤ والی مارکیٹ میں ہے یا قیمتوں میں اضافے اور گرنے کے ساتھ ہی ایک بڑی مقدار ہوتی ہے تو ، ای ایم وی کی قیمت بھی صفر کے قریب ہوگی۔ لہذا آپ کو معلوم ہوگا کہ ای ایم وی زیادہ تر مارکیٹ میں صفر محور سے نیچے ہے ، جو اس اشارے کی ایک اہم خصوصیت بھی ہے۔ ایک اور نقطہ نظر سے ، ای ایم وی میگا اقدار اور منافع پیدا کرسکتا ہے۔
ای ایم وی کا استعمال بہت آسان ہے ، صرف یہ دیکھیں کہ آیا ای ایم وی صفر محور کو عبور کرتا ہے۔ جب ای ایم وی 0 سے نیچے ہوتا ہے تو ، یہ ایک کمزور مارکیٹ کی نمائندگی کرتا ہے۔ جب ای ایم وی 0 سے اوپر ہوتا ہے تو ، یہ ایک مضبوط مارکیٹ کی نمائندگی کرتا ہے۔ جب ای ایم وی منفی سے مثبت میں بدل جاتا ہے تو ، اسے خریدا جانا چاہئے۔ جب ای ایم وی مثبت سے منفی میں بدل جاتا ہے تو ، اسے فروخت کیا جانا چاہئے۔ اس کی خصوصیت یہ ہے کہ یہ نہ صرف مارکیٹ میں جھٹکے کی مارکیٹ سے بچ سکتا ہے ، بلکہ جب رجحان مارکیٹ شروع ہوتا ہے تو وقت پر مارکیٹ میں بھی داخل ہوسکتا ہے۔ تاہم ، چونکہ ای ایم وی قیمتوں میں تبدیلی کے وقت حجم میں تبدیلی کی عکاسی کرتا ہے ، اس کا اثر صرف درمیانی سے طویل مدتی رجحانات پر ہوتا ہے۔ قلیل مدتی یا نسبتا short مختصر تجارتی دوروں کے لئے ، ای ایم وی
مرحلہ 1: حکمت عملی کا فریم ورک لکھیں
# 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.
مرحلہ 2: پوزیشن ڈیٹا حاصل کریں
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: K لائن ڈیٹا حاصل کریں
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- لائن کے اعداد و شمار حاصل کرنے سے پہلے آپ کو پہلے ایک مخصوص تجارتی معاہدے کی رکنیت کرنی ہوگی،SetContractType
فنکشن سےFMZ.COM، اور معاہدہ کوڈ میں منتقل. اگر آپ معاہدے کے بارے میں دیگر معلومات جاننا چاہتے ہیں تو، آپ کو بھی اس ڈیٹا کو حاصل کرنے کے لئے ایک متغیر استعمال کر سکتے ہیں.GetRecords
فنکشن K لائن ڈیٹا حاصل کرنے کے لئے، کیونکہ واپس ایک صف ہے، تو ہم متغیر استعمالbars_arr
اسے قبول کرنے کے لئے.
مرحلہ 4: ایم وی وی کا حساب لگائیں
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
یہاں ، ہم ای ایم وی کی قیمت کا حساب لگانے کے لئے تازہ ترین قیمت کا استعمال نہیں کرتے ہیں ، بلکہ سگنل کو آؤٹ پٹ کرنے اور آرڈر جاری کرنے کے لئے ایک K لائن رکھنے کے لئے نسبتا lagging موجودہ K لائن کا استعمال کرتے ہیں۔ اس کا مقصد بیک ٹیسٹ کو حقیقی تجارت کے قریب تر بنانا ہے۔ ہم جانتے ہیں کہ اگرچہ مقداری تجارتی سافٹ ویئر اب بہت ترقی یافتہ ہے ، لیکن پھر بھی حقیقی قیمت ٹِک ماحول کا مکمل طور پر تقلید کرنا مشکل ہے ، خاص طور پر جب بیک ٹیسٹنگ کے ساتھ سامنا کرنا پڑتا ہے بار کی سطح کے لمبے اعداد و شمار ، لہذا اس سمجھوتہ کا طریقہ استعمال کیا جاتا ہے۔
مرحلہ 5: احکامات کی جگہ
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 اور صفر محور کے درمیان پوزیشن تعلقات کے مطابق کھول دیا اور بند کر دیا جاتا ہے.
بیک ٹیسٹ کی ترتیب
بیک ٹسٹ لاگ
دارالحکومت کا منحنی خطوط
# 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
اس کورس کے ذریعے ، ہم دیکھ سکتے ہیں کہ ای ایم وی عام تاجروں کے برعکس ہے ، لیکن یہ غیر معقول نہیں ہے۔ چونکہ ای ایم وی حجم کے اعداد و شمار کو متعارف کراتا ہے ، لہذا یہ دوسرے تکنیکی اشارے سے زیادہ موثر ہے جو قیمت کے پیچھے کیا ہے اس کا پتہ لگانے کے لئے قیمت کے حساب کتاب کا استعمال کرتے ہیں۔ ہر حکمت عملی کی مختلف خصوصیات ہیں۔ صرف مختلف حکمت عملیوں کے فوائد اور نقصانات کو مکمل طور پر سمجھنے اور کچرے کو ہٹانے اور اس کے جوہر کو نکالنے سے ہی ہم کامیابی سے آگے بڑھ سکتے ہیں۔