
ترسیم سطحهای اُفقی عبوری[۱] با استفاده از فراکتالها
فراکتالها
فراکتالها یکی از پنج اندیکاتور استراتژی ترید بیل ویلیامز[۲] بهحساب میآیند که به شما این امکان را میدهند که سقف یا کف را پیدا کنید. تعریف تکنیکال یک فراکتال رو به بالا میشود: یک سری از حداقل پنج میله (کندل) متوالی که دو میله (کندل) با ماکسیسممهای پایینتر را میتوان دید، که دُرُست قبل و بعد از بالاترین ماکسیمم واقع شدهاند. همین ساختار، منتها برعکس آن برای فراکتالهای پایین صدق میکند (یعنی یک سری از حداقل پنج میله (کندل) متوالی که دو میله (کندل) با مینیممهای بالاتر را میتوان دید، که دُرُست قبل و بعد از پایینترین مینیمم واقع شدهاند). فراکتالها مقادیر high و low دارند که با فلشهایی روی نمودار مشخص شدهاند.
اگر با دقت به نمودار نگاه کنید، متوجه میشوید که تجاوز از سطح (level) فراکتال، خود اغلب تمایل به ادامه حرکت در جهت فراکتال دارد. در بازار رو به صعود، این مدل تجاوز برای نگه داشتن یک پوزیشن طولانیمدت به درد خواهد خورد؛ سطح پایین یک فراکتال، خط support است که تجاوز از آن میشود سیگنالی برای بستن آن پوزیشن طولانیمدت. همهچیز دقیقاً به همین سبک است، اما در روند رو به نزول، برعکس میشود. استفاده از این استراتژی، وقتی بازار آرام و بدون روند، صاف جلو میرود، هیچ نتیجهای برای شما نخواهد داشت.
اندیکاتور سطحهای فراکتال
برای اینکه، هرچه سادهتر، سطح آخرین فراکتال بالایی یا پایینی را تعیین کنیم، میتوانیم یک اندیکاتور ساده بنویسیم که این سطوح را با خطوط افقی ترسیم کند.
با مراجعه به قسمت Expert Advisor Wizard شالودهی اصلی اندیکاتور را ایجاد میکنیم. برای این کار باید دنبالهای از دستورات را اجرا کنیم: “File -> Create” یا انتخاب گزینهی در نوارابزار.Expert Advisor Wizard برای شما روی صفحه باز خواهد شد.
- در گام اول باید “Custom Indicator” را انتخاب کنید.
- در گام دوم، باید اسم، نویسنده، لینک و پارامترها را مشخص کنید، و از آنجایی که ما از اندیکاتور “فراکتالز/Fractals” برای اندیکاتورمان استفاده میکنیم، هیچ پارامتر قابلتغییری نخواهیم داشت، بنابراین فقط اسم، نویسنده، و لینک را مشخص میکنیم.
- در گام سوم،wizard به ما پیشنهاد میدهد پارامترهای نمایشی این اندیکاتور سفارشی را مشخص کنیم. از آنجایی که اندیکاتور ما باید روی نمودار اصلی نمایش داده شود، تیک گزینهی”Indicator in separate window” را نمیزنیم. در ادامه، به ما پیشنهاد میشود که شاخصها را تعیین کنیم. به دو شاخص نیاز خواهیم داشت: یکی برای سطح بالایی فراکتال، و دیگری برای سطح پایینی آن. هر دو شاخص نوع “Line” خواهند داشت، و برای شاخص اول رنگ آبی و برای شاخص دوم رنگ قرمز را انتخاب میکنیم و سپس دکمهی Finish را میزنیم.
ساخت شالودهی این برنامه تمام شدهاست. و شکلی این چنین خواهیم داشت:
//+------------------------------------------------------------------+ //| FractalsLine.mq4 | //| Copyright © ۲۰۰۶, Victor Chebotariov | //| http://www.chebotariov.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright © ۲۰۰۶, Victor Chebotariov" #property link "http://www.chebotariov.com/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- //---- return(0); } //+------------------------------------------------------------------+
اکنون فقط اضافه کردن چند بخش کد باقی میماند و اندیکاتور ما آماده خواهد بود.
نیاز داریم:
- مقدار (value) اندیکاتور را برای هر میله (کندل)، روی نمودار کنونی، محاسبه کنیم. برای این کار به این سیکل نیاز داریم:
int i=Bars-counted_bars-1; while(i>=0) { // Here we calculate the value of the indicator for each bar (i) i--; }
- برای دریافت مقادیر فراکتالهای بالایی و پایینی:
double upfrac_val=iFractals(NULL,0,MODE_UPPER,i+1); double lofrac_val=iFractals(NULL,0,MODE_LOWER,i+1);
- مهمتر از همه – بهخاطر سپردن مقدار آخرین فراکتال. برای این کار به متغیرهای جهانی توسل میجوییم:
if(upfrac_val>0) { GlobalVariableSet(Symbol()+Period()+"upfrac",upfrac_val); } else if(lofrac_val>0) { GlobalVariableSet(Symbol()+Period()+"lofrac",lofrac_val); }
- فقط خواندن دادهها از متغیرهای جهانی و ارجاع آنها به شاخصهای ما باقی مانده است:
ExtMapBuffer1[i] = GlobalVariableGet(Symbol()+Period()+"upfrac"); ExtMapBuffer2[i] = GlobalVariableGet(Symbol()+Period()+"lofrac");
وضعیت اندیکاتور آمادهی ما به این شکل خواهد بود:
//+------------------------------------------------------------------+ //| FractalsLine.mq4 | //| Copyright © ۲۰۰۶, Victor Chebotariov | //| http://www.chebotariov.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright © ۲۰۰۶, Victor Chebotariov" #property link "http://www.chebotariov.com/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- int i=Bars-counted_bars-1; while(i>=0) { double upfrac_val=iFractals(NULL,0,MODE_UPPER,i+1); double lofrac_val=iFractals(NULL,0,MODE_LOWER,i+1); if(upfrac_val>0) { GlobalVariableSet(Symbol()+Period()+"upfrac",upfrac_val); } else if(lofrac_val>0) { GlobalVariableSet(Symbol()+Period()+"lofrac",lofrac_val); } ExtMapBuffer1[i] = GlobalVariableGet(Symbol()+Period()+"upfrac"); ExtMapBuffer2[i] = GlobalVariableGet(Symbol()+Period()+"lofrac"); i--; } //---- return(0); } //+------------------------------------------------------------------+
فقط کامپایل کردن آن مانده که میرویم سراغ “File -> Compile” یا گزینهی را در نوارابزار انتخاب میکنیم.
اندیکاتور تازهازتنوردرآمده را میتوان روی نمودار انداخت.
کاربرد عملی
برای مثال اول، میشود گفت، در یک بازار صعودی، هنگام جابهجایی StopLoss زیر خط قرمز، levelهای فراکتال بسیار به درد ما خواهند خورد. طبیعتاً در یک بازار ریزشی هم باید استاپ لاس را بالای خط آبی نگه دارید. با این روش، فاصلهای ایمن و هوشمند بین بازار و StopLoss را، تضمینشده، خواهید داشت.
برای مثال، وارد بازار شدهایم (نمودار را ببینید، علامت ۱) و stop ما بالای خط آبی است (علامت ۲)، اگر خط قرمز از آنجا (علامت ۳) شکسته شود (و مستقیم از وسط میلهها (کندلها) عبور کند)[۳]، StopLoss را جابهجا میکنیم (علامت ۴)، و اگر شکستن جدیدی اتفاق بیفتد (علامت ۵) (و عبور مستقیم از وسط میلهها (کندلها) را داشته باشیم)، StopLoss را بهطور مشابه جابهجا میکنیم (علامت ۶). اگر خط آبی (علامت ۷) شکسته شود (و مستقیم از وسط میلهها (کندلها) عبور کند)، پوزیشن را میبندیم.
برای استفاده از FractalsLine (خطوط فراکتال) بهعنوان یک تریلینگ اِستاپ، باید دو بخش کوچک کد به اکسپرت اضافه کنیم:
دریافت داده از اندیکاتور FractalsLine:
double FLU = iCustom(NULL,0,"FractalsLine",0,0); // Blue fractal line double FLL = iCustom(NULL,0,"FractalsLine",1,0); // Red fractal line
تریلینگ اِستاپ بر اساس اندیکاتور FractalsLine:
if(Close[۰]>FLU) //Trailing-stop for the long positions { if(OrderStopLoss()<FLL-۳*Point || OrderStopLoss()==۰) { OrderModify(OrderTicket(),OrderOpenPrice(),FLL-۳*Point,OrderTakeProfit(),۰,Green); return(۰); } }
if(Close[0]<FLL) //Trailing-stop for the short positions { if(OrderStopLoss()>FLL+(Ask-Bid+3)*Point || OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),FLL+(Ask-Bid+3)*Point,OrderTakeProfit(),0,Red); return(0); } }
استفاده از تریلینگ اِستاپ بر اساس اندیکاتور FractalsLine در MACD Sample expert advisor نتایج مثبتی به ما داد. این موضوع را از تستهای تطبیقی میتوان دریافت.
تست کردن Standard MACD Sample
تست کردن MACD Sample با تریلینگ اِستاپ برمبنای اندیکاتور FractalsLine
نتیجهگیری
تستهایی که به آنها اشاره شد، نشان دادند که استفاده از FractalsLine سوددهی را افزایش داده و ضرر را نیز کم کرده است.
[۱]) منظور خطهای افقی است که روی نمودار ترسیم شده و حدود چیزی را برای ما تعیین میکنند. منظور از عبوری این است که این خطوط وقتی ترسیم میشوند از داخل کندلها و دقیقتر بگوییم از سرتاسر نمودار قابلمشاهده، عبور میکنند. (مانند همان خط افقی که برای تعیین حد سود، خودمان میکشیم.)
[۲]) Bill Williams’ trading strategy
[۳]) برای توضیح مفهوم کلمهی Breakthrough توضیحات بنفشرنگ آورده شدهاند. همانطور که در شکل میبینید خطهای آبی و قرمز از وسط میلهها عبور کردهاند.
این مقاله دارای فایل پیوست است.
۲۳ مورد نظر
male dysfunction pills
canadian cialis cialis usa online cialis effect on blood pressure
by prednisone w not prescription buy prednisone prednisone oral
cialis switzerland purchasing cialis in the usa cialis buy australia online
how to buy prednisone online purchase prednisone canada prednisone 50 mg buy
online medications ed dysfunction male dysfunction treatment
ivermectin for dogs dosage ivermectin brand ivermectin cost in usa
no prescription canadian cialis best price for daily cialis brand cialis canada
ivermectin horse paste ingredients buy stromectol uk ivermectin for rabbits
canadian pharmacy buy prescription drugs without doctor pain meds without written prescription
ed meds online without doctor prescription legal to buy prescription drugs from canada amoxicillin without a doctor’s prescription
how much ivermectin to give a dog for worms how long does it take for ivermectin to work topical ivermectin for dogs
best ed pills at gnc mens ed pills best ed pills non prescription
propecia generic finasteride prosteride propecia 1mg generic
drug finasteride finasteride without doctor propecia hair
legitimate online pharmacies india prescriptions from india pharmacy from india
pills for ed online ed pills cheap erectile dysfunction pill
stromectol 12 mg tablets stromectol stromectol 3 mg tablets price
stromectol stromectol pills for humans stromectol without a doctor prescription
cialis pharmacy cialis pills price of cialis 20 mg
clomid clomid for sale clomid
online purchase of tadalafil in india tadalafil tadalafil
tadalafil 20 mg buy online online purchase of tadalafil in india cialis 20mg