اندیکاتور رسم اتوماتیک فیبوناچی اکستنشن Auto Fib Extension در تریدینگ ویو
برای اطلاع سریع از کارت ها و کمبوهای جدید انواع ایردراپ ها و آموزش های اختصاصی عضو کانال تلگرام هوش فعال شوید برای عضویت در کانال تلگرام کلیک نمایید
یکی از ابزارهای پر کاربرد در تحلیل تکنیکال فیبوناچی اکستنشن می باشد و در این پست به معرفی اندیکاتور Auto Fib Extension در تریدینگ ویو می پردازیم که به کمک این ابزار می توانید به صورت اتوماتیک فیبوناچی اکستنشن را رسم کنید. این سری پست ها بیشتر برای فعالین ارز دیجیتال تهیه می گردد البته برای معامله گران بورس و فارکس نیز بسیار کاربردی می باشد.
با عضویت در کانال دانلود اندیکاتور هوش فعال روزانه جدید ترین اندیکاتور ها و اکسپرت ها را در کانال تلگرام و ایتا دریافت نمایید برای عضویت در کانال تلگرام کلیک نمایید عضویت در کانال ایتا کلیک نمایید
تعریف اندیکاتور Auto Fib Extension
Auto Fib Extension ابزاری است که سطوح قیمتی هدف را پس از اصلاح محاسبه می کند. فیبو اکستنشن همچنین مناطق احتمالی برگشت قیمت را نشان می دهد و سطوح احتمالی قیمت را پس از اتمام اصلاحات نشان می دهد. این سطوح بر اساس ضرایب کلیدی فیبوناچی و حرکت قیمت نماد در نمودار محاسبه می گردد.
برای استفاده از اندیکاتور جدید Auto Fib Extension ، از دکمه Indicators در نمودار خود استفاده کنید و اندیکاتور Auto Fib Extension را در برگه Built-ins پیدا کنید.
شیوه استفاده فیبوناچی اکستنشن Fib Extension
افزونه های فیبوناچی فرمول خاصی ندارند. سطوح افزونه بر اساس دنباله فیبوناچی محاسبه می شود و متداول ترین سطوح 61.8، ، 100، ، 161.8، ، 200، و 261.8 است. ابزار ترسیم مبتنی بر روند می باشد روند بر اساس سه نقطه تعیین شده توسط معامله گر مشخص می گردد : دو نقطه اول خط روند را مشخص می کند ، نقطه آخر سطح بازده را مشخص می کند. پس از تعیین نقاط ، خطوط سطح افقی ترسیم می گردد.
فیبوناچی اکستنشن به دو روش به نمودار اضافه می گردد که در ادامه مشاهده می فرمایید
1-شیوه اضافه کردن اندیکاتور Auto Fib Extension به تریدینگ ویو به روش انتخاب اندیکاتور
اسکریپت اندیکاتور Auto Fib Extension
//@version=4 study("Auto Fib Extension", overlay=true) depthTooltip = "The minimum number of bars that will be taken into account when calculating the indicator." depth = input(title="Depth", type=input.integer, defval=10, minval=1, inline = "Pivots", tooltip=depthTooltip) reverse = input(false, "Reverse") var extendLeft = input(false, "Extend Left | Extend Right", inline = "Extend Lines") var extendRight = input(true, "", inline = "Extend Lines") var extending = extend.none if extendLeft and extendRight extending := extend.both if extendLeft and not extendRight extending := extend.left if not extendLeft and extendRight extending := extend.right prices = input(true, "Show Prices") levels = input(true, "Show Levels", inline = "Levels") levelsFormat = input("Values", "", options = ["Values", "Percent"], inline = "Levels") labelsPosition = input("Left", "Labels Position", options = ["Left", "Right"]) var float upperThreshold = 0.236 var float lowerThreshold = 1.0 var line lineLastHL = na var line lineLastLH = na var line lineLast = na var float iLastH = 0 var float iLastL = 0 var float pLastH = 0 var float pLastL = 0 var float[] iPivotsH = array.new_float() var float[] iPivotsL = array.new_float() var float[] pPivotsH = array.new_float() var float[] pPivotsL = array.new_float() var isHighLast = false var float startPrice = na var float endPrice = na var float diff = na pivots(src, length, isHigh) => l2 = length * 2 c = nz(src[length]) ok = true for i = 0 to l2 if isHigh and src[i] > c ok := false if not isHigh and src[i] < c ok := false if ok [bar_index[length], c] else [int(na), float(na)] [iH, pH] = pivots(high, depth / 2, true) [iL, pL] = pivots(low, depth / 2, false) countPivotsH = array.size(iPivotsH) countPivotsL = array.size(iPivotsL) if countPivotsH > 0 and countPivotsL > 0 iLastH := array.get(iPivotsH, countPivotsH-1) iLastL := array.get(iPivotsL, countPivotsL-1) isHighLast := iLastH > iLastL iLastH := 1 if isHighLast if not na(iH) pLastH := array.get(pPivotsH, countPivotsH-1) if pH > pLastH array.set(iPivotsH, countPivotsH-1, iH) array.set(pPivotsH, countPivotsH-1, pH) iH := na else if not na(iL) pLastL := array.get(pPivotsL, countPivotsL-1) if pL < pLastL array.set(iPivotsL, countPivotsL-1, iL) array.set(pPivotsL, countPivotsL-1, pL) iL := na if not na(iH) array.push(iPivotsH, iH) array.push(pPivotsH, pH) if not na(iL) array.push(iPivotsL, iL) array.push(pPivotsL, pL) pPivotsHCopy = array.copy(pPivotsH) pPivotsLCopy = array.copy(pPivotsL) iPivotsHCopy = array.copy(iPivotsH) iPivotsLCopy = array.copy(iPivotsL) if barstate.islast for j = bar_index to 0 if array.size(iPivotsHCopy) == 0 or array.size(iPivotsLCopy) == 0 break iLastH := array.pop(iPivotsHCopy) iLastL := array.pop(iPivotsLCopy) pLastH := array.pop(pPivotsHCopy) pLastL := array.pop(pPivotsLCopy) iPrevPivot = 0.0 pPrevPivot = 0.0 isHighLast := iLastH > iLastL if isHighLast for i = array.size(iPivotsHCopy)-1 to 0 if i < 0 break else if array.get(iPivotsHCopy, i) < iLastL break if array.get(pPivotsHCopy, i) > pLastH iLastH := array.pop(iPivotsHCopy) pLastH := array.pop(pPivotsHCopy) else array.remove(iPivotsHCopy, i) array.remove(pPivotsHCopy, i) else for i = array.size(iPivotsLCopy)-1 to 0 if i < 0 break else if array.get(iPivotsLCopy, i) < iLastH break if array.get(pPivotsLCopy, i) < pLastL iLastL := array.pop(iPivotsLCopy) pLastL := array.pop(pPivotsLCopy) else array.remove(iPivotsLCopy, i) array.remove(pPivotsLCopy, i) if array.size(iPivotsHCopy) == 0 or array.size(iPivotsLCopy) == 0 break isHighLast := iLastH > iLastL if isHighLast iPrevPivot := array.get(iPivotsHCopy, array.size(iPivotsHCopy)-1) pPrevPivot := array.get(pPivotsHCopy, array.size(iPivotsHCopy)-1) else iPrevPivot := array.get(iPivotsLCopy, array.size(iPivotsLCopy)-1) pPrevPivot := array.get(pPivotsLCopy, array.size(iPivotsLCopy)-1) if isHighLast startPrice := pPrevPivot endPrice := pLastL diff := abs(startPrice - endPrice) if pLastH > endPrice + diff * lowerThreshold or pLastH < endPrice + diff * upperThreshold array.push(iPivotsLCopy, iLastL) array.push(pPivotsLCopy, pLastL) continue line.delete(lineLastHL) line.delete(lineLastLH) line.delete(lineLast) lineLastHL := line.new(int(iPrevPivot), pPrevPivot, int(iLastL), pLastL, color=color.red, width=1, style=line.style_dashed) lineLastLH := line.new(int(iLastL), pLastL, int(iLastH), pLastH, color=color.green, width=1, style=line.style_dashed) lineLast := lineLastLH else startPrice := pPrevPivot endPrice := pLastH diff := abs(startPrice - endPrice) if pLastL < endPrice - diff * lowerThreshold or pLastL > endPrice - diff * upperThreshold array.push(iPivotsHCopy, iLastH) array.push(pPivotsHCopy, pLastH) continue line.delete(lineLastHL) line.delete(lineLastLH) line.delete(lineLast) lineLastLH := line.new(int(iPrevPivot), pPrevPivot, int(iLastH), pLastH, color=color.red, width=1, style=line.style_dashed) lineLastHL := line.new(int(iLastH), pLastH, int(iLastL), pLastL, color=color.green, width=1, style=line.style_dashed) lineLast := lineLastHL break _draw_line(price, col) => var id = line.new(0, price, 0, price, color=col, width=1, extend=extending) if not na(lineLast) line.set_xy1(id, line.get_x1(lineLast), price) line.set_xy2(id, line.get_x2(lineLast), price) _draw_label(price, txt, txtColor) => if not na(price) x = labelsPosition == "Left" ? line.get_x1(lineLast) : not extendRight ? line.get_x2(lineLast) : bar_index labelStyle = labelsPosition == "Left" ? label.style_label_right : label.style_label_left align = labelsPosition == "Left" ? text.align_right : text.align_left labelsAlignStrLeft = txt + '\n \n' labelsAlignStrRight = ' ' + txt + '\n \n' labelsAlignStr = labelsPosition == "Left" ? labelsAlignStrLeft : labelsAlignStrRight var id = label.new(x=x, y=price, text=labelsAlignStr, textcolor=txtColor, style=labelStyle, textalign=align, color=#00000000) label.set_xy(id, x, price) label.set_text(id, labelsAlignStr) label.set_textcolor(id, txtColor) _wrap(txt) => "(" + tostring(txt, "#.##") + ")" _label_txt(level, price) => if not na(price) l = levelsFormat == "Values" ? tostring(level) : tostring(level * 100) + "%" (levels ? l : "") + (prices ? _wrap(price) : "") _crossing_level(sr, r) => (r > sr and r < sr[1]) or (r < sr and r > sr[1]) diff := (isHighLast ? -1 : 1) * abs(startPrice - endPrice) offset = isHighLast ? line.get_y1(lineLastLH) - line.get_y2(lineLastLH) : line.get_y1(lineLastHL) - line.get_y2(lineLastHL) offset := (isHighLast ? -1 : 1) * abs(offset) processLevel(show, value, colorL) => float m = value r = (endPrice - offset) + ((reverse ? -1 : 1) * diff * m) if show _draw_line(r, colorL) _draw_label(r, _label_txt(m, r), colorL) if _crossing_level(close, r) alert("Autofib: " + syminfo.ticker + " crossing level " + tostring(value)) show_0 = input(true, "", inline = "Level0") value_0 = input(0, "", inline = "Level0") color_0 = input(#787b86, "", inline = "Level0") processLevel(show_0, value_0, color_0) show_0_236 = input(true, "", inline = "Level0") value_0_236 = input(0.236, "", inline = "Level0") color_0_236 = input(#f44336, "", inline = "Level0") processLevel(show_0_236, value_0_236, color_0_236) show_0_382 = input(true, "", inline = "Level1") value_0_382 = input(0.382, "", inline = "Level1") color_0_382 = input(#81c784, "", inline = "Level1") processLevel(show_0_382, value_0_382, color_0_382) show_0_5 = input(true, "", inline = "Level1") value_0_5 = input(0.5, "", inline = "Level1") color_0_5 = input(#4caf50, "", inline = "Level1") processLevel(show_0_5, value_0_5, color_0_5) show_0_618 = input(true, "", inline = "Level2") value_0_618 = input(0.618, "", inline = "Level2") color_0_618 = input(#009688, "", inline = "Level2") processLevel(show_0_618, value_0_618, color_0_618) show_0_65 = input(false, "", inline = "Level2") value_0_65 = input(0.65, "", inline = "Level2") color_0_65 = input(#009688, "", inline = "Level2") processLevel(show_0_65, value_0_65, color_0_65) show_0_786 = input(true, "", inline = "Level3") value_0_786 = input(0.786, "", inline = "Level3") color_0_786 = input(#64b5f6, "", inline = "Level3") processLevel(show_0_786, value_0_786, color_0_786) show_1 = input(true, "", inline = "Level3") value_1 = input(1, "", inline = "Level3") color_1 = input(#787b86, "", inline = "Level3") processLevel(show_1, value_1, color_1) show_1_272 = input(false, "", inline = "Level4") value_1_272 = input(1.272, "", inline = "Level4") color_1_272 = input(#81c784, "", inline = "Level4") processLevel(show_1_272, value_1_272, color_1_272) show_1_414 = input(false, "", inline = "Level4") value_1_414 = input(1.414, "", inline = "Level4") color_1_414 = input(#f44336, "", inline = "Level4") processLevel(show_1_414, value_1_414, color_1_414) show_1_618 = input(true, "", inline = "Level5") value_1_618 = input(1.618, "", inline = "Level5") color_1_618 = input(#2196f3, "", inline = "Level5") processLevel(show_1_618, value_1_618, color_1_618) show_1_65 = input(false, "", inline = "Level5") value_1_65 = input(1.65, "", inline = "Level5") color_1_65 = input(#2196f3, "", inline = "Level5") processLevel(show_1_65, value_1_65, color_1_65) show_2_618 = input(true, "", inline = "Level6") value_2_618 = input(2.618, "", inline = "Level6") color_2_618 = input(#f44336, "", inline = "Level6") processLevel(show_2_618, value_2_618, color_2_618) show_2_65 = input(false, "", inline = "Level6") value_2_65 = input(2.65, "", inline = "Level6") color_2_65 = input(#f44336, "", inline = "Level6") processLevel(show_2_65, value_2_65, color_2_65) show_3_618 = input(true, "", inline = "Level7") value_3_618 = input(3.618, "", inline = "Level7") color_3_618 = input(#9c27b0, "", inline = "Level7") processLevel(show_3_618, value_3_618, color_3_618) show_3_65 = input(false, "", inline = "Level7") value_3_65 = input(3.65, "", inline = "Level7") color_3_65 = input(#9c27b0, "", inline = "Level7") processLevel(show_3_65, value_3_65, color_3_65) show_4_236 = input(true, "", inline = "Level8") value_4_236 = input(4.236, "", inline = "Level8") color_4_236 = input(#e91e63, "", inline = "Level8") processLevel(show_4_236, value_4_236, color_4_236) show_4_618 = input(false, "", inline = "Level8") value_4_618 = input(4.618, "", inline = "Level8") color_4_618 = input(#81c784, "", inline = "Level8") processLevel(show_4_618, value_4_618, color_4_618) show_neg_0_236 = input(false, "", inline = "Level9") value_neg_0_236 = input(-0.236, "", inline = "Level9") color_neg_0_236 = input(#f44336, "", inline = "Level9") processLevel(show_neg_0_236, value_neg_0_236, color_neg_0_236) show_neg_0_382 = input(false, "", inline = "Level9") value_neg_0_382 = input(-0.382, "", inline = "Level9") color_neg_0_382 = input(#81c784, "", inline = "Level9") processLevel(show_neg_0_382, value_neg_0_382, color_neg_0_382) show_neg_0_618 = input(false, "", inline = "Level10") value_neg_0_618 = input(-0.618, "", inline = "Level10") color_neg_0_618 = input(#009688, "", inline = "Level10") processLevel(show_neg_0_618, value_neg_0_618, color_neg_0_618) show_neg_0_65 = input(false, "", inline = "Level10") value_neg_0_65 = input(-0.65, "", inline = "Level10") color_neg_0_65 = input(#009688, "", inline = "Level10") processLevel(show_neg_0_65, value_neg_0_65, color_neg_0_65)
2-شیوه اضافه کردن اندیکاتور Auto Fib Extension به تریدینگ ویو با استفاده از اسکریپت
شیوه تنظیم کردن این اندیکاتور
اصلا برای استفاده از این اندیکاتور نیاز به تغییر در تنظیمات آن نداریم. اما این اندیکاتور تنظیمات زیادی برای تنظیم رنگ و ضخامت خطوط دارد که در ادامه مشاهده می فرمایید.
نویسنده و گرد آورنده : مصطفی اجارستاقی
کاربرگرامی جهت بهبود کیفی مطالب لطفا دیدگاه های ارزشند خود را با ما به اشتراک بگذارید.
باسلام
آیا برای استفاده باید هتما اشتراک تریدینگ ویو داشته باشیم
با سلام
برای استفاده از امکانات اندیکاتور ها و اسکریپت نویسی در سایت تریدینگ ویو نیاز به اشتراک ندارد ولی باید ثبت نام را انجام دهید که آن هم رایگان و ظرف یک دقیقه انجام می گیرد.
موفق و موید باشید