ٹرپل مائیکرو چینل مومنٹم پروبیبلٹی ملٹی فیکٹر ٹریڈنگ اسٹریٹجی

ATR MC EOD TP SL RR
تخلیق کی تاریخ: 2025-05-20 14:16:22 آخر میں ترمیم کریں: 2025-05-20 14:16:22
کاپی: 0 کلکس کی تعداد: 450
2
پر توجہ دیں
319
پیروکار

ٹرپل مائیکرو چینل مومنٹم پروبیبلٹی ملٹی فیکٹر ٹریڈنگ اسٹریٹجی ٹرپل مائیکرو چینل مومنٹم پروبیبلٹی ملٹی فیکٹر ٹریڈنگ اسٹریٹجی

جائزہ

ٹرپل مائیکرو چینل حرکیات کا امکان ملٹی فیکٹر ٹریڈنگ اسٹریٹجی قیمت کی شکل پر مبنی ایک مقداری تجارتی طریقہ ہے ، اس حکمت عملی کا مرکز مارکیٹ میں لگاتار تین K لائنوں کی تشکیل والی مائکرو چینل کی ساخت کی نشاندہی کرنا ہے ، اور 10 کلیدی عوامل کے ذریعہ تجارتی سگنل کی مقداری درجہ بندی کرنا ہے ، جس سے تجارت کی کامیابی کا امکان بڑھ جاتا ہے۔ یہ حکمت عملی مالیاتی منڈیوں میں مختلف وقت کی مدت کے لئے موزوں ہے ، خاص طور پر دن کے اندر مختصر لائن تاجروں کے لئے۔ حکمت عملی تکنیکی تجزیہ میں شکل کی شناخت اور اعداد و شمار کے امکانات کے فوائد کو جوڑتی ہے ، سخت رسک کنٹرول سسٹم کے ذریعہ تاجروں کو ایک مکمل تجارتی حل فراہم کرتی ہے۔

حکمت عملی کا اصول

ٹرپل مائیکرو چینل حرکیات کے امکانات کی کثیر عنصر ٹریڈنگ حکمت عملی کا بنیادی اصول مارکیٹ میں لگاتار تین K لائنوں کی تشکیل سے ایک طرفہ تحریک چینل کی شناخت کرنا ہے۔ یہ حکمت عملی درج ذیل اقدامات کے ذریعے کام کرتی ہے۔

  1. مائکرو چینل کی شناختحکمت عملی: سب سے پہلے تین مسلسل ہم آہنگ K لائنوں کو تلاش کریں ((تمام یل لائن یا تمام منفی لائن) ، جس سے یہ ظاہر ہوتا ہے کہ مارکیٹ مختصر مدت میں ایک طرفہ رجحان میں ہوسکتی ہے۔

  2. ملٹی فیکٹر اسکورنگ سسٹم: 10 اہم عوامل کا جائزہ لینے کے ذریعے شکل کے معیار کا مقداری درجہ بندی:

    • فیکٹر 1: تین K لائنوں کی سائز کی یکسانیت
    • عنصر 2: اوپر / نیچے سائے کو کم سے کم
    • فیکٹر 3: ایک چھوٹا سا خلا موجود ہے ((کثیر سر شکل میں موجودہ K لائن کا نچلا نقطہ تین K لائنوں سے پہلے کی اونچائی سے زیادہ ہے)
    • فیکٹر 4: K لائن اداروں کے درمیان خلا
    • عنصر 5: بندش قیمت کا رشتہ ((کثیر سر شکل میں موجودہ بندش قیمت پچھلے K لائن کی اونچائی سے زیادہ ہے)
    • عنصر 6: اعلی کم / کم اونچائی
    • فکٹر 7: اوپننگ قیمت پچھلے K لائن اختتامی قیمت سے زیادہ / کم ہے
    • فیکٹر 8: کوئی نیچے / اوپر کی لائن نہیں
    • عنصر 9: کوئی کراس اسٹار یا الٹ K لائن
  3. امکانات کی درجہ بندیہر ٹریڈنگ سگنل کی متوقع جیت کی شرح کا حساب لگانے کے لئے بنیادی جیت کی شرح (70٪) کے علاوہ فیکٹر اسکور کی بنیاد پر:

  4. داخلے کی شرائط: جب مجموعی طور پر اسکور پہلے سے طے شدہ حد سے زیادہ ہوتا ہے ((50٪) ، تو سسٹم تجارتی سگنل پیدا کرتا ہے۔

  5. رسک مینجمنٹ

    • کثیر سر انٹری پوائنٹس ہدف کے K لائن کے اعلی پوائنٹس یا اختتامی قیمتوں پر واقع ہیں (بنیادی طور پر اوپری شیڈ لائن کے سائز پر منحصر ہے)
    • اسٹاپ نقصان کی ترتیب شروعاتی K لائن کی قیمت سے نیچے
    • ٹارگٹ پرائس پر مبنی خطرہ واپسی کا تناسب
  6. پوزیشن مینجمنٹ: اکاؤنٹ کے فنڈز اور فی ٹرانزیکشن کے خطرے کے تناسب پر مبنی ہے (ڈیفالٹ 1٪) ، معاہدوں کی تعداد کو متحرک طور پر شمار کریں۔

  7. باہر نکلنے کا طریقہ کار: ٹریکنگ اسٹاپ نقصان کی حکمت عملی کا استعمال کرتے ہوئے ، ہدف تک پہنچنے کے بعد منافع میں سے کچھ کو لاک کریں ، جبکہ مقررہ اسٹاپ نقصان اور دن میں لازمی طور پر صاف کرنے کا وقت طے کریں۔

اسٹریٹجک فوائد

کوڈ کا گہرائی سے تجزیہ کرتے ہوئے ، اس حکمت عملی میں مندرجہ ذیل نمایاں فوائد ہیں:

  1. باضابطہ مقداری اسکورحکمت عملی: 10 عوامل کے ذریعہ ہر ٹریڈنگ سگنل کو مقداری طور پر اسکور کرنا ، جس سے متعلقہ فیصلے کم ہوجاتے ہیں ، اور تجارت میں مستقل مزاجی اور غیرجانبدارانہ کارکردگی میں اضافہ ہوتا ہے۔

  2. لچکداراس حکمت عملی کو مختلف مارکیٹوں اور وقت کے دوروں میں لاگو کیا جاسکتا ہے ، کیونکہ یہ مارکیٹ کی مخصوص خصوصیات کی بجائے قیمتوں کی عمومی شکل پر مبنی ہے۔

  3. امکانات پر مبنیحکمت عملی اعداد و شمار کے امکانات پر مبنی ہے۔ ہر ٹریڈنگ سگنل میں واضح طور پر جیتنے کی توقع ہوتی ہے ، جس سے تاجر اعداد و شمار پر مبنی فیصلے کرنے کے قابل ہوجاتے ہیں۔

  4. کامل رسک کنٹرول: ہر تجارت میں ایک واضح اسٹاپ نقصان کی پوزیشن ہوتی ہے ، اور متحرک پوزیشن ایڈجسٹمنٹ کے ذریعہ خطرہ اکاؤنٹ میں فنڈز کی ایک مقررہ فیصد تک محدود ہوتا ہے۔

  5. متعدد میچوں کا میکانزماس حکمت عملی میں ٹریڈرز کے فنڈز کی حفاظت کے لیے سٹاپ ٹریکنگ، فکسڈ سٹاپس اور ڈیلی پیز شامل ہیں۔

  6. بصری آراءحکمت عملی: چارٹ پر تفصیلی ٹریڈنگ سگنل کی نشاندہی اور فیکٹر اسکور فراہم کرتا ہے تاکہ تاجر ہر سگنل کی کیفیت کو بصری طور پر سمجھ سکے۔

  7. وقت کا صحیح انتظاماس کے علاوہ ، اس نے ٹریڈنگ کے وقت کی کھڑکیوں کو محدود کرکے اور دن کے اختتام پر پوزیشنوں کو ختم کرنے کے لئے مجبور کیا ، جس سے راتوں رات پوزیشن رکھنے کے خطرے سے بچا جاسکتا ہے۔

اسٹریٹجک رسک

اس حکمت عملی کے بہت سے فوائد کے باوجود ، اس میں درج ذیل ممکنہ خطرات اور چیلنجز ہیں:

  1. ملاپ کا خطرہ10 فیکٹر وزنی اور حد سے متعلق ترتیبات میں تاریخی اعداد و شمار سے زیادہ مماثل ہونے کا خطرہ ہے ، جس سے مستقبل میں خراب کارکردگی کا سبب بن سکتا ہے۔

  2. کم لیکویڈیٹی مارکیٹ کا خطرہ: کم لیکویڈیٹی والے بازاروں میں ، داخلے اور باہر نکلنے کی قیمتوں میں کمی واقع ہوسکتی ہے ، جس سے اصل تجارت کے نتائج متاثر ہوسکتے ہیں۔

  3. پیرامیٹر کی حساسیت: حکمت عملی کی کارکردگی متعدد پیرامیٹرز کے لئے انتہائی حساس ہے ، بشمول اے ٹی آر کی لمبائی ، جیت کی حد اور خطرہ کی واپسی کا تناسب وغیرہ۔ پیرامیٹرز کی غلط ترتیب حکمت عملی کی کارکردگی کو نمایاں طور پر متاثر کرسکتی ہے۔

  4. مارکیٹ کے ماحول پر انحصار: یہ حکمت عملی واضح رجحان کے ساتھ مارکیٹ کے ماحول میں بہترین کام کرتی ہے اور ہلچل والے بازاروں یا انتہائی اتار چڑھاؤ والے بازاروں میں غلط سگنل پیدا کرسکتی ہے۔

  5. سگنل کی کمیاس حکمت عملی کے تحت ٹریڈنگ کے دوران بہت کم سگنل پیدا کیے جاتے ہیں، جس سے مجموعی طور پر واپسی متاثر ہوتی ہے۔

  6. کمپیوٹیشنل پیچیدگیکثیر فیکٹر تشخیص حکمت عملی کی کمپیوٹنگ پیچیدگی میں اضافہ کرتی ہے ، اور حقیقی وقت کی تجارت میں تاخیر کے چیلنجوں کا سامنا کرنا پڑ سکتا ہے۔

ان خطرات کو کم کرنے کے لیے کچھ طریقے یہ ہیں:

  • حکمت عملی کی مکمل جانچ پڑتال ، مختلف مارکیٹوں اور وقت کے دورانیوں میں اس کی مضبوطی کی تصدیق کرنا
  • چھوٹے ذخائر پر کچھ وقت کے لئے لائیو ٹیسٹنگ ، پوزیشنوں میں اضافہ کریں
  • مارکیٹ کے مختلف حالات کے مطابق پیرامیٹرز کا باقاعدگی سے جائزہ اور ان میں ترمیم کریں
  • اضافی مارکیٹ کے ماحول کے فلٹرز کو شامل کرنے پر غور کریں ، جیسے رجحان اشارے یا اتار چڑھاؤ کی پیمائش

حکمت عملی کی اصلاح کی سمت

کوڈ تجزیہ کی بنیاد پر ، اس حکمت عملی کو مندرجہ ذیل سمتوں میں بہتر بنایا جاسکتا ہے۔

  1. عنصر وزن کی اصلاح: فی الحال تمام عوامل کا وزن یکساں ہے ((ہر اثر کا 5 فیصد کامیابی کی شرح) ، مشین لرننگ کے طریقوں سے بہترین عنصر وزن کا تعین کیا جاسکتا ہے ، جس سے پیش گوئی کی درستگی میں اضافہ ہوتا ہے۔ اس اصلاح سے کچھ زیادہ اہم عوامل کو زیادہ وزن مل سکتا ہے ، جبکہ دوسرے عوامل کی اثر و رسوخ کو کم کیا جاسکتا ہے۔

  2. مارکیٹ ماحول فلٹرنگ: مارکیٹ کے ماحول کا جائزہ لینے کے اجزاء جیسے رجحان کی طاقت یا اتار چڑھاؤ کے اشارے شامل کریں ، صرف سازگار مارکیٹ کے حالات میں تجارت کریں۔ یہ ADX ، اتار چڑھاؤ کے فیصد اور دیگر اشارے شامل کرکے حاصل کیا جاسکتا ہے ، تاکہ مارکیٹ کے منفی ماحول میں تجارتی سگنل پیدا نہ ہوں۔

  3. ٹائم فلٹر میں بہتری: موجودہ حکمت عملی ایک مقررہ ٹریڈنگ ٹائم ونڈو کا استعمال کرتی ہے ، جو حکمت عملی کی کارکردگی کو مختلف ٹائم فریموں کا تجزیہ کرکے ٹریڈنگ ٹائم رینج کو بہتر بناسکتی ہے۔ مثال کے طور پر ، کچھ مارکیٹیں ایک خاص وقت میں زیادہ سمت دار ہوسکتی ہیں ، جبکہ دوسری اوقات میں زیادہ ہلچل پڑ سکتی ہیں۔

  4. موافقت کے پیرامیٹرز: مقررہ پیرامیٹرز (جیسے اے ٹی آر کی لمبائی ، رسک ریٹرن) کو مارکیٹ کے حالات کی بنیاد پر متحرک ایڈجسٹمنٹ پیرامیٹرز میں تبدیل کریں۔ مثال کے طور پر ، اعلی اتار چڑھاؤ والے بازاروں میں رسک ریٹرن میں اضافہ کیا جاسکتا ہے ، اور کم اتار چڑھاؤ والے بازاروں میں کم کیا جاسکتا ہے۔

  5. کثیر وقت کی مدت کی تصدیق: اعلی ٹائم پیکیج کی تصدیق کے میکانزم متعارف کروائیں ، مثال کے طور پر ، سورج کی کرنسی کی رجحانات کو موجودہ تجارت کی سمت کے مطابق کرنے کی ضرورت ہے۔ یہ حکمت عملی کی کامیابی کی شرح کو نمایاں طور پر بڑھا سکتا ہے اور منفی تجارت سے بچ سکتا ہے۔

  6. آؤٹ میکانزم کو بہتر بنانا: موجودہ ٹریکنگ اسٹاپ کو اے ٹی آر پر مبنی متحرک ٹریکنگ اسٹاپ میں بہتر بنایا جاسکتا ہے ، یا مزاحمت کی حمایت کرنے والی پوزیشن پر مبنی ساختہ آؤٹ پٹ۔ اس اصلاح سے رجحانات کے تسلسل کو بہتر طور پر پکڑنے کے ساتھ ساتھ رجحانات کے اختتام پر بروقت باہر نکلنے کے قابل ہوسکتا ہے۔

  7. انٹیگریٹڈ مشین لرننگ: مشین لرننگ الگورتھم کا استعمال کرتے ہوئے پیش گوئی کریں کہ کون سے سگنل زیادہ کامیاب ہونے کا امکان رکھتے ہیں ، ہر ٹرانزیکشن سگنل کو زیادہ درست امکان اسکور تفویض کریں۔ مثال کے طور پر ، تاریخی سگنل کو درجہ بندی کرنے کے لئے بے ترتیب جنگل یا درجے کی ترقی والے درخت کے ماڈل کا استعمال کیا جاسکتا ہے ، اور زیادہ پیچیدہ نمونوں کو نکالنا۔

خلاصہ کریں۔

ٹرپل مائیکرو چینل حرکیات کا امکان ملٹی فیکٹر ٹریڈنگ حکمت عملی ایک منظم تجارتی طریقہ ہے جو قیمت کی شکل کی شناخت اور ملٹی فیکٹر اسکورنگ کو جوڑتا ہے۔ یہ حکمت عملی تین مسلسل K لائنوں کی تشکیل والی مائیکرو چینل کی ساخت کی شناخت اور 10 اہم عوامل کا استعمال کرتے ہوئے سگنل کے معیار کی تشخیص کے ذریعہ ایک معروضی ، قابل پیمائش تجارتی فیصلے کا فریم ورک مہیا کرتی ہے۔

اس حکمت عملی کے بنیادی فوائد اس کے معروضی سگنل اسکورنگ سسٹم ، سخت رسک کنٹرول اور لچکدار آؤٹ پٹ میکانزم ہیں۔ ہر سگنل کی متوقع جیت کی شرح کا حساب کتاب کرکے ، تاجر ذہنی جذبات پر انحصار کرنے کے بجائے زیادہ ڈیٹا سے چلنے والے فیصلے کرسکتے ہیں۔ اس کے ساتھ ہی ، حکمت عملی کی متحرک پوزیشن مینجمنٹ خطرہ کنٹرول کی مستقل مزاجی کو یقینی بناتی ہے ، چاہے اکاؤنٹ کا سائز کتنا ہی ہو۔

پیرامیٹرز کی حساسیت اور مارکیٹ کے ماحول پر انحصار جیسے چیلنجوں کے باوجود ، اس حکمت عملی کی کارکردگی کو مزید بہتر بنانے کے امکانات ہیں ، خاص طور پر عنصر وزن کی اصلاح ، مارکیٹ کے ماحول کو فلٹر کرنے اور کھیل سے باہر نکلنے کے طریقہ کار میں بہتری کے ذریعہ۔ اس کے علاوہ ، مشین لرننگ ٹکنالوجی کو متعارف کرانا اس حکمت عملی کے لئے مستقبل میں ترقی کا ایک اہم راستہ ہوسکتا ہے ، جس میں تاریخی اعداد و شمار سے زیادہ پیچیدہ نمونوں کی کھوج کرنے کی صلاحیت ہے۔

یہ حکمت عملی ایک ٹھوس بنیادی فریم ورک مہیا کرتی ہے جس کو انفرادی خطرے کی ترجیحات اور ٹریڈنگ کے انداز کے مطابق اپنی مرضی کے مطابق اور بڑھایا جاسکتا ہے۔ آخر کار ، حکمت عملی کی کامیابی کا انحصار نہ صرف اس کے تکنیکی نفاذ پر ہے ، بلکہ اس حکمت عملی کے قواعد کو سمجھنے اور ان پر عمل کرنے کے لئے تاجر کے نظم و ضبط پر بھی منحصر ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-05-20 00:00:00
end: 2025-05-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDC"}]
*/



//@version=5
strategy("Ali 3-Bar MC v6 10 Factor", overlay=true, pyramiding=0)

// === INPUTS ===
showLabels = input.bool(true, title="Show Entry Labels")
rewardMultiple = input.float(1, title="Reward : Risk")


atrLength = input.int(4, title="ATR Length")
var int bullSignalBarIndex = na
var int bearSignalBarIndex = na

// === ATR ===
atr = ta.sma(ta.tr(true), atrLength)

signalTimeout = 1  // 例如3根bar




// === 风险控制参数 ===
riskPerTradePercent = input.float(1, title="每笔风险占比 (%)")  // 如 1%
pointValue = input.float(5, title="每点价值,例如 ES 是 $50/pt")

// 10 Factor 
//@version=5

baseWinRate = 0.70
tick = syminfo.mintick
tolerance = 0.2  // 用于判断 bar 大小一致的容忍比例


// 获取3根 bar 的关键数据
body(i) => math.abs(close[i] - open[i])
barSize(i)  => math.abs(high[i] - low[i])
upperTailRatio(i) => (high[i] - math.max(close[i], open[i])) / barSize(i)
lowerTailRatio(i) => (math.min(close[i], open[i]) - low[i])/barSize(i)

upperTailTolerance = 0.15
lowerTailTolerance = 0.15
bodyTolerance = 0.7
barUniformTolerance = 0.3
win_threshold = 0.5
// 检测 BL MC(3-bar micro channel 向上)
isBLMC = close[2] > open[2] and close[1] > open[1] and close > open

// === 各项因子判断 ===
//f1_uniform = math.max(barSize(2)/barSize(1), barSize(1)/barSize(2)) < 1 + barUniformTolerance and  math.max(barSize(1)/barSize(0), barSize(1)/barSize(0)) < 1 + barUniformTolerance
f1_uniform = math.max(barSize(2)/barSize(0) , barSize(0)/barSize(2)) < 1 + barUniformTolerance 


f2_mostCOH = ((upperTailRatio(2) < upperTailTolerance? 1:0) +  (upperTailRatio(1) < upperTailTolerance? 1:0)  +  (upperTailRatio(0) < upperTailTolerance? 1:0) )>=2
f3_microGap = low > high[2] 
f4_tickGap = open > close[1] or open[1] > close[2] 
f5_closesAboveHigh = close > high[1] and close[1] > high[2]
f6_higherLows = low > low[1] and low[1] > low[2]
f7_opensAbovePriorClose = open >= close[1] or open[1] >= close[2]
f8_noLowerTail =  ((lowerTailRatio(2) < lowerTailTolerance? 1:0) +  (lowerTailRatio(1) < lowerTailTolerance? 1:0)  +  (lowerTailRatio(0) < lowerTailTolerance? 1:0) )>=1
f9_noDojiOrOpposite  =body(2) /  barSize(2) > bodyTolerance and body(1) /  barSize(1) > bodyTolerance and body(0) /  barSize(0) > bodyTolerance

// === 总评分计算 ===
score = 0
score := score - (f1_uniform ? 0 : 1)
score := score - (f2_mostCOH ? 0 : 1)
score := score - (f3_microGap ? 0 : 4)
score := score - (f4_tickGap ? 0 : 1)
score := score - (f5_closesAboveHigh ? 0 : 1)
score := score - (f6_higherLows ? 0 : 1)
score := score - (f7_opensAbovePriorClose ? 0 : 1)
score := score - (f8_noLowerTail ? 0 : 1)
score := score - (f9_noDojiOrOpposite ? 0 : 1)

winProb = baseWinRate + (score * 0.05)  // 每个因子加5%,最高 1.20

// === 图上标记 ===
if isBLMC


    labelText = str.tostring(winProb * 100, "#.##") + "%\n" +        "1️⃣ uniform: " + str.tostring(f1_uniform) + "\n" +         "2️⃣ mostCOL: " + str.tostring(f2_mostCOH) + "\n" +        "3️⃣ microGap: " + str.tostring(f3_microGap) + "\n" +        "4️⃣ tickGap: " + str.tostring(f4_tickGap) + "\n" +        "5️⃣ closes<priorLow: " + str.tostring(f5_closesAboveHigh) + "\n" +        "6️⃣ lowerHighs: " + str.tostring(f6_higherLows) + "\n" +        "7️⃣ opensBelowClose: " + str.tostring(f7_opensAbovePriorClose) + "\n" +        "8️⃣ noLowerTail: " + str.tostring(f8_noLowerTail) + "\n" +        "9️⃣ noDoji: " + str.tostring(f9_noDojiOrOpposite)    ,
    label.new(        bar_index,         low,         text=labelText,         style=label.style_label_up,         color=color.new(color.green, 0),         textcolor=color.white,         size=size.small    )



// === Ali BULL MC ===


isAliBull =  isBLMC and  winProb>=win_threshold

// === 检测 Bear Micro Channel ===
isBRMC = close[2] < open[2] and close[1] < open[1] and close < open

// === Bear 各项因子 ===
br_f1_uniform = math.max(barSize(2)/barSize(0) , barSize(0)/barSize(2)) < 1 + barUniformTolerance 
br_f2_mostCOL = ((lowerTailRatio(2) < lowerTailTolerance ? 1:0) +  (lowerTailRatio(1) < lowerTailTolerance ? 1:0) +  (lowerTailRatio(0) < lowerTailTolerance ? 1:0)) >= 2
br_f3_microGap = low[2] > high 
br_f4_tickGap = open < close[1] or open[1] < close[2]
br_f5_closesBelowLow = close < low[1] and close[1] < low[2]
br_f6_lowerHighs = high < high[1] and high[1] < high[2]
br_f7_opensBelowPriorClose = open < close[1] or open[1] < close[2]
br_f8_noUpperTail = ((upperTailRatio(2) < upperTailTolerance ? 1:0) +  (upperTailRatio(1) < upperTailTolerance ? 1:0) +  (upperTailRatio(0) < upperTailTolerance ? 1:0)) >= 1
br_f9_noDojiOrOpposite = body(2)/barSize(2) > bodyTolerance and body(1)/barSize(1) > bodyTolerance and body(0)/barSize(0) > bodyTolerance

// === Bear 总评分计算 ===
br_score = 0
br_score := br_score - (br_f1_uniform ? 0 : 1)
br_score := br_score - (br_f2_mostCOL ? 0 : 1)
br_score := br_score - (br_f3_microGap ? 0 : 4)
br_score := br_score - (br_f4_tickGap ? 0 : 1)
br_score := br_score - (br_f5_closesBelowLow ? 0 : 1)
br_score := br_score - (br_f6_lowerHighs ? 0 : 1)
br_score := br_score - (br_f7_opensBelowPriorClose ? 0 : 1)
br_score := br_score - (br_f8_noUpperTail ? 0 : 1)
br_score := br_score - (br_f9_noDojiOrOpposite ? 0 : 1)

br_winProb = baseWinRate + (br_score * 0.05)

// === Bear 图上标记 ===
if isBRMC

    labelText = str.tostring(br_winProb * 100, "#.##") + "%\n" +        "1️⃣ uniform: " + str.tostring(br_f1_uniform) + "\n" +         "2️⃣ mostCOL: " + str.tostring(br_f2_mostCOL) + "\n" +        "3️⃣ microGap: " + str.tostring(br_f3_microGap) + "\n" +        "4️⃣ tickGap: " + str.tostring(br_f4_tickGap) + "\n" +        "5️⃣ closes<priorLow: " + str.tostring(br_f5_closesBelowLow) + "\n" +        "6️⃣ lowerHighs: " + str.tostring(br_f6_lowerHighs) + "\n" +        "7️⃣ opensBelowClose: " + str.tostring(br_f7_opensBelowPriorClose) + "\n" +        "8️⃣ noUpperTail: " + str.tostring(br_f8_noUpperTail) + "\n" +        "9️⃣ noDoji: " + str.tostring(br_f9_noDojiOrOpposite)    ,
    label.new(        bar_index,         low,         text=labelText,         style=label.style_label_up,         color=color.new(color.red, 0),         textcolor=color.white,         size=size.small    )







// === Ali BEAR MC ===



isAliBear = isBRMC  and br_winProb >=win_threshold

// === ENTRY/RISK/TARGET ===
bullEntry = (upperTailRatio(0)<0.1 ? close :high + tick) 
bullStop =  open[2] - tick
bullRisk = bullEntry - bullStop
bullTarget = bullEntry + bullRisk * rewardMultiple

bearEntry = (lowerTailRatio(0)<0.1? close :low - tick) 
bearStop = open[2]  + tick
bearRisk =  bearStop - bearEntry 
bearTarget = bearEntry - bearRisk * rewardMultiple

// === 动态仓位计算(基于账户资金和止损大小) ===
riskAmount = strategy.equity * (riskPerTradePercent / 100)
bullContracts = math.max(math.floor(riskAmount / (bullRisk * pointValue)),1)
bearContracts = math.max(math.floor(riskAmount / (bearRisk * pointValue)),1)


// === STATE ===
var float bullGapCloseLine = na
var float bearGapCloseLine = na
var bool inLong = false
var bool inShort = false
var bool bullStructureExitArmed = false
var bool bearStructureExitArmed = false
var float lastBullOpen = na
var float lastBearOpen = na
var line currentTPLine = na
var line currentSLLine = na
var float fixedBullStop = na
var float fixedBullTarget = na
var float fixedBearStop = na
var float fixedBearTarget = na

canTradeNow = not na(time(timeframe.period, "0930-1545", "America/New_York"))  // 只在盘中前6小时交易




// === BULL ENTRY ===
if isAliBull and na(bullSignalBarIndex) and canTradeNow and strategy.position_size  == 0
    strategy.entry("Ali Long", strategy.long, stop=bullEntry, qty=bullContracts)
    strategy.exit("Close Long", from_entry = "Ali Long", stop = bullStop, trail_price = bullTarget, trail_offset =    atrLength )
    bullSignalBarIndex := bar_index
    fixedBullStop := bullStop
    fixedBullTarget := bullTarget

// === BEAR ENTRY ===
if isAliBear and na(bearSignalBarIndex) and canTradeNow and strategy.position_size  == 0
    strategy.entry("Ali Short", strategy.short, stop=bearEntry, qty=bearContracts)
    strategy.exit("Close Short", from_entry = "Ali Short", stop = bearStop,trail_price = bearTarget, trail_offset =    atrLength)
    bearSignalBarIndex := bar_index
    fixedBearStop := bearStop
    fixedBearTarget := bearTarget





// === RESET ===
if strategy.position_size != 0
    bullSignalBarIndex := na
    bearSignalBarIndex := na

if not na(bullSignalBarIndex) and (bar_index - bullSignalBarIndex >= signalTimeout) and strategy.opentrades == 0
    strategy.cancel("Ali Long")
    bullSignalBarIndex := na
    fixedBullStop := na
    fixedBullTarget := na

if not na(bearSignalBarIndex) and (bar_index - bearSignalBarIndex >= signalTimeout) and strategy.opentrades == 0
    strategy.cancel("Ali Short")
    bearSignalBarIndex := na
    fixedBearStop := na
    fixedBearTarget := na



eodTime = timestamp("America/New_York", year, month, dayofmonth, 15, 55)

if time >= eodTime and strategy.position_size != 0
    strategy.close_all(comment="EOD Exit")
    label.new(bar_index, close, "Exit: EOD", style=label.style_label_down, color=color.gray, textcolor=color.white, size=size.small)
    bearSignalBarIndex := na
    bullSignalBarIndex:=na
    fixedBearStop := na
    fixedBearTarget := na


plot(fixedBearTarget, title="Bull TP", color=color.green, style=plot.style_linebr)
plot(fixedBearStop, title="Bull SL", color=color.red, style=plot.style_linebr)