आर-ब्रेकर रणनीति को रिचर्ड साइडनबर्ग द्वारा विकसित किया गया था और 1994 में प्रकाशित किया गया था। इसे लगातार 15 वर्षों के लिए संयुक्त राज्य अमेरिका में
सरल शब्दों में, आर-ब्रेकर रणनीति एक मूल्य समर्थन और प्रतिरोध रणनीति है। यह कल की उच्चतम, निम्नतम और समापन कीमतों के आधार पर सात कीमतों की गणना करती हैः एक केंद्रीय मूल्य (पीवोट) और तीन समर्थन स्तर (एस 1 एस 2, एस 3), तीन प्रतिरोध स्तर (आर 1, आर 2, आर 3) । फिर वर्तमान मूल्य और इन समर्थन और प्रतिरोध स्तरों के बीच स्थिति संबंध के अनुसार, खरीदने और बेचने के लिए ट्रिगर स्थितियों का गठन करने के लिए, और एक निश्चित एल्गोरिथ्म समायोजन के माध्यम से, इन सात कीमतों के बीच की दूरी को समायोजित करें, लेनदेन के ट्रिगर मूल्य को आगे बदलें।
क्रय मूल्य के माध्यम से ब्रेक (प्रतिरोध स्तर r3) = कल की उच्चतम कीमत + 2 * (मध्य मूल्य - कल की सबसे कम कीमत) / 2
बिक्री मूल्य का अवलोकन (प्रतिरोध स्तर r2) = मध्य मूल्य + (कल की उच्चतम कीमत - कल की सबसे कम कीमत)
रिवर्स बिक्री मूल्य (प्रतिरोध स्तर r1) = 2 * केंद्र मूल्य - कल की सबसे कम कीमत
केंद्रीय मूल्य (पीवोट) = (कल की उच्चतम कीमत + कल की समापन कीमत + कल की सबसे कम कीमत) / 3
रिवर्स खरीद मूल्य (समर्थन स्तर s1) = 2 * केंद्रीय मूल्य - कल की उच्चतम कीमत
अवलोकन खरीद मूल्य (समर्थन स्तर s2) = केंद्रीय मूल्य - (कल की उच्चतम कीमत - कल की सबसे कम कीमत)
ब्रेक-थ्रू बिक्री मूल्य (समर्थन स्तर s3) = कल की सबसे कम कीमत - 2 * (कल की सबसे अधिक कीमत - मध्य मूल्य)
इससे हम देख सकते हैं कि आर-ब्रेकर रणनीति कल की कीमत के आधार पर ग्रिड जैसी मूल्य रेखा खींचती है, और इन मूल्य रेखाओं को दिन में एक बार अपडेट करती है। तकनीकी विश्लेषण में, समर्थन और प्रतिरोध स्तर, और दोनों की भूमिका को एक दूसरे में परिवर्तित किया जा सकता है। जब कीमत सफलतापूर्वक प्रतिरोध स्तर को तोड़ती है, तो प्रतिरोध स्तर समर्थन स्तर बन जाता है; जब कीमत सफलतापूर्वक समर्थन स्तर को तोड़ती है, तो समर्थन स्तर प्रतिरोध स्तर बन जाता है।
वास्तविक व्यापार में, ये समर्थन और प्रतिरोध स्तर व्यापारी को उद्घाटन और समापन पदों की दिशा और सटीक व्यापार बिंदुओं को इंगित करते हैं। विशिष्ट उद्घाटन और समापन स्थितियों वाले व्यापारी दिन के भीतर की कीमतों, केंद्रीय कीमतों, प्रतिरोध स्तरों और समर्थन स्तरों के अनुसार लचीले ढंग से अनुकूलित कर सकते हैं, और इन ग्रिड मूल्य रेखाओं के आधार पर पदों का प्रबंधन भी कर सकते हैं।
इसके बाद, आइए देखें कि आर-ब्रेकर रणनीति इन समर्थन और प्रतिरोध स्तरों का उपयोग कैसे करती है। इसका तर्क बिल्कुल जटिल नहीं है। यदि कोई होल्डिंग स्थिति नहीं है, तो ट्रेंड मोड में प्रवेश करें। जब कीमत ब्रेक-थ्रू खरीद मूल्य से अधिक हो, तो लंबी स्थिति खोलें; जब कीमत ब्रेक-थ्रू बिक्री मूल्य से कम हो, तो छोटी स्थिति खोलें।
खुली लंबी स्थितिः यदि कोई होल्डिंग स्थिति नहीं है और कीमत ब्रेकडाउन खरीद मूल्य से अधिक है
खुला शॉर्ट पोजीशनः यदि कोई होल्डिंग पोजीशन नहीं है और कीमत ब्रेकडाउन बिक्री मूल्य से कम है
बंद करें लंबी स्थितिः यदि आप एक लंबी स्थिति रखते हैं, और दिन की उच्चतम कीमत अवलोकन बिक्री मूल्य से अधिक है और कीमत उलट बिक्री मूल्य से कम है
बंद शॉर्ट पोजीशनः यदि आप शॉर्ट पोजीशन रखते हैं, और दिन की सबसे कम कीमत अवलोकन खरीद मूल्य से कम है और कीमत रिवर्स खरीद मूल्य से अधिक है
खुली लंबी स्थितिः यदि आप एक छोटी स्थिति रखते हैं, और दिन की सबसे कम कीमत अवलोकन खरीद मूल्य से कम है और कीमत रिवर्स खरीद मूल्य से अधिक है
खुली शॉर्ट पोजीशनः यदि आप एक लंबी पोजीशन रखते हैं, और दिन की उच्चतम कीमत अवलोकन बिक्री मूल्य से अधिक है और कीमत उलट बिक्री मूल्य से कम है
बंद लंबी स्थितिः यदि लंबी स्थिति रखी जाती है और कीमत ब्रेकडाउन बिक्री मूल्य से कम होती है
बंद शॉर्ट पोजीशनः यदि शॉर्ट पोजीशन रखी जाती है और कीमत ब्रेकडाउन खरीद मूल्य से अधिक होती है
यदि होल्डिंग पोजीशन हैं, तो यह रिवर्स मोड में प्रवेश करता है। जब होल्डिंग लॉन्ग पोजीशन होती है, और दिन की उच्चतम कीमत अवलोकन बिक्री मूल्य से अधिक होती है, और कीमत रिवर्स बिक्री मूल्य से नीचे गिर जाती है, तो लंबी स्थिति बंद हो जाएगी और शॉर्ट पोजीशन सिंक्रोनस रूप से खुली होगी। जब होल्डिंग शॉर्ट पोजीशन होती है, और दिन की सबसे कम कीमत अवलोकन खरीद मूल्य से कम होती है, और कीमत रिवर्स खरीद मूल्य के माध्यम से टूट जाती है, तो शॉर्ट पोजीशन बंद हो जाएगी और लंबी पोजीशन खुली होगी।
'''backtest
start: 2019-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 5m
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''
# Strategy main function
def onTick():
# retrieve data
exchange.SetContractType(contract_type) # Subscribe to futures products
bars_arr = exchange.GetRecords(PERIOD_D1) # Get daily K line array
if len(bars_arr) < 2: # If the number of K lines is less than 2
return
yesterday_open = bars_arr[-2]['Open'] # Yesterday's opening price
yesterday_high = bars_arr[-2]['High'] # Yesterday's highest price
yesterday_low = bars_arr[-2]['Low'] # Yesterday's lowest price
yesterday_close = bars_arr[-2]['Close'] # Yesterday's closing price
# Calculation
pivot = (yesterday_high + yesterday_close + yesterday_low) / 3 # Pivot point
r1 = 2 * pivot - yesterday_low # Resistance level 1
r2 = pivot + (yesterday_high - yesterday_low) # Resistance level 2
r3 = yesterday_high + 2 * (pivot - yesterday_low) # Resistance level 3
s1 = 2 * pivot - yesterday_high # Support level 1
s2 = pivot - (yesterday_high - yesterday_low) # Support level 2
s3 = yesterday_low - 2 * (yesterday_high - pivot) # Support level 3
today_high = bars_arr[-1]['High'] # Today's highest price
today_low = bars_arr[-1]['Low'] # Today's lowest price
current_price = _C(exchange.GetTicker).Last # Current price
# Get positions
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:
if i['ContractType'] == contract_type: # If the position variety equals the subscription variety
if i['Type'] % 2 == 0: # If it is long position
position = i['Amount'] # The number of assigned positions is positive
else:
position = -i['Amount'] # The number of assigned positions is negative
profit = i['Profit'] # Get position profit and loss
else:
position = 0 # The number of assigned positions is 0
profit = 0 # The value of the assigned position is 0
if position == 0: # If there is no position
if current_price > r3: # If the current price is greater than Resistance level 3
exchange.SetDirection("buy") # Set transaction direction and type
exchange.Buy(current_price + 1, 1) # open long position
if current_price < s3: # If the current price is less than Support level 3
exchange.SetDirection("sell") # Set transaction direction and type
exchange.Sell(current_price - 1, 1) # open short position
if position > 0: # if holding long position
if today_high > r2 and current_price < r1 or current_price < s3: # If today's highest price is greater than Resistance level 2, and the current price is less than Resistance level 1
exchange.SetDirection("closebuy") # Set transaction direction and type
exchange.Sell(current_price - 1, 1) # close long position
exchange.SetDirection("sell") # Set transaction direction and type
exchange.Sell(current_price - 1, 1) # open short position
if position < 0: # if holding short position
if today_low < s2 and current_price > s1 or current_price > r3: # If today's lowest price is less than Support level 2, and the current price is greater than Support level 1
exchange.SetDirection("closesell") # Set transaction direction and type
exchange.Buy(current_price + 1, 1) # close short position
exchange.SetDirection("buy") # Set transaction direction and type
exchange.Buy(current_price + 1, 1) # open long position
# Program main function
def main():
while True: # loop
onTick() # Execution strategy main function
Sleep(1000) # Sleep for 1 second
पूरी रणनीति को एफएमजेड प्लेटफॉर्म पर प्रकाशित किया गया है (FMZ.COM), इसे सीधे कॉपी करने के लिए नीचे दिए गए लिंक पर क्लिक करें, और आप बिना कॉन्फ़िगरेशन के बैकटेस्ट कर सकते हैंःhttps://www.fmz.com/strategy/187009
आर-ब्रेकर रणनीति लोकप्रिय होने का कारण यह है कि यह विशुद्ध रूप से ट्रेंड ट्रैकिंग रणनीति नहीं है, बल्कि ट्रेंड अल्फा और रिवर्स अल्फा दोनों आय अर्जित करने के लिए एक यौगिक रणनीति है। इस लेख में रणनीति केवल उचित मापदंडों और किस्मों को अनुकूलित किए बिना प्रदर्शन के लिए है। इसके अलावा, पूरी रणनीति में स्टॉप लॉस फ़ंक्शन भी शामिल होना चाहिए, और इच्छुक मित्र इसे सुधार सकते हैं।