
কেডিজে চরম বিপরীত প্রবণতা ট্র্যাকিং কৌশল একটি গতিশীল বিপরীত এবং প্রবণতা ট্র্যাকিং ধারণার সমন্বিত একটি পরিমাণগত ট্রেডিং সিস্টেম, যার মূল কৌশলটি হ’ল জে সূচকটি চূড়ান্ত অঞ্চলে ((0 বা 100) এর পরে প্রথম বিপরীত সংকেত ধরা, এবং ইএমএ 676 সমান্তরালের মাধ্যমে প্রবণতা দিকটি ফিল্টার করা, যাতে ট্রেডিংয়ের দিকটি মূল প্রবণতার সাথে সামঞ্জস্যপূর্ণ হয়। সিস্টেমটি সুনির্দিষ্ট প্রবেশের শর্ত, নমনীয় অবস্থান পরিচালনা এবং কঠোর ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করে, অস্থির বাজারে উচ্চ সম্ভাব্যতার ব্যবসায়ের সুযোগ খুঁজতে। কৌশলটি বিশেষত প্রযুক্তিগত সূচক ওভারসোলের পরে ওভারসোলের প্রতিক্রিয়া অনুসরণ করার জন্য উপযুক্ত।
এই কৌশলটির কেন্দ্রীয় যুক্তিটি কেডিজে সূচকের জে-মানের বৈশিষ্ট্যের উপর ভিত্তি করে তৈরি করা হয়েছে এবং প্রবণতা ফিল্টারিংয়ের সাথে একত্রিত হয়েছে।
J মানের সর্বোচ্চ মান সনাক্তকরণ: কৌশলগত পর্যবেক্ষণ করে যে J মানটি পূর্বনির্ধারিত সীমাবদ্ধতার পরিসরে পৌঁছেছে কিনা (ডিফল্ট উপরের সীমা 100 এবং নীচের সীমা 0), এই সীমাবদ্ধতার অঞ্চলগুলি সাধারণত বাজারকে অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রয়ের প্রতিনিধিত্ব করে।
ধারাবাহিক পরিবর্তন মোড নিশ্চিতকরণ: কৌশলটি বলে যে J এর মান সর্বোচ্চ মান পৌঁছানোর পরে, অবশ্যই 3 টি ক্রমাগত K লাইনের একতরফা পরিবর্তন হতে হবে ((ক্রমাগত উত্থান বা ক্রমাগত পতন), এই মোডটি সূচকের শক্তিশালী আন্দোলন নিশ্চিত করতে পারে।
পাল্টা সংকেত ধরা: যখন J-এর মান পরপর তিনটি K-রেখার একমুখী চলাচল সম্পন্ন করে, তখন কৌশলটি প্রথমবারের মতো বিপরীত দিকের পরিবর্তনের উপর নজর রাখে, যেমন J-এর মান পরপর উত্থান থেকে পতন বা পরপর পতন থেকে উত্থান পর্যন্ত পরিবর্তিত হয়।
প্রবণতা ফিল্টার: কৌশলটি EMA676 গড় লাইনকে ট্রেন্ডিংয়ের মানদণ্ড হিসাবে ব্যবহার করে, কেবলমাত্র যখন দাম গড়ের উপরে থাকে তখনই একাধিক সংকেত বিবেচনা করা হয়, যখন গড়ের নীচে থাকে তখনই শূন্য সংকেত বিবেচনা করা হয়, যাতে ট্রেডিংয়ের দিকটি সামগ্রিক প্রবণতার সাথে সামঞ্জস্যপূর্ণ থাকে।
ডায়নামিক স্টপ লসকৌশলঃ স্টপ-অফ-লস-এর জন্য প্রবেশের মূল্যের উপর ভিত্তি করে শতকরা হার গণনা করা হয়, ডিফল্টভাবে 3% স্টপ-অফ এবং 2.2% স্টপ-অফ সেট করা হয়, যার ফলে ট্রেডিং কাঠামোটি 1 এর চেয়ে বেশি ঝুঁকি-লাভের অনুপাত অর্জন করে।
বুদ্ধিমান অবস্থান ব্যবস্থাপনা: সিস্টেমটি ফিক্সড কন্ট্রাক্টের সংখ্যা এবং ঝুঁকি-ভিত্তিক শতাংশের জন্য দুটি পজিশন গণনা পদ্ধতি সরবরাহ করে, যা প্রতিটি লেনদেনের ঝুঁকি ফ্রেমের গতিশীলতার উপর ভিত্তি করে পজিশনের আকারকে সামঞ্জস্য করে এবং তহবিলের ব্যবহারের দক্ষতাকে অনুকূল করে তোলে।
কোডটি গভীরভাবে বিশ্লেষণ করার পরে, এই কৌশলটি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি দেখায়ঃ
সঠিক সংকেত ট্রিগার: J-এর মানকে কেবলমাত্র সর্বোচ্চ মানই নয়, ক্রমাগত 3 টি K-র একমুখী গতির মধ্য দিয়ে যেতে হবে এবং তারপরে প্রথম বিপর্যয়টি ধরতে হবে, এই যৌগিক শর্তটি সংকেতের নির্ভরযোগ্যতাকে ব্যাপকভাবে উন্নত করে এবং ভুয়া বিপর্যয়কে হ্রাস করে।
প্রবণতা ও বিপরীতের নিখুঁত সংমিশ্রণট্রেডিং কৌশলটি ট্রেন্ড ট্র্যাকিং (ইএমএ 676 এর দিকের ফিল্টার) এবং বিপরীত ট্রেডিং (জে-এর সর্বোচ্চ মূল্যের রিবাউন্ড) এর কৌশলগত সমন্বয় করে, যা বড় প্রবণতার দিককে সম্মান করে এবং প্রবণতার মধ্যে একটি উচ্চ সম্ভাব্য রিবাউন্ডের সুযোগকে ধরা যায়।
স্বনির্ধারিত ঝুঁকি ব্যবস্থাপনা: কোডটি ঝুঁকির শতাংশের উপর ভিত্তি করে গতিশীল পজিশনের গণনা বাস্তবায়ন করে, যাতে প্রতিটি লেনদেনের ঝুঁকি থ্রেশহোল্ড একই থাকে এবং বাজারের অস্থিরতা যাই হোক না কেন স্থিতিশীল ঝুঁকি নিয়ন্ত্রণ বজায় রাখা যায়।
স্পষ্ট ভিজ্যুয়াল ফিডব্যাক: কৌশলটি চার্টে প্রবেশের সংকেত, স্টপ-স্টপ লস ট্রিগার এবং মূল মূল্যের লাইনগুলি আঁকে, যাতে ব্যবসায়ীরা প্রতিটি লেনদেনের বাস্তবায়নের যুক্তি এবং ফলাফলগুলি স্বজ্ঞাতভাবে বুঝতে পারে
নমনীয় প্যারামিটার কনফিগারেশন: সিস্টেমটি প্রচুর পরিমাণে সামঞ্জস্যযোগ্য প্যারামিটার সরবরাহ করে, যার মধ্যে রয়েছে কেডিজে গণনা চক্র, ইএমএ দৈর্ঘ্য, চূড়ান্ত সেটিং, স্টপ-অফ-লস অনুপাত ইত্যাদি, যাতে কৌশলগুলি বিভিন্ন বাজার পরিবেশ এবং লেনদেনের জাতের সাথে খাপ খাইয়ে নিতে পারে।
সতর্কতা ব্যবস্থাকোডটি সিগন্যালের কাছাকাছি আসার জন্য সতর্কতার শর্তগুলি ডিজাইন করেছে, যেমন J মানটি চূড়ান্ত অঞ্চলের কাছাকাছি থাকলে বা প্রবেশের সংকেত তৈরি হওয়ার সাথে সাথে ব্যবসায়ীদের প্রস্তুত হওয়ার জন্য সতর্ক করে দেওয়া যায়, অপারেশন দক্ষতা বাড়ায়।
যদিও এই কৌশলটি খুব ভালভাবে তৈরি করা হয়েছে, তবুও এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
চরম পরিস্থিতিতে স্টপ লস: বাজার উঁচু বা চরম ওঠানামা হলে, পূর্বনির্ধারিত শতকরা হারটি প্রত্যাশিত মূল্যের সাথে কার্যকর করা যায় না, যার ফলে প্রকৃত ক্ষতির প্রত্যাশার চেয়ে বেশি হয়। সমাধানটি হ’ল আউটফিল্ড স্টপিং ব্যবস্থা চালু করা বা ইনফিল্ডের শর্তাবলী ব্যবহারের জন্য একক বেসিন বিবেচনা করা।
গড় রেখার পিছনে ঝুঁকি:EMA676 দীর্ঘকালীন গড় হিসাবে উল্লেখযোগ্যভাবে পিছিয়ে রয়েছে এবং প্রবণতা পরিবর্তনের প্রথম দিকে ভুল দিকনির্দেশনা দিতে পারে। সংকেতের গুণমানের জন্য মাল্টি-পিরিয়ড বিশ্লেষণের সাথে মিলিত বা স্বল্পমেয়াদী প্রবণতা নিশ্চিতকরণ সূচক যুক্ত করার পরামর্শ দেওয়া হয়েছে।
প্যারামিটার অপ্টিমাইজেশন ওভারফিট: বর্তমান প্যারামিটারগুলি (যেমন কেডিজে চক্র 60, সর্বোচ্চ মান সেট 100⁄0) সম্ভবত ঐতিহাসিক ডেটা অপ্টিমাইজেশনের উপর ভিত্তি করে তৈরি করা হয়েছে, অতিরিক্ত ফিট হওয়ার ঝুঁকি রয়েছে। পূর্ব অনুমান পরীক্ষা এবং বিভিন্ন চক্রের পরীক্ষার মাধ্যমে প্যারামিটারগুলির স্থায়িত্ব যাচাই করার পরামর্শ দেওয়া হয়েছে।
J মান গণনা বিচ্যুতিনীতিঃ কাস্টম bcwsma ফাংশন ব্যবহার করে কেডিজে মান গণনা করা হয়, যা বিভিন্ন প্ল্যাটফর্মের স্ট্যান্ডার্ড কেডিজে গণনার সাথে পার্থক্য থাকতে পারে, যার ফলে রিটার্নিংটি রিয়েল-ডিস্ক সংকেতের সাথে সামঞ্জস্যপূর্ণ নয়। রিয়েল-ডিস্কের আগে গণনা পদ্ধতির সামঞ্জস্য নিশ্চিত করা উচিত।
কম তরলতা বাজার ঝুঁকি: কম লেনদেনের বাজারে, স্টপ-অফ-লস স্লাইডগুলি বড় হতে পারে, যা কৌশলটির কার্যকর কার্যকারিতা প্রভাবিত করে। উচ্চতর তরল বাজার বা মূলধারার লেনদেনের জাতের উপর এই কৌশলটি ব্যবহার করার পরামর্শ দেওয়া হয়।
সংকেত ফ্রিকোয়েন্সি অস্থির: সর্বোচ্চ মূল্যের বিপরীতমুখী সংকেতগুলি বিভিন্ন বাজারের পরিবেশে খুব বেশি ফ্রিকোয়েন্সিতে পরিবর্তিত হতে পারে, যার ফলে তহবিলের ব্যবহারের দক্ষতা অস্থির হয়। ট্রেডিং ফ্রিকোয়েন্সিকে মসৃণ করার জন্য সহায়ক ট্রেডিং সংকেত বা একাধিক টাইম ফ্রেম নিশ্চিতকরণ ব্যবস্থা যুক্ত করার বিষয়টি বিবেচনা করা যেতে পারে।
নীতির বিদ্যমান বৈশিষ্ট্যগুলির জন্য নিম্নলিখিত অপ্টিমাইজেশানগুলি বিবেচনা করা যেতে পারেঃ
ডায়নামিক পিক সেটিং: বর্তমান কৌশলটি স্থির চূড়ান্ত উপরের এবং নীচের সীমা ব্যবহার করে ((১০০ এবং ০), ঐতিহাসিক ওঠানামার উপর ভিত্তি করে চূড়ান্ত পরিসরের গতিশীল সমন্বয় বিবেচনা করা যেতে পারে, যা বিভিন্ন ওঠানামার পরিবেশে স্বতঃস্ফূর্তভাবে অভিযোজিত হয়, যেমন নিম্ন ওঠানামার সময় যথাযথভাবে চূড়ান্ত পরিসীমা সংকীর্ণ করা এবং উচ্চ ওঠানামার সময় চূড়ান্ত পরিসীমা প্রসারিত করা।
মাল্টি টাইম ফ্রেম নিশ্চিতকরণ: আরো উচ্চ পর্যায়ের টাইম ফ্রেম নিশ্চিতকরণ সংকেত প্রবর্তন করুন, যেমন সূর্যের লাইনের স্তরের J-এর মানটিও চরম মানের অঞ্চলে রয়েছে, বা 3 মিনিট এবং 15 মিনিটের সময়কালের সংকেত সামঞ্জস্য নিশ্চিতকরণ, সংকেতের গুণমান উন্নত করুন।
স্মার্ট থামানোর ব্যবস্থা: গতিশীল স্টপ-অফ কৌশলগুলি বাস্তবায়ন করুন, যেমন ব্যাচ-প্লেইন পজিশন বা এটিআর (আসল ওঠানামা) ভিত্তিক স্টপ-অফ গণনা, বা ট্রেস স্টপ-অফ ব্যবহার করে লাভের একটি নির্দিষ্ট স্তরে পৌঁছানোর পরে ট্রেন্ড ক্যাপচার লাভকে সর্বাধিক করুন।
বাজার পরিবেশ ফিল্টার: অস্থিরতা ফিল্টার শর্তাবলী বৃদ্ধি করা, অত্যধিক বা খুব কম অস্থিরতার সাথে বাজার পরিবেশে লেনদেন স্থগিত করা, বা কৌশলগত বৈশিষ্ট্যগুলির জন্য উপযুক্ত নয় এমন বাজার পরিবেশে লেনদেন এড়াতে অবস্থানের আকার পরিবর্তন করা।
সিগন্যাল শক্তির শ্রেণীবিভাগ: জে মানের বিপরীত প্রস্থ, কে লাইন আকৃতি, ক্রয় পরিমাণ নিশ্চিতকরণ ইত্যাদির উপর ভিত্তি করে, সংকেত শক্তিকে শ্রেণিবদ্ধ করা হয় এবং সংকেত শক্তির গতিশীলতা অনুসারে পজিশনের আকার সামঞ্জস্য করা হয়, শক্তিশালী সংকেত পজিশন বাড়ায়, দুর্বল সংকেত পজিশন হ্রাস করে।
মেশিন লার্নিং অপ্টিমাইজেশন: মেশিন লার্নিং অ্যালগরিদমের প্রবর্তন যা স্বয়ংক্রিয়ভাবে প্যারামিটার প্যাকেজগুলিকে অনুকূলিত করে, বা ঐতিহাসিক সংকেতগুলির বৈশিষ্ট্যগুলি বের করে, প্রতিটি সংকেতের সাফল্যের সম্ভাব্যতা মূল্যায়ন করার জন্য একটি পূর্বাভাস মডেল তৈরি করে, কৌশলগুলির অভিযোজনযোগ্যতা এবং স্থায়িত্ব উন্নত করে।
কেডিজে চরম মূল্যের বিপরীতমুখী ট্রেন্ড ট্র্যাকিং কৌশলটি একটি কাঠামোগত, যুক্তিসঙ্গতভাবে পরিষ্কার পরিমাণযুক্ত ট্রেডিং সিস্টেম যা প্রযুক্তিগত সূচকগুলির চরম মূল্যের বিপরীতমুখীতা ক্যাপচার করে এবং প্রবণতার দিকের সাথে মিলিত হয়। উচ্চতর বিজয় হার বজায় রেখে ঝুঁকি নিয়ন্ত্রণ করে। কৌশলটির মূল সুবিধাটি তার সংকেত ট্রিগারিংয়ের যথার্থতা এবং ঝুঁকি পরিচালনার অখণ্ডতার মধ্যে রয়েছে, যা মাঝারি-দীর্ঘমেয়াদী প্রবণতা স্পষ্ট তবে অস্থির বাজারের পরিবেশের জন্য উপযুক্ত।
বাস্তবায়নের দৃষ্টিকোণ থেকে, কৌশলটির কোড কাঠামো পরিষ্কার, গণনা লজিক কঠোর, সম্পূর্ণ লেনদেন পরিচালনার বৈশিষ্ট্য রয়েছে, সংকেত উত্পাদন, পজিশন গণনা থেকে শুরু করে স্টপ লস কার্যকরকরণ পর্যন্ত বিস্তারিত বাস্তবায়ন রয়েছে। এই নিবন্ধে উত্থাপিত অপ্টিমাইজেশনের দিকনির্দেশনা, বিশেষত গতিশীল প্যারামিটার সমন্বয় এবং বহু-মাত্রিক সংকেত নিশ্চিতকরণ, কৌশলটির স্থিতিশীলতা এবং অভিযোজনযোগ্যতা আরও বাড়ানোর সম্ভাবনা রয়েছে।
ব্যবসায়ীদের জন্য, এই কৌশলটি প্রয়োগ করার সময়, বিভিন্ন বাজারের অবস্থার অধীনে যাচাইকরণ প্যারামিটারগুলির প্রযোজ্যতার দিকে মনোযোগ দেওয়া উচিত এবং ব্যক্তিগত ঝুঁকির পছন্দ অনুসারে স্টপ লস এবং পজিশন সেটিংগুলি সামঞ্জস্য করা উচিত। একই সাথে, ট্রেডিং সিদ্ধান্তের সম্পূর্ণতা এবং নির্ভুলতা বাড়ানোর জন্য মৌলিক বিশ্লেষণ এবং উচ্চতর সময়সীমার প্রযুক্তিগত বিশ্লেষণের সংমিশ্রণটি সুপারিশ করা হয়।
//@version=6
strategy("J值极值趋势跟随策略", overlay = true,
default_qty_type = strategy.percent_of_equity, default_qty_value = 10, // 降低每笔交易的仓位大小
initial_capital = 10000,
margin_long = 20, margin_short = 20) // 设置合理的保证金要求
// === 策略说明:J值极值趋势跟随策略 ===
// 主图:显示J值连续下降后反弹的买点和连续上升后回调的卖点
// 副图:显示J线走势、中轴线、极值区域
// 方向过滤:676均线,价格在上方只做多,下方只做空
// 止盈止损:基于百分比波动,默认1%止盈1%止损
// === 输入参数 ===
lengthK = input.int(60, title = "K period")
lengthD = input.int(3, title = "D period")
smoothK = input.int(3, title = "Smooth K")
emaLength = input.int(576, title = "趋势EMA周期", inline="ema")
extremeHigh = input.float(100, title = "J值极值上限", minval = 80, maxval = 120)
extremeLow = input.float(0, title = "J值极值下限", minval = -20, maxval = 20)
// === 止盈止损参数(改为百分比) ===
takeProfitPercent = input.float(3, title = "止盈百分比", minval = 0.1, step = 0.1)
stopLossPercent = input.float(2.2, title = "止损百分比", minval = 0.1, step = 0.1)
// === 风险控制参数 ===
useFixedPositionSize = input.bool(true, title = "使用固定合约数量")
fixedPositionSize = input.float(1.0, title = "固定合约数量", minval = 0.1, step = 0.1)
riskPerTrade = input.float(1.0, title = "每笔交易风险百分比", minval = 0.1, maxval = 10, step = 0.1)
// === KDJ计算(使用与bitcoinwisdom一致的算法) ===
// 自定义加权移动平均函数(与bitcoinwisdom一致)
bcwsma(s, l, m) =>
var _bcwsma = 0.0
_bcwsma := (m*s + (l-m)*nz(_bcwsma[1])) / l
_bcwsma
highestHigh = ta.highest(high, lengthK)
lowestLow = ta.lowest(low, lengthK)
rsv = (close - lowestLow) / (highestHigh - lowestLow) * 100
K = bcwsma(rsv, smoothK, 1)
D = bcwsma(K, lengthD, 1)
J = 3 * K - 2 * D
// === 676均线方向判断 ===
ema676 = ta.ema(close, emaLength)
trendUp = close > ema676 // 价格在676均线上方
trendDown = close < ema676 // 价格在676均线下方
// === 检测J值连续下降和上升 ===
// 检测连续3根下降:J < J[1] < J[2] < J[3]
jContinuousDown = J < J[1] and J[1] < J[2] and J[2] < J[3]
// 检测连续3根上升:J > J[1] > J[2] > J[3]
jContinuousUp = J > J[1] and J[1] > J[2] and J[2] > J[3]
// === 检测反弹和回调(必须在极值区域内) ===
// 反弹:当前J值上升,且之前连续下降,且J值在极值下限以下
jBounce = J > J[1] and jContinuousDown[1] and J[1] <= extremeLow
// 回调:当前J值下降,且之前连续上升,且J值在极值上限以上
jPullback = J < J[1] and jContinuousUp[1] and J[1] >= extremeHigh
// === 开仓信号(带方向过滤) ===
// 买点:J值连续下降后反弹 + 价格在676均线上方
longEntry = jBounce and trendUp
// 卖点:J值连续上升后回调 + 价格在676均线下方
shortEntry = jPullback and trendDown
// === 记录开仓价格和止盈止损价格 ===
var float entryPrice = na
var float tpPrice = na
var float slPrice = na
// === 计算仓位大小 ===
// 基于风险百分比的仓位计算需要考虑止损百分比
positionSize = useFixedPositionSize ? fixedPositionSize : (strategy.equity * (riskPerTrade / 100)) / (close * stopLossPercent / 100)
// === 止盈止损信号变量 ===
var bool longTakeProfitHit = false
var bool longStopLossHit = false
var bool shortTakeProfitHit = false
var bool shortStopLossHit = false
// === 警报信号指示器 ===
// 多单入场信号将触发
longSignalComing = J <= extremeLow and jContinuousDown and trendUp
// 空单入场信号将触发
shortSignalComing = J >= extremeHigh and jContinuousUp and trendDown
// J值接近极值区域
jNearExtremeLow = J <= extremeLow + 5 and J > extremeLow
jNearExtremeHigh = J >= extremeHigh - 5 and J < extremeHigh
// === 策略执行 ===
if (longEntry and strategy.position_size == 0)
entryPrice := close
// 计算基于百分比的止盈止损价格
tpPrice := entryPrice * (1 + takeProfitPercent / 100)
slPrice := entryPrice * (1 - stopLossPercent / 100)
strategy.entry("多单", strategy.long, qty=positionSize)
// 重置止盈止损信号
longTakeProfitHit := false
longStopLossHit := false
if (shortEntry and strategy.position_size == 0)
entryPrice := close
// 计算基于百分比的止盈止损价格
tpPrice := entryPrice * (1 - takeProfitPercent / 100)
slPrice := entryPrice * (1 + stopLossPercent / 100)
strategy.entry("空单", strategy.short, qty=positionSize)
// 重置止盈止损信号
shortTakeProfitHit := false
shortStopLossHit := false
// === 手动检查止盈止损条件 ===
// 多单止盈止损
longTPHit = strategy.position_size > 0 and high >= tpPrice and not longTakeProfitHit
longSLHit = strategy.position_size > 0 and low <= slPrice and not longStopLossHit
if (longTPHit)
strategy.close("多单", comment="止盈")
longTakeProfitHit := true
if (longSLHit)
strategy.close("多单", comment="止损")
longStopLossHit := true
// 空单止盈止损
shortTPHit = strategy.position_size < 0 and low <= tpPrice and not shortTakeProfitHit
shortSLHit = strategy.position_size < 0 and high >= slPrice and not shortStopLossHit
if (shortTPHit)
strategy.close("空单", comment="止盈")
shortTakeProfitHit := true
if (shortSLHit)
strategy.close("空单", comment="止损")
shortStopLossHit := true
// === 在主图绘制676均线 ===
plot(ema676, title="676 EMA", color=color.blue, linewidth=2)
// === 在主图标注开仓信号 ===
plotshape(longEntry, title="多单入场", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.small, text="多单", force_overlay=true)
plotshape(shortEntry, title="空单入场", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="空单", force_overlay=true)
// === 添加止盈止损信号 ===
// 多单止盈信号
plotshape(longTPHit, title="多单止盈", location=location.abovebar,
color=color.green, style=shape.circle, size=size.normal, text="止盈", force_overlay=true)
// 多单止损信号
plotshape(longSLHit, title="多单止损", location=location.abovebar,
color=color.red, style=shape.xcross, size=size.normal, text="止损", force_overlay=true)
// 空单止盈信号
plotshape(shortTPHit, title="空单止盈", location=location.belowbar,
color=color.green, style=shape.circle, size=size.normal, text="止盈", force_overlay=true)
// 空单止损信号
plotshape(shortSLHit, title="空单止损", location=location.belowbar,
color=color.red, style=shape.xcross, size=size.normal, text="止损", force_overlay=true)
// === 绘制止盈止损线 ===
plot(strategy.position_size != 0 ? tpPrice : na, title="止盈", color=color.green, style=plot.style_line, linewidth=1)
plot(strategy.position_size != 0 ? slPrice : na, title="止损", color=color.red, style=plot.style_line, linewidth=1)
plot(strategy.position_size != 0 ? entryPrice : na, title="入场价", color=color.yellow, style=plot.style_line, linewidth=1)
// === 设置警报条件(使用常量字符串) ===
// 基础信号警报
alertcondition(longEntry, title="多单入场信号", message="J值极值策略: 多单入场信号触发")
alertcondition(shortEntry, title="空单入场信号", message="J值极值策略: 空单入场信号触发")
alertcondition(longTPHit, title="多单止盈触发", message="J值极值策略: 多单止盈触发")
alertcondition(longSLHit, title="多单止损触发", message="J值极值策略: 多单止损触发")
alertcondition(shortTPHit, title="空单止盈触发", message="J值极值策略: 空单止盈触发")
alertcondition(shortSLHit, title="空单止损触发", message="J值极值策略: 空单止损触发")
// === 添加交易详情标签 ===
if (longTPHit)
label.new(bar_index, high, text="多单止盈 +" + str.tostring(takeProfitPercent) + "%",
style=label.style_label_down, color=color.green, textcolor=color.white)
if (longSLHit)
label.new(bar_index, low, text="多单止损 -" + str.tostring(stopLossPercent) + "%",
style=label.style_label_up, color=color.red, textcolor=color.white)
if (shortTPHit)
label.new(bar_index, low, text="空单止盈 +" + str.tostring(takeProfitPercent) + "%",
style=label.style_label_up, color=color.green, textcolor=color.white)
if (shortSLHit)
label.new(bar_index, high, text="空单止损 -" + str.tostring(stopLossPercent) + "%",
style=label.style_label_down, color=color.red, textcolor=color.white)