-
مشاكل في التنبيه الصوتي
مرحبًا بالجميع ، أنا # 8217 ؛ أواجه مشكلة مع تنبيه مسموع لـ Squeeze indior. لقد وجدت تنبيهًا لضغط BBS الأساسي ، ويعمل التنبيه رقم 8230 ؛ ليس بالطريقة التي أفضلها بها. تكون الإشارة الفعلية عندما تتحول النقطة إلى اللون الأخضر عند إغلاق الشريط وكانت النقطة السابقة باللون الأحمر. في الوقت الحالي ، يبدو التنبيه عند كل نقطة حمراء ، وعادةً عدة مرات منذ تغيير النقطة الحالية من الأحمر إلى الأخضر مرارًا وتكرارًا. لذا ، حتى لو تمكنت من تنبيهها عند الإغلاق ، فستظل في حالة تأهب عند كل نقطة حمراء ، عندما تكون الإشارة بالنسبة لي في الواقع نقطة خضراء تسبق نقطة حمراء. بطريقة ما أحتاج إلى تنبيهك عندما تغلق النقطة الخضراء وتكون النقطة السابقة حمراء. هل هذا ممكن؟ إذا كان شخص ما يعرف كيف يمكن تنفيذ ذلك ، فأنا أقدر كثيرا أي مساعدة. شكرا لك مقدما.
https://www.forexdrop.com/attachment...s960761996.jpg
تم إدراج الرمز رقم 91 ؛ يسار # 93 ؛/ -------------------------------------- ---------------------------- /| bbsqueeze.mq4 |/| حقوق الطبع والنشر © 2005 ، نيك Bilak ، beluck # 91 ؛ AT # 93 ؛ gmail.com |/| عززت قليلا من CJ ريفاس ، كارلوس # 91 ؛ AT # 93 ؛ vealo.com |/ ----------------------------------------------- ------------------- # حقوق الملكية الفكرية حقوق الطبع والنشر © 2005، Nick Bilak #property indior_separate_window #property indior_borers 6 #property indior_color1 Blue #property indior_color2 Red #property indior_color3 DarkBlue #property indior_color4 Maroon #property indior_color5 Red #property indior_color6 Lime/---- input parameters extern int bolPrd = 20؛ extern double bolDev = 2.0؛ extern int keltPrd = 20؛ extern double keltFactor = 1.5؛ extern int momPrd = 12؛ extern bool AlertSqueezeStart = false؛ extern bool AlertSqueezeEnd = false؛/---- buffers double upB # 91؛ # 93 ؛؛ double upB2 # 91؛ # 93 ؛؛ double lob # 91؛ # 93 ؛؛ double loB2 # 91؛ # 93 ؛؛ double upK # 91؛ # 93 ؛؛ double lok # 91؛ # 93 ؛؛ int i، j، slippage = 3؛ نقطة توقف مزدوجة = 0.0؛ ضعف ema = 0.0؛ int peakf = 0؛ قمم int = 0؛ int valleyf = 0؛ int intleys = 0، limit = 0؛ double ccis # 91؛ 61 # 93 ؛، ccif # 91؛ 61 # 93 ؛؛ دلتا مزدوجة = 0؛ ugol مزدوجة = 0 ؛/ ----------------------------------------------- ------------------- /| وظيفة التهيئة الأولية المخصصة |/ ----------------------------------------------- ------------------- int init () {//---- indiors SetIndexStyle (0، DRAW_HISTOGRAM، EMPTY، 3)؛ SetIndexBuffer (0، UPB)؛ SetIndexEmptyValue (0، EMPTY_VALUE)؛ SetIndexStyle (1، DRAW_HISTOGRAM، EMPTY، 3)؛ SetIndexBuffer (1، لوب)؛ SetIndexEmptyValue (1، EMPTY_VALUE)؛ SetIndexStyle (4، DRAW_ARROW، فارغة، 2)؛ SetIndexBuffer (4، UPK)؛ SetIndexEmptyValue (4، EMPTY_VALUE)؛ SetIndexArrow (4159)؛ SetIndexStyle (5، DRAW_ARROW، فارغة، 2)؛ SetIndexBuffer (5، لوك)؛ SetIndexEmptyValue (5، EMPTY_VALUE)؛ SetIndexArrow (5159)؛ SetIndexStyle (2، DRAW_HISTOGRAM، EMPTY، 3)؛ SetIndexEmptyValue (2، EMPTY_VALUE)؛ SetIndexBuffer (2، upB2)؛ SetIndexStyle (3، DRAW_HISTOGRAM، EMPTY، 3)؛SetIndexEmptyValue (3، EMPTY_VALUE)؛ SetIndexBuffer (3، loB2)؛/---- return (0)؛ }/ ---------------------------------------------- -------------------- /| Custor indi deinitialization function |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0)؛ }/ ---------------------------------------------- -------------------- /| وظيفة التكرار indord مخصصة |/ ----------------------------------------------- ------------------- int start () {int counted_bars = IndiorCounted ()؛ التحول ، الحد ؛ مزدوجة فرق ، د ، dPrev ، الأمراض المنقولة جنسيا ، bbs. إذا (counted_barslt؛ 0) return (-1)؛ إذا (counted_barsgt؛ 0) counted_bars--؛ حد = البارات-31؛ إذا كانت (counted_barsgt؛ = 31) limit = Bars-counted_bars-1؛ لـ (shift = limit؛ shiftgt؛ = 0؛ shift--) {//d = iMomentum (NULL، 0، momPrd، PRICE_CLOSE، shift)؛ د = LinearRegressionValue (bolPrd، والتحول)؛ dPrev = LinearRegressionValue (bolPrd، تحول 1)؛ if (dgt؛ 0) {if ((dPrevgt؛ 0) (dPrev gt؛ d)) {upB2 # 91؛ shift # 93؛ UPB # 91؛ تحول # 93؛ = 0 } آخر {upB # 91 ؛ shift # 93؛ = d؛ upB2 # 91؛ تحول # 93؛ = 0 }/upB # 91؛ shift # 93؛ = 0؛ لوب # 91؛ تحول # 93؛ = 0؛ loB2 # 91؛ تحول # 93؛ = 0؛ } else {if ((dPrevlt؛ 0) (dPrev lt؛ d)) {loB2 # 91؛ shift # 93؛ لوب # 91؛ تحول # 93؛ = 0 } else {loB # 91؛ shift # 93؛ = d؛ loB2 # 91؛ تحول # 93؛ = 0 } upB # 91 ؛ shift # 93؛ = 0؛ upB2 # 91؛ تحول # 93؛ = 0؛/لب # 91؛ تحول # 93؛ = د. } diff = iATR (NULL، 0، keltPrd، shift) * keltFactor؛ std = iStdDev (NULL، 0، bolPrd، MODE_SMA، 0، PRICE_CLOSE، shift)؛ bbs = bolDev * stddiff؛ if (bbslt؛ 1) {upK # 91؛ shift # 93؛ = 0؛ لوك # 91؛ تحول # 93؛ = EMPTY_VALUE. } else {loK # 91؛ shift # 93؛ = 0؛ UPK # 91؛ تحول # 93؛ = EMPTY_VALUE. } double diffprev، stdprev، bbsprev؛ diffprev = iATR (NULL، 0، keltPrd، 1) * keltFactor؛ stdprev = iStdDev (NULL، 0، bolPrd، MODE_SMA، 0، PRICE_CLOSE، 1)؛ bbsprev = bolDev * stdprevdiffprev؛ } {if (bbsprevgt؛ = 1 bbslt؛ 1 AlertSqueezeStart == true) إذا (NewBar ()) تنبيه (Symbol ()،، Period ()، BB Squeeze starteded؛ } {if (bbsprevlt؛ 1 bbsgt؛ = 1 AlertSqueezeEnd == true) إذا (NewBar ()) تنبيه (Symbol ()،، Period ()، BB Squeeze Ended؛ } العودة (0) ؛ }/ ---------------------------------------------- -------------------- double LinearRegressionValue (int Len، int shift) {double SumBars = 0؛ double SumSqrBars = 0؛ double SumY = 0؛ ضعف Sum1 = 0 ؛ ضعف Sum2 = 0 ؛ ضعف المنحدر = 0؛ SumBars = Len * (Len-1) * 0.5؛ SumSqrBars = (Len - 1) * Len * (2 * Len - 1)6؛ for (int x = 0؛ xlt؛ = Len-1؛ x ) {double HH = Low # 91؛ x shift # 93 ؛؛ double LL = High # 91؛ x shift # 93 ؛؛ لـ (int y = x؛ ylt؛ = (x Len) -1؛ y ) {HH = MathMax (HH،ارتفاع # 91؛ ذ SHIFT # 93؛)؛ LL = MathMin (LL، Low # 91؛ y shift # 93؛)؛ } Sum1 = x * (Close # 91؛ x shift # 93؛ - ((HH LL)2 iMA (NULL، 0، Len، 0، MODE_EMA، PRICE_CLOSE، x shift))2)؛ SumY = (Close # 91؛ x shift # 93؛ - ((HH LL)2 iMA (NULL، 0، Len، 0، MODE_EMA، PRICE_CLOSE، x shift))2)؛ } Sum2 = SumBars * SumY؛ double Num1 = Len * Sum1 - Sum2؛ double Num2 = SumBars * SumBars-Len * SumSqrBars؛ if (Num2! = 0.0) {Slope = Num1Num2؛ } آخر {المنحدر = 0؛ } Intercept مزدوج = (SumY - Slope * SumBars)Len؛ double LinearRegValue = Intercept Slope * (Len - 1)؛ return (LinearRegValue) ؛ } bool NewBar () {static datetime dt = 0؛ if (dt! = Time # 91؛ 0 # 93؛) {dt = Time # 91؛ 0 # 93 ؛؛ النوم (100)؛/انتظر لعودة tick (true)؛ } عودة كاذبة)؛ } return (0)؛ # 91؛left # 93؛
-
أنا فقط إعادة قراءة آخر مشاركة لي وكان مربكا بعض الشيء.
https://www.forexdrop.com/attachments/1529229338.pnghttps://www.forexdrop.com/attachments/1529229338.pngإذا كان bar0 أخضر و bar1 أخضر و bar2 أحمر ، ثم تنبيه.
https://www.forexdrop.com/attachments/1529229339.pngإن الانتقال إلى هذا المسار هو الطريقة الوحيدة التي يمكنني التفكير بها لتجنب العديد من التنبيهات حيث تتغير الإشارة عدة مرات خلال شريط. سوف يستمر في التنبيه عدة مرات بهذه الطريقة ، لكن الإشارة الأولى ستكون صحيحة ويمكنني إيقافها بعد ذلك. إغلاق النقطة الخضراء الأولى هو الإشارة ، مما يتيح لك معرفة أن خطوط بولينجر قد أغلقت خارج قنوات كيلتنر. هل يمكن لأحدهم أن يعلمني إذا كان المنطق صحيحًا لهذا ...؟ أنا لست أعظم المبرمج بعد ولكن إذا تمكنت من فهم المنطق وراء ذلك ، فقد أكون قادرًا على ترميزه. لقد بحثت حول المنتديات المختلفة ووجدت نفس السؤال مليون مرة لذا كنت أتساءل إن كان ذلك ممكنًا. أي مساعدة يحظى بتقدير كبير.
-
حسنًا ، ما الذي سيكلفني أن أضيف تنبيهًا؟
-
1 مرفق (مرفقات) Heres الملف الأصلي بدون التنبيه السابق.
https://www.forexdrop.com/attachment...1679738217.mq4
-