যদিও সম্পূর্ণ স্বয়ংক্রিয় ট্রেডিংয়ের জন্য প্রোগ্রাম লেখেন এমন আরও বেশি সংখ্যক ব্যবসায়ী রয়েছে, তবে ব্যবসায়ীদের বৃহত্তর গ্রুপটি এখনও ম্যানুয়াল ট্রেডার। প্রকৃতপক্ষে, ম্যানুয়াল বিষয়গত ব্যবসায়ীরা তাদের বিষয়গত ট্রেডিংয়ে সহায়তা করার জন্য ছোট সরঞ্জামও লিখতে পারে। উদাহরণস্বরূপ, কখনও কখনও আপনি একটি ভাল এন্ট্রি পজিশন খুঁজে পান এবং প্রাথমিক পজিশনে একটি নির্দিষ্ট স্টপ লস এবং ট্রেলিং মুনাফা সেট করার পরিকল্পনা করেন। তারপরে পরবর্তী বাজার পর্যবেক্ষণের মতো আরও শক্তি-সমৃদ্ধ জিনিসগুলি বাদ দিন, আপনার নিজস্ব প্রতিষ্ঠিত স্টপ-লস এবং লাভের পরিকল্পনাটি সঠিকভাবে অনুসরণ করুন এবং প্রোগ্রামটিকে আপনার জন্য বাজার পর্যবেক্ষণ করতে দিন। হারাতে স্টপ লস, ম্যানুয়াল ট্রেডিংয়ে সহায়তা করার জন্য জয়ের জন্য ট্রেলিং মুনাফা।
পাইন ভাষা ব্যবহার করে এই ধরনের প্রয়োজনীয়তা ডিজাইন করার কৌশলটি খুব সহজ। প্রয়োজনীয়তা অনুযায়ী ফাংশনটি অর্জনের জন্য নিম্নলিখিত পরামিতিগুলি ডিজাইন করা দরকারঃ
/*backtest
start: 2022-09-24 00:00:00
end: 2022-09-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["v_input_1",20],["v_input_2",0],["v_input_4",50],["v_input_5",20],["RunMode",1,358374],["ZPrecision",0,358374],["XPrecision",3,358374]]
*/
strategy("Tracking loss and profit stopping entrustment", overlay = true)
varip targetPrice = na
varip high_lowPrice = na
varip isTrade = false
varip isAlert = false
varip isAlertMinTick = false
varip isAlertFinished = false
varip offset = input(30, "offset", "Tracking stop loss and stop profit offset")
varip limit = input(-1, "limit", "Initial opening price: - 1 means no opening, 0 means immediate opening, and other specific values are price limits")
varip amount = input(1, "amount", "amount of opening positions")
varip loss = input(30, "loss", "stop loss")
varip targetOffset = input(30, "targetOffset", "trigger tracking profit and loss stop offset")
varip minTick = input(1, "minTick", "the minimum unit of price fluctuation")
tradeType = input.string("long", "direction", tooltip="order direction, long: go long, short: go short", options=["long", "short"])
if not barstate.ishistory and not isAlertMinTick
runtime.log("check whether syminfo.mintick is correct! syminfo.mintick:", syminfo.mintick, "#FF0000")
if syminfo.mintick < minTick
runtime.error("system syminfo.mintick < minTick parameter", "#FF0000")
isAlertMinTick := true
if not barstate.ishistory and limit == -1 and not isAlert
runtime.log("No open price is set, current limit is -1 (to prevent false openings, initial default limit is -1), openings are prohibited", "#FF0000")
isAlert := true
if isTrade and strategy.position_size == 0 and not isAlertFinished
runtime.log("All order processes executed, position is 0", "#FF0000")
isAlertFinished := true
if not barstate.ishistory and not isTrade and limit != -1
if limit == 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount)
else if limit > 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount, limit=limit)
if tradeType == "long"
targetPrice := (limit == 0 ? close : limit) + targetOffset
else
targetPrice := (limit == 0 ? close : limit) - targetOffset
strategy.exit("exit", "open", amount, loss=loss, trail_price=targetPrice, trail_offset=offset)
runtime.log("The price per point is:", syminfo.mintick, ", current close:", close)
isTrade := true
if ((close > targetPrice and strategy.position_size > 0) or (close < targetPrice and strategy.position_size < 0)) and not barstate.ishistory
high_lowPrice := na(high_lowPrice) ? close : high_lowPrice
if strategy.position_size > 0
high_lowPrice := close > high_lowPrice ? close : high_lowPrice
else
high_lowPrice := close < high_lowPrice ? close : high_lowPrice
plot(targetPrice, "trail_price trigger line")
plot(strategy.position_size!=0 ? high_lowPrice : na, "current highest/lowest price")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "moving stop loss trigger line")
কৌশলটির নকশা জটিল নয়, তবে এটিকে
লক্ষ্য করুন যে স্টপ লস পয়েন্ট (মিনিটিক) এবং অফসেট পয়েন্ট (মিনিটিক) তে প্রকাশিত হয়। টার্গেটঅফসেট ট্রেলিং স্টপ লাভ ট্রিগার লাইনের অফসেটটি মূল্য দূরত্বের ক্ষেত্রে প্রকাশিত হয় (উদাহরণস্বরূপ, 30 এ সেট করা হয়, যা দূরত্বের জন্য RMB30) । যখন মিনিটিক 1, 30 মানে দূরত্বের জন্য RMB30।
এই কমিশন কৌশলটি কেবলমাত্র প্রাথমিক বেস পজিশনগুলিকে দীর্ঘ হতে দেয় না, তবে প্রাথমিক বেস পজিশনগুলিও শর্ট হতে দেয়। তারপরে স্টপ লস এবং ট্রেলিং মুনাফা শর্ট দিকের দিকে পরিচালিত হয়।
আসুন নিম্নরূপ নকশা বাস্তবায়ন প্রদর্শন করা যাকঃ
1. যখন কৌশলটি চলমান থাকে, তখন বেস পজিশনটি অবিলম্বে খোলা হবে এবং প্রবেশ করা হবে, এবং তারপরে স্টপ লস এবং ট্র্যাকিং স্টপ প্রফিট প্যারামিটার অনুযায়ী সেট করা হবে।
ডাইরেকশন লং এ সেট করা আছে, লিমিট প্যারামিটার ০ এ সেট করা আছে, অর্থাৎ স্ট্র্যাটেজি চালু হলে তাৎক্ষণিকভাবে লং এ যেতে দিন, পরিমাণ ১ এ সেট করা আছে, অর্থাৎ স্ট্র্যাটেজি ১টি কন্ট্রাক্টের পজিশন খুলবে।
2. সীমা প্যারামিটার নির্দিষ্ট করুন, প্রবেশ মূল্য নির্দিষ্ট করুন
অন্যান্য প্যারামিটার সেটিংস অপরিবর্তিত থাকে, তবে নির্দিষ্ট সীমা প্যারামিটার মূল্য হলঃ 1276
3. ডিফল্ট সীমা প্যারামিটার হল -1, যা কিছুই পরিচালনা করে না এবং দুর্ঘটনাক্রমে অবস্থানের উদ্বোধন রোধ করে
পাইন ভাষার কৌশল ব্যবহার করার সময়, মিনটিক ডেটাতে বিশেষ মনোযোগ দেওয়া গুরুত্বপূর্ণ। সিস্টেমে মূল্য মিনটিকের সঠিক সংখ্যাটি প্যারামিটারে
প্যারামিটার
ঠিক আছে, উপরের এই আধা স্বয়ংক্রিয় কমিশন কৌশল সম্পূর্ণ নকশা, যদিও আমি বাস্তব বট ট্রেডিং জন্য এটি ব্যবহার. কিন্তু এই ধরনের সরঞ্জামগুলি আপনার নিজের ট্রেডিং অভ্যাস অনুযায়ী ব্যবহার করা আবশ্যক বুঝতে, নির্দিষ্ট পরিবর্তন, অপ্টিমাইজেশান আপনার নিজের দ্বারা সম্পন্ন করা যেতে পারে. এখানে কৌশল কোড শুধুমাত্র পাবলিক শেয়ারিং জন্য, বিনিময় শেখার নকশা এবং যুক্তি.
যেমন আমরা দেখতে পাচ্ছি, পাইন ভাষা ব্যবহার করা খুব সহজ, এবং এটি সুবিধাজনক এবং শিখতে সহজ। আমরা পাইন ভাষা ব্যবহার করতে পারি জটিল প্রোগ্রামিংয়ের চিন্তা না করে দ্রুত আমাদের প্রয়োজনীয় সরঞ্জামগুলি ডিজাইন করতে এবং পাইন ভাষা ব্যবহার করতে পারি FMZ পরিমাণগত ট্রেডিং প্ল্যাটফর্মে পরিমাণগত ট্রেডিং সহজ করতে।