যদিও ক্রমবর্ধমান সংখ্যক ব্যবসায়ী সম্পূর্ণরূপে স্বয়ংক্রিয়ভাবে ট্রেডিং করছেন, তবে বৃহত্তর সংখ্যক ব্যবসায়ী এখনও ম্যানুয়াল ব্যবসায়ী। প্রকৃতপক্ষে, ম্যানুয়াল সাবজেক্টিভ ট্রেডাররাও কিছু টুলস লিখে তাদের সাবজেক্টিভ ট্রেডিংয়ে সহায়তা করতে পারে। উদাহরণস্বরূপ, কখনও কখনও একটি ভাল প্রবেশের অবস্থান খুঁজে পাওয়া যায়, প্রাথমিক অবস্থানের জন্য স্থির স্টপ লস সেট করার পরিকল্পনা করা হয়, ট্র্যাকিং স্টপগুলি। তারপর পরবর্তী ডাইসগুলির মতো তুলনামূলকভাবে ব্যয়বহুল জিনিসগুলি এড়ানো হয়, সম্পূর্ণরূপে তাদের প্রচলিত স্টপ লস ডাইস পরিকল্পনা অনুসরণ করে, প্রোগ্রামটিকে তাদের ডাইসগুলিকে সহায়তা করতে দেয়। স্টপ লস হারিয়েছে, জিতছে ট্র্যাকিং স্টপ হারিয়েছে।
পাইন ভাষা ব্যবহার করে এই ধরনের চাহিদা ডিজাইন করার কৌশলটি খুব সহজ, যা চাহিদা অনুযায়ী কার্যকারিতা বাস্তবায়নের জন্য নিম্নলিখিত পরামিতিগুলি ডিজাইন করতে হবেঃ
১, অফসেটঃ ট্র্যাকিং স্টপলাইন ট্রিগার করার সময়, স্টপলাইনটির বিচ্যুতির দূরত্ব নির্ধারণের জন্য সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্যের বিচ্যুতি। ২.সীমাঃ প্যারামিটার যা নিয়ন্ত্রণ করে A. প্রাথমিক অবলম্বন সরাসরি ক্রয়; B. নির্দিষ্ট মূল্যের জন্য অপেক্ষা করা; C. কিছুই না করা। ৩,অমাউন্টঃ নিম্ন স্তরের স্টকের ওপেন স্টকের সময় একক পরিমাণ। ৪, লস: স্টপ লস পয়েন্টের সংখ্যা। ৫. টার্গেট অফসেটঃ ট্র্যাকিং স্টপ ট্রিগার করার সময় স্টপ স্টপ স্টপ স্টপ স্টপ স্টপ স্টপ স্টপ স্টপ স্টপ। ৬ মিনিট টিকঃ দাম বেড়েছে। ৭,direction: নীচের স্তর খোলা স্তর দিক।
/*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("跟踪止损止盈委托", 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", "跟踪止损止盈偏移")
varip limit = input(-1, "limit", "初始开仓价格,-1为不开仓,0为立即开仓,其它具体数值为限价价格")
varip amount = input(1, "amount", "开仓量")
varip loss = input(30, "loss", "止损")
varip targetOffset = input(30, "targetOffset", "触发跟踪止盈止损偏移量")
varip minTick = input(1, "minTick", "价格一跳")
tradeType = input.string("long", "direction", tooltip="下单方向,long做多,short做空", options=["long", "short"])
if not barstate.ishistory and not isAlertMinTick
runtime.log("检查syminfo.mintick是否正确!syminfo.mintick:", syminfo.mintick, "#FF0000")
if syminfo.mintick < minTick
runtime.error("系统syminfo.mintick < minTick参数", "#FF0000")
isAlertMinTick := true
if not barstate.ishistory and limit == -1 and not isAlert
runtime.log("没有设置开仓价格,当前limit为-1(防止误开仓,初始默认limit为-1),禁止开仓", "#FF0000")
isAlert := true
if isTrade and strategy.position_size == 0 and not isAlertFinished
runtime.log("所有委托流程执行完毕,仓位为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("每点价格为:", syminfo.mintick, ",当前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 触发线")
plot(strategy.position_size!=0 ? high_lowPrice : na, "当前最高价/最低价")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "移动止损触发线")
কৌশলগত নকশাটিও জটিল নয় এবং এটি ব্যবহারের সময় সাধারণত "রিয়েল-টাইম মূল্য মডেল" হিসাবে সেট করা প্রয়োজন কারণ এটি সর্বদা মূল্য সনাক্ত করতে হবে।
লক্ষ্য করুন যে স্টপ লস প্যারামিটারে পয়েন্ট (একটি দামের লাফ) দ্বারা নির্দেশিত হয় এবং অফসেট ট্র্যাকিং স্টপ ট্রিগার বিচ্যুতিও পয়েন্ট (একটি দামের লাফ) দ্বারা নির্দেশিত হয়। টার্গেট অফসেট ট্র্যাকিং স্টপ ট্রিগার লাইনের বিচ্যুতি দামের দূরত্ব দ্বারা নির্দেশিত হয় (উদাহরণস্বরূপ, 30 সেট করুন, যা 30 ইউয়ান দূরত্ব); যখন দামের লাফটি 1 হয় তখন 30 লাফ হয়, যা 30 ইউয়ান দূরত্ব।
এই নিয়োগের কৌশলটি কেবল প্রাথমিক বেস হোল্ডিংয়ের জন্য নয় বরং প্রাথমিক বেস হোল্ডিংয়ের জন্যও ডিজাইন করা হয়েছে। তাহলে স্টপ লস এবং ট্র্যাক স্টপ হোল্ডিংগুলি স্টপ হোল্ডিংয়ের দিকনির্দেশনা অনুযায়ী পরিচালিত হয়।
এখানে আমরা ডিজাইন বাস্তবায়নের বৈশিষ্ট্যগুলি দেখাবঃ
১। এই কৌশলটি চালানোর পর অবিলম্বে বেস হোল্ড খুলুন এবং তারপরে স্টপ লস সেট করুন, স্টপ ট্র্যাক করুন।
direction long, limit parameter set to 0, অর্থাৎ কৌশলটি চালানোর সময় অবিলম্বে প্রবেশ করুন, amount সেট করুন 1, কৌশলটি খুলুন 1 চুক্তি।
২, লিমিট প্যারামিটার নির্ধারণ করুন, প্রবেশের মূল্য নির্ধারণ করুন
অন্যান্য প্যারামিটার সেটিং অপরিবর্তনীয়, শুধুমাত্র সীমা প্যারামিটার দাম নির্ধারণ করুনঃ 1276
৩, ডিফল্ট লিমিট পরামিতি হল -1, কিছুই কাজ করে না, ভুল পজিশন প্রতিরোধ করে
পাইন ভাষার কৌশল ব্যবহার করার সময়, এই তথ্যটির প্রতি বিশেষ মনোযোগ দেওয়া উচিত। সিস্টেমের দামের প্রতিটি লাফ নির্দিষ্টভাবে "মূল্য নির্ধারণের মুদ্রার নির্ভুলতা" এর সাথে সম্পর্কিত।
"মূল্য নির্ধারণ করা মুদ্রার নির্ভুলতা" প্যারামিটারটি 0 এ সেট করা আছে, অর্থাৎ দামের তথ্যের সংখ্যাগত মান এক বিট পর্যন্ত সঠিক ((যেমন, ছোট সংখ্যা 0 হয়) । তাহলে দামের সর্বনিম্ন পরিবর্তনের ইউনিট হল 1 । যেহেতু কিছু প্যারামিটার দামের এক লাফের সাথে সম্পর্কিত, তাই এই জায়গাটি বিশেষ মনোযোগের প্রয়োজন।
ঠিক আছে, উপরে এই সেমি-অটোমেটেড অর্ডার নীতির সমস্ত নকশা রয়েছে, যদিও আমি এটি বাস্তব ব্যবহারের জন্যও পেয়েছি। তবে এই জাতীয় সরঞ্জামগুলি অবশ্যই আপনার ব্যবসায়ের অভ্যাসের উপর ভিত্তি করে ব্যবহার করা উচিত এবং স্বয়ংক্রিয়ভাবে সংশোধন ও অপ্টিমাইজ করা যেতে পারে। এখানে এই কৌশল কোডটি কেবলমাত্র প্রকাশ্যে ভাগ করা, শেয়ার করা, শেখার নকশা, যুক্তি।
আপনি দেখতে পাচ্ছেন যে পাইন ভাষাটি খুব ভাল ব্যবহারযোগ্য, সুবিধাজনক এবং শিখতে সহজ। আমরা পাইন ভাষা ব্যবহার করে দ্রুত আমাদের প্রয়োজনীয় সরঞ্জামগুলি ডিজাইন করতে পারি, জটিল প্রোগ্রাম ডিজাইনের জন্য বিরক্ত হওয়ার দরকার নেই।