कुछ लोगों का मानना है कि बाजार में सबसे बड़ा विचलन सुबह के समय होता है। लगभग 30 मिनट के बाद, बाजार ने सभी प्रकार की रात भर की जानकारी को पूरी तरह से पच लिया है, और मूल्य प्रवृत्ति तर्कसंगत होगी और सामान्य हो जाएगी। दूसरे शब्दों मेंः पहले 30 मिनट या उससे अधिक समय में बाजार की प्रवृत्ति मूल रूप से आज के समग्र व्यापार पैटर्न का गठन करती है।
इस समय उत्पन्न सापेक्ष उच्च और निम्न बिंदु
हालांकि ब्रेकथ्रू रणनीति ट्रेंड बनने के तुरंत बाद बाजार में प्रवेश कर सकती है। लेकिन यह लाभ भी एक दोधारी तलवार है। संवेदनशील प्रविष्टि के परिणामस्वरूप, मूल्य ब्रेकथ्रू विफल रहा। इसलिए स्टॉप लॉस सेट करना आवश्यक है। साथ ही, जीत और हार के रणनीति तर्क को प्राप्त करने के लिए, लाभ लेना निर्धारित किया जाना चाहिए।
बारी-बारी से खोलेंःfmz.comवेबसाइट> लॉगिन> डैशबोर्ड > रणनीति पुस्तकालय > नई रणनीति > पायथन भाषा का चयन करने और रणनीति लिखना शुरू करने के लिए ऊपरी दाएं कोने में ड्रॉप-डाउन मेनू पर क्लिक करें. नीचे दिए गए कोड में टिप्पणियों पर ध्यान दें.
# Strategy main function
def onTick():
pass
# Program entry
def main():
while True: # enter infinite loop mode
onTick() # execute strategy main function
Sleep(1000) # Sleep for 1 second
एक रणनीति ढांचा लिखना, यह पिछले अध्याय में सीखा गया है, एक हैonTick
कार्य, और अन्य हैmain
कार्य, जिसमेंonTick
समारोह में एक अंतहीन लूप में निष्पादित किया जाता हैmain
function.
up_line = 0 # upper rail
down_line = 0 # lower rail
trade_count = 0 # Number of transactions on the day
चूंकि ऊपरी और निचले रेल केवल 09:30 के समय पर गिने जाते हैं, और बाकी समय में कोई आंकड़े नहीं किए जाते हैं, इसलिए हमें इन दो चरों को लूप के बाहर लिखने की आवश्यकता है। इसके अलावा, एक दिन के व्यापार में लेनदेन की संख्या को सीमित करने के लिए,trade_count
चर भी लूप के बाहर लिखा जाता है।onTick
रणनीति, आप का उपयोग करने की जरूरत हैglobal
संदर्भ के लिए कीवर्ड।
exchange.SetContractType("rb888") # Subscribe to futures varieties
bar_arr = _C(exchange.GetRecords, PERIOD_M1) # Get 1-minute K line array
current_close = bar_arr[-1]['Close'] # Get the latest price
if len(bar_arr) <50: # If less than 50 k line bars
return # Return to continue waiting for data
डेटा प्राप्त करने के लिए सबसे पहलेSetContractType
एफएमजेड प्लेटफॉर्म एपीआई में फ्यूचर्स किस्मों की सदस्यता लेने के लिए कार्य करें और फिरGetRecords
के लाइन सरणी प्राप्त करने के लिए समारोह. आप भी के लाइन सरणी निर्दिष्ट में पारित कर सकते हैंPERIOD_M11
मिनट जब उपयोगGetRecords
function.
अगला चरण नवीनतम मूल्य प्राप्त करना है, जिसका उपयोग वर्तमान मूल्य और ऊपरी और निचले रेल के बीच स्थिति संबंध निर्धारित करने के लिए किया जाता है। उसी समय, खरीद या बिक्री फ़ंक्शन का उपयोग करके ऑर्डर देते समय, आपको निर्दिष्ट मूल्य में पारित करने की आवश्यकता होती है। इसके अलावा, k लाइन बार की संख्या को फ़िल्टर करना न भूलें, क्योंकि यदि k लाइन बार की संख्या बहुत कम है, तो एक त्रुटि होगी जिसे गणना नहीं की जा सकती है।
def current_time():
current_time = bar_arr[-1]['Time'] # Get current K-line timestamp
time_local = time.localtime(current_time / 1000) # Processing timestamp
hour = time.strftime("%H", time_local) # Format the timestamp and get the hour
minute = time.strftime("%M", time_local) # Format the timestamp and get the minute
if len(minute) == 1:
minute = "0" + minute
return int(hour + minute)
ऊपर और नीचे की रेल की गणना करते समय और ऑर्डर देते समय यह तय करना आवश्यक होता है कि वर्तमान समय हमारे द्वारा निर्दिष्ट ट्रेडिंग समय से मेल खाता है या नहीं, इसलिए निर्णय को सुविधाजनक बनाने के लिए, हमें वर्तमान के-लाइन के विशिष्ट घंटों और मिनटों से निपटने की आवश्यकता है।
global up_line, down_line, trade_count # Introduce global variables
current_time = current_time() # processing time
if current_time == 930: # If the latest K-line time is 09:30
up_line = TA.Highest(bar_arr, 30,'High') + count # The highest price of the first 30 k line bars
down_line = TA.Lowest(bar_arr, 30,'Low')-count # The lowest price of the first 30 ke line bars
trade_count = 0 # Reset the number of transactions to 0
position_arr = _C(exchange.GetPosition) # Get position array
if len(position_arr) > 0: # If the position array length is greater than 0
position_arr = position_arr[0] # Get position dictionary data
if position_arr['ContractType'] =='rb888': # If the position symbol is equal to the subscription symbol
if position_arr['Type']% 2 == 0: # If it is a long position
position = position_arr['Amount'] # The number of assigned positions is a positive number
else:
position = -position_arr['Amount'] # Assign a negative number of positions
profit = position_arr['Profit'] # Get position profit and loss
else:
position = 0 # The number of assigned positions is 0
profit = 0 # Assign position profit and loss to 0
स्थिति की स्थिति रणनीति तर्क शामिल है. हमारे पहले दस सबक हमेशा आभासी होल्डिंग पदों का इस्तेमाल किया है, लेकिन एक वास्तविक व्यापार वातावरण में, यह सबसे अच्छा हैGetPosition
वास्तविक स्थिति की जानकारी प्राप्त करने के लिए कार्य, जिसमें शामिल हैंः स्थिति की दिशा, स्थिति लाभ और हानि, पदों की संख्या, आदि।
# If it is close to market closing or reach taking profit and stopping loss
if current_time > 1450 or profit > stop * 3 or profit < -stop:
if position > 0: # If holding a long position
exchange.SetDirection("closebuy") # Set transaction direction and type
exchange.Sell(current_close-1, 1) # Close long order
elif position <0: # If holding an empty order
exchange.SetDirection("closesell") # Set transaction direction and type
exchange.Buy(current_close + 1, 1) # Close short order
# If there is no current position, and it is less than the specified number of transactions, and within the specified trading time
if position == 0 and trade_count < 2 and 930 < current_time < 1450:
if current_close > up_line: # If the price is greater than the upper line
exchange.SetDirection("buy") # Set transaction direction and type
exchange.Buy(current_close + 1, 1) # Open long order
trade_count = trade_count + 1 # Increase the number of transactions
elif current_close < down_line: # If the price is less than the lower line
exchange.SetDirection("sell") # Set transaction direction and type
exchange.Sell(current_close-1, 1) # Open a short order
trade_count = trade_count + 1 # Increase the number of transactions
रणनीति में तार्किक त्रुटियों से बचने के लिए, उद्घाटन स्थिति तर्क से पहले समापन स्थिति तर्क लिखना सबसे अच्छा है। इस रणनीति में, स्थिति खोलते समय, पहले वर्तमान स्थिति की स्थिति निर्धारित करें, चाहे वह निर्दिष्ट ट्रेडिंग समय के भीतर हो, और फिर वर्तमान मूल्य और ऊपरी और निचले रेल के बीच संबंध निर्धारित करें। एक स्थिति को बंद करने के लिए पहले यह निर्धारित करना है कि क्या यह बाजार के बंद होने के करीब है, या क्या यह लाभ लेने और हानि रोकने की स्थिति तक पहुंच गया है।
HANS123 एक बहुत ही विशिष्ट और बहुत प्रभावी स्वचालित ट्रेडिंग रणनीति है। इसका मूल सिद्धांत एक निश्चित अवधि के भीतर पिछले बाजार के उच्चतम या निम्नतम मूल्य को तोड़ना है। प्रणाली को स्थिर लाभप्रदता वाले लगभग सभी विदेशी मुद्रा उत्पादों पर लागू किया जा सकता है। यह एक प्रारंभिक प्रवेश ट्रेडिंग मोड भी है, जिसमें उपयुक्त फ़िल्टरिंग तकनीक है, या जीतने की संभावनाओं में सुधार कर सकता है।
पूर्ण रणनीति स्रोत कोड की प्रतिलिपि बनाने के लिए क्लिक करेंhttps://www.fmz.com/strategy/179805बिना विन्यास के बैकटेस्ट
उपरोक्त HANS123 रणनीति का सिद्धांत और कोड विश्लेषण है। वास्तव में, HANS123 रणनीति बाजार में प्रवेश करने के लिए एक बेहतर समय प्रदान करती है। आप बेहतर परिणाम प्राप्त करने के लिए लाभ लेने और हानि रोकने जैसे मापदंडों को अनुकूलित करने के लिए बाजार की अपनी समझ और लेनदेन की समझ के अनुसार या विविधता की अस्थिरता के अनुसार बाहर निकलने के समय में भी सुधार कर सकते हैं।