اخیراً من مشکلی را که به نظر نمی رسد خودم را حل کنم ، گیر افتادم ، و هیچ راه حلی در این بخش پیدا نکردم و واقعاً متخصص در تنظیم شاخص ها در MQL4 نیستم.
مسئله ممکن است بی اهمیت باشد: من می خواهم یک شروع سفارشی برای محاسبه استاندارد نشانگر SAR پارابولیک تنظیم کنم. بنابراین باید بتوانم دو متغیر را وارد کنم.
Fore example: input double CandlesBack = 10; input bool Direction = true; >محاسبه SAR DOTS اکنون باید در پایین ترین شمع در 10 شمع گذشته شروع شود.
اگر می توانید در مورد این مسئله به من کمک کنید یا جهت ناخالصی را به من بدهید که باید شروع به تغییر کد کنم ، بسیار سپاسگزارم.
در اینجا کد است:
//+------------------------------------------------------------------+ // |parabolic. mq4 | // |کپی رایت 2005-2014 ، Corp. نرم افزار Metaquotes | // |https://www. mql4. com | //+------------------------------------------------------------------+ #ویژگی کپی رایت "2005-2014 ، Metaquotes Software Corp." #ویژگی ارتباط دادن "https://www. mql4. com" #ویژگی شرح "سیستم توقف و معکوس پارابولیک" #ویژگی سخت گیرانه // --- تنظیمات نشانگر #ویژگی شاخص_چارت_ویندو #ویژگی نشانگر_بفرز 1 #ویژگیشاخص_ color1 آهک// --- پارامترهای ورودی ورودی دو برابرinpsarstep =0. 02; // گام ورودی دو برابرinpsarmaximum =0.2; // بیشترین // ---- بافر دو برابرExtsarbuffer [] ؛// --- متغیرهای جهانی دو برابرextsarstep ؛دو برابرextsarmaximum ؛در نظر گرفتنextlasterverse ؛بولextdirectionlong ؛دو برابرextlaststep ، extlastep ، extlastsar ؛دو برابرextlasthigh ، extlastlow ؛//+------------------------------------------------------------------+ // |عملکرد اولیه سازی شاخص سفارشی | //+------------------------------------------------------------------+ خالی در عین حال() <// --- بررسی داده های ورودی if(inpsarstep0. 0) 0. 02; چاپ("Input Parameter inpsarStep دارای مقدار نادرست است. نشانگر از مقدار استفاده می کند"، extsarstep ،"برای محاسبات.");> دیگرextsarstep = inpsarstep ؛if(inpsarmaximum0. 0) 0.2; چاپ("input Parameter inparmaximum دارای مقدار نادرست است. نشانگر از مقدار استفاده می کند"، extsarmaximum ،"برای محاسبات.");> دیگرextsarmaximum = inpsarmaximum ؛// --- تنظیمات نقاشیindicatordigits (رقم) ؛setIndexStyle (0,draw_arrow) ؛setIndexArrow (0,159); // ---- بافر نشانگر steindexbuffer(0، extsarbuffer) ؛// --- نام کوتاه را تنظیم کنیدindentrshortname ("SAR ("+دوتایی(extsarstep ،2)+","+دوتایی(extsarmaximum ،2)+")"); // --- متغیرهای جهانی را تنظیم کنیدextlasterverse =0؛extdirectionlong =دروغ؛extlaststep = extlastep = extlastsar =0.0؛extlasthigh = extlastlow =0.0; //----> //+------------------------------------------------------------------+ // |SAR PARABOLIC | //+------------------------------------------------------------------+ در نظر گرفتن محاسبه کردن(محاصره کردن در نظر گرفتننرخ_تاتال ،محاصره کردن در نظر گرفتنPREV_COLCOLATED ،محاصره کردن زمان قرار& زمان[]،محاصره کردن دو برابر& باز کن[]،محاصره کردن دو برابرو بالا [] ،محاصره کردن دو برابر& کم[]،محاصره کردن دو برابر& بستن[]،محاصره کردن طولانی& tick_volume [] ،محاصره کردن طولانی& جلد[]،محاصره کردن در نظر گرفتن& گسترش[])<بولdir_long ؛دو برابرLast_High ، Last_low ، EP ، SAR ، مرحله ؛در نظر گرفتنمن؛// --- تعداد حداقل نرخ را بررسی کنید if(نرخ_تاتال 3) برگشت(0); // --- شمارش از 0 تا نرخ_تاتال arraysetasseries(Extsarbuffer ،دروغ); arraysetasseries(بالا ،دروغ); arraysetasseries(کم،دروغ); // --- موقعیت فعلی را برای محاسبات تشخیص دهیدi = prev_cccolled-1; // --- محاسبات از ابتدا؟ if(i1) 0؛dir_long =درست است، واقعی؛مرحله = extsarstep ؛last_high =-10000000. 0؛last_low =10000000. 0؛SAR =0؛من =1; در حالی که(i1) if(last_low>پایین [i]) last_low = low [i] ؛if(Last_highif(high[i]>بالا [i-1] && low[i]>کم [من-1]) زنگ تفريح; if(بالا [من]1] && پایین [i]1]) دروغ; زنگ تفريح;> i++;> // --- با صفر شروع کنید با هم اری کردن(Extsarbuffer ،0.0); // --- برو چک if(dir_long)1]; ep=high[i];> دیگر 1]; ep=low[i];> i++;> دیگر <// --- محاسبات باید ادامه یابد. آخرین مقادیر را بازیابی کنید i=ExtLastReverse; step=ExtLastStep; dir_long=ExtDirectionLong; last_high=ExtLastHigh; last_low=ExtLastLow; ep=ExtLastEP; sar=ExtLastSAR;> // --- چرخه اصلی در حالی که(i// --- معکوس را بررسی کنید if(dir_long && low [i]1]) درست است، واقعی، مرحله ، پایین [i] ، last_high ، ep ، sar) ؛مرحله = extsarstep ؛dir_long =دروغ؛EP = پایین [i] ؛last_low = پایین [i] ؛extsarbuffer [i ++] = last_high ؛ادامه هید;> if(!dir_long && high[i]>extsarbuffer [i-1]) دروغ، مرحله ، last_low ، high [i] ، ep ، sar) ؛مرحله = extsarstep ؛dir_long =درست است، واقعی؛EP = بالا [i] ؛last_high = high [i] ؛extsarbuffer [i ++] = last_low ؛ادامه هید;> //---sar = extsarbuffer [i-1]+مرحله*(ep-extsarbuffer [i-1]); // --- طولانی؟ if(dir_long)<if(EPif((مرحله+extsarstep)<=ExtSarMaximum) step+=ExtSarStep;>if(بالا [من]1] && i ==2) SAR = extsarbuffer [i-1]; if(sar>کم [من-1]) SAR = کم [i-1]; if(sar>کم [من-2]) SAR = کم [i-2]; if(sar>پایین [i])درست است، واقعی، مرحله ، پایین [i] ، last_high ، ep ، sar) ؛مرحله = extsarstep ؛dir_long =دروغ؛EP = پایین [i] ؛last_low = پایین [i] ؛extsarbuffer [i ++] = last_high ؛ادامه هید;> if(EPدیگر // کوتاه <if(ep>پایین [i])<if((مرحله+extsarstep)<=ExtSarMaximum) step+=ExtSarStep;>if(کم [من]1] && i ==2) SAR = extsarbuffer [i-1]; if(سار1]) SAR = بالا [i-1]; if(سار2]) SAR = بالا [i-2]; if(ساردروغ، مرحله ، last_low ، high [i] ، ep ، sar) ؛مرحله = extsarstep ؛dir_long =درست است، واقعی؛EP = بالا [i] ؛last_high = high [i] ؛extsarbuffer [i ++] = last_low ؛ادامه هید;> if(ep>low[i]) ep=last_low=low[i];> ExtSARBuffer[i++]=sar;> // ---- Oncalculate انجام شده است. PREV_CCOCALLED جدید را برگردانید. برگشت(rates_total);> //+------------------------------------------------------------------+ // |برای ادامه محاسبات بیشتر ، آخرین مقادیر را ذخیره کنید | //+------------------------------------------------------------------+ خالیsavelastreverse (در نظر گرفتنمعکوس،بولدیر ،دو برابرگام،دو برابرLast_low ،دو برابرLast_high ،دو برابرep ،دو برابرSAR)if(extlasterwerse2) extlasterverse =2; ExtDirectionLong=dir; ExtLastStep=step; ExtLastLow=last_low; ExtLastHigh=last_high; ExtLastEP=ep; ExtLastSAR=sar;> //+------------------------------------------------------------------+
- نحوه اسکن تمام نمادها با شرایط خاص و نشان دادن نتایج
- کمک کد MQL4
- شماره متغیر جهانی
دوره ی فارکس...
ما را در سایت دوره ی فارکس دنبال می کنید
برچسب : نویسنده : مهناز افشار بازدید : 30 تاريخ : شنبه 21 مرداد 1402 ساعت: 15:41