পাইন ভাষা ব্যবহার করে একটি অর্ধ স্বয়ংক্রিয় ট্রেডিং টুল লিখুন

লেখক:লিডিয়া, সৃষ্টিঃ ২০২২-১১-০৮ ০৯ঃ৫৬ঃ৪৮, আপডেটঃ ২০২৩-০৯-১৫ ২০ঃ৫২ঃ২৬

img

যদিও সম্পূর্ণ স্বয়ংক্রিয় ট্রেডিংয়ের জন্য প্রোগ্রাম লেখেন এমন আরও বেশি সংখ্যক ব্যবসায়ী রয়েছে, তবে ব্যবসায়ীদের বৃহত্তর গ্রুপটি এখনও ম্যানুয়াল ট্রেডার। প্রকৃতপক্ষে, ম্যানুয়াল বিষয়গত ব্যবসায়ীরা তাদের বিষয়গত ট্রেডিংয়ে সহায়তা করার জন্য ছোট সরঞ্জামও লিখতে পারে। উদাহরণস্বরূপ, কখনও কখনও আপনি একটি ভাল এন্ট্রি পজিশন খুঁজে পান এবং প্রাথমিক পজিশনে একটি নির্দিষ্ট স্টপ লস এবং ট্রেলিং মুনাফা সেট করার পরিকল্পনা করেন। তারপরে পরবর্তী বাজার পর্যবেক্ষণের মতো আরও শক্তি-সমৃদ্ধ জিনিসগুলি বাদ দিন, আপনার নিজস্ব প্রতিষ্ঠিত স্টপ-লস এবং লাভের পরিকল্পনাটি সঠিকভাবে অনুসরণ করুন এবং প্রোগ্রামটিকে আপনার জন্য বাজার পর্যবেক্ষণ করতে দিন। হারাতে স্টপ লস, ম্যানুয়াল ট্রেডিংয়ে সহায়তা করার জন্য জয়ের জন্য ট্রেলিং মুনাফা।

পরামিতি নকশা

পাইন ভাষা ব্যবহার করে এই ধরনের প্রয়োজনীয়তা ডিজাইন করার কৌশলটি খুব সহজ। প্রয়োজনীয়তা অনুযায়ী ফাংশনটি অর্জনের জন্য নিম্নলিখিত পরামিতিগুলি ডিজাইন করা দরকারঃ

  1. অফসেটঃ যখন একটি ট্রেলিং স্টপ লাভ ট্রিগার করা হয়, তখন স্টপ লাভের রেখা সীমাবদ্ধ করার জন্য সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের জন্য অফসেট দূরত্ব।
  2. সীমাবদ্ধতাঃ নিয়ন্ত্রণের জন্য ব্যবহৃত পরামিতি - A. সরাসরি কেনার জন্য প্রাথমিক বেস পজিশন, B. কেনার জন্য অপেক্ষা করার জন্য নির্দিষ্ট মূল্য, C. কিছুই করবেন না।
  3. পরিমাণঃ মূল পজিশন খোলার সময় অর্ডার দেওয়া পরিমাণ।
  4. হ্রাসঃ স্টপ লস পয়েন্ট।
  5. টার্গেট অফসেটঃ টার্গেট অফসেট হ'ল মূল্যের পার্থক্য যা ট্রেলিং স্টপ লাভের সময় উদ্বোধনী মূল্যের তুলনা করে।
  6. মিনটিকঃ দামের ওঠানামা করার ন্যূনতম একক।
  7. দিকঃ বেস পজিশনের খোলার দিক।

কৌশলগত নকশা

/*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")

কৌশলটির নকশা জটিল নয়, তবে এটিকে রিয়েল-টাইম মূল্য মডেল হিসাবে সেট আপ করা দরকার, কারণ দামটি প্রতি মুহূর্তে পর্যবেক্ষণ করা উচিত।

img

লক্ষ্য করুন যে স্টপ লস পয়েন্ট (মিনিটিক) এবং অফসেট পয়েন্ট (মিনিটিক) তে প্রকাশিত হয়। টার্গেটঅফসেট ট্রেলিং স্টপ লাভ ট্রিগার লাইনের অফসেটটি মূল্য দূরত্বের ক্ষেত্রে প্রকাশিত হয় (উদাহরণস্বরূপ, 30 এ সেট করা হয়, যা দূরত্বের জন্য RMB30) । যখন মিনিটিক 1, 30 মানে দূরত্বের জন্য RMB30।

এই কমিশন কৌশলটি কেবলমাত্র প্রাথমিক বেস পজিশনগুলিকে দীর্ঘ হতে দেয় না, তবে প্রাথমিক বেস পজিশনগুলিও শর্ট হতে দেয়। তারপরে স্টপ লস এবং ট্রেলিং মুনাফা শর্ট দিকের দিকে পরিচালিত হয়।

আসুন নিম্নরূপ নকশা বাস্তবায়ন প্রদর্শন করা যাকঃ

1. যখন কৌশলটি চলমান থাকে, তখন বেস পজিশনটি অবিলম্বে খোলা হবে এবং প্রবেশ করা হবে, এবং তারপরে স্টপ লস এবং ট্র্যাকিং স্টপ প্রফিট প্যারামিটার অনুযায়ী সেট করা হবে।

img

ডাইরেকশন লং এ সেট করা আছে, লিমিট প্যারামিটার ০ এ সেট করা আছে, অর্থাৎ স্ট্র্যাটেজি চালু হলে তাৎক্ষণিকভাবে লং এ যেতে দিন, পরিমাণ ১ এ সেট করা আছে, অর্থাৎ স্ট্র্যাটেজি ১টি কন্ট্রাক্টের পজিশন খুলবে।

img

2. সীমা প্যারামিটার নির্দিষ্ট করুন, প্রবেশ মূল্য নির্দিষ্ট করুন

অন্যান্য প্যারামিটার সেটিংস অপরিবর্তিত থাকে, তবে নির্দিষ্ট সীমা প্যারামিটার মূল্য হলঃ 1276

img

3. ডিফল্ট সীমা প্যারামিটার হল -1, যা কিছুই পরিচালনা করে না এবং দুর্ঘটনাক্রমে অবস্থানের উদ্বোধন রোধ করে

img

সমাপ্তি

পাইন ভাষার কৌশল ব্যবহার করার সময়, মিনটিক ডেটাতে বিশেষ মনোযোগ দেওয়া গুরুত্বপূর্ণ। সিস্টেমে মূল্য মিনটিকের সঠিক সংখ্যাটি প্যারামিটারে মূল্য নির্ধারণের মুদ্রার নির্ভুলতার সাথে সম্পর্কিত।

img

প্যারামিটার Pricing Currency Accuracy 0 এ সেট করা হয়, যার অর্থ হল যে দামের ডেটা মানটি একক অঙ্কের সাথে সঠিক (যেমন, 0 দশমিক স্থান) । তারপরে ন্যূনতম মূল্য পরিবর্তনের ইউনিটটি 1। যেহেতু কিছু প্যারামিটারগুলি মিনিটিকের সঠিক সংখ্যার সাথে সম্পর্কিত, তাই এটির অতিরিক্ত মনোযোগ প্রয়োজন।

ঠিক আছে, উপরের এই আধা স্বয়ংক্রিয় কমিশন কৌশল সম্পূর্ণ নকশা, যদিও আমি বাস্তব বট ট্রেডিং জন্য এটি ব্যবহার. কিন্তু এই ধরনের সরঞ্জামগুলি আপনার নিজের ট্রেডিং অভ্যাস অনুযায়ী ব্যবহার করা আবশ্যক বুঝতে, নির্দিষ্ট পরিবর্তন, অপ্টিমাইজেশান আপনার নিজের দ্বারা সম্পন্ন করা যেতে পারে. এখানে কৌশল কোড শুধুমাত্র পাবলিক শেয়ারিং জন্য, বিনিময় শেখার নকশা এবং যুক্তি.

যেমন আমরা দেখতে পাচ্ছি, পাইন ভাষা ব্যবহার করা খুব সহজ, এবং এটি সুবিধাজনক এবং শিখতে সহজ। আমরা পাইন ভাষা ব্যবহার করতে পারি জটিল প্রোগ্রামিংয়ের চিন্তা না করে দ্রুত আমাদের প্রয়োজনীয় সরঞ্জামগুলি ডিজাইন করতে এবং পাইন ভাষা ব্যবহার করতে পারি FMZ পরিমাণগত ট্রেডিং প্ল্যাটফর্মে পরিমাণগত ট্রেডিং সহজ করতে।


সম্পর্কিত

আরো