কিছু লোক বিশ্বাস করে যে সকালে বাজার খোলার সময় যখন বাজারে সবচেয়ে বড় বিচ্যুতি হয়। প্রায় 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
ফাংশন K-লাইন অ্যারে পেতে. আপনি এছাড়াও K-লাইন অ্যারে নির্দিষ্ট পাস করতে পারেনPERIOD_M11
মিনিট যখন ব্যবহারGetRecords
function.
পরবর্তী ধাপটি হল সর্বশেষ মূল্য পাওয়া, যা বর্তমান মূল্য এবং উপরের এবং নীচের রেলগুলির মধ্যে অবস্থানের সম্পর্ক নির্ধারণের জন্য ব্যবহৃত হয়। একই সময়ে, কিনুন বা বিক্রয় ফাংশন ব্যবহার করে অর্ডার দেওয়ার সময়, আপনাকে নির্দিষ্ট মূল্যটি পাস করতে হবে। এছাড়াও, কে লাইন বারগুলির সংখ্যা ফিল্টার করতে ভুলবেন না, কারণ যদি কে লাইন বারগুলির সংখ্যা খুব কম হয় তবে একটি ত্রুটি হবে যা গণনা করা যায় না।
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 কৌশল বাজারে প্রবেশের জন্য একটি ভাল সময় প্রদান করে। আপনি বাজারের আপনার বোঝার এবং লেনদেনের বোঝার অনুযায়ী প্রস্থান সময় উন্নত করতে পারেন, অথবা বিভিন্ন অস্থিরতা অনুযায়ী ভাল ফলাফল অর্জনের জন্য মুনাফা গ্রহণ এবং ক্ষতি বন্ধ মত পরামিতি অপ্টিমাইজ করার জন্য।