
مدلسازی ریکوتها در تستر و تحلیل ثبات اکسپرت
استراتژیتسترِ نرمافزار متاتریدر ۴، ابزاری فوقالعاده برای ارزیابی کیفیت، یا بازبینی و تایید یک استراتژی محققشده در اکسپرت، بهحساب میآید. اما اکنون، بهنظر من دو ویژگی کاملاً حیاتی دارد [که به آنها نیاز داریم]. اول، از تیک واقعی تاریخچه برای یک اَرز استفاده نمیکند و تیکها را بر اساس کندلهای یک دقیقهای، مدلسازی میکند. دوم، پدیدهی ریکوت که اغلب، بروکرها دارند را لحاظ نمیکند – بهخصوص روی تریدهایی با حجم پایین یا بسیار بالا، و نیز در شرایطی که بازار اصطلاحاً “لاغر” است و نقدینگی کمی دارد. در شرایطی که ریکوت محتمل است، هیچ فرصتی برای بررسی کلی اکسپرت منجر به رسیدن به “هدف نهایی”، ترید روی “میلهها”، پرشها و [اعلام] قیمتهای غیربازاری، نخواهد شد. بارها توضیح داده و اثبات شدهاست که این مدل استراتژی روی حسابهای واقعی کارآمد نخواهد بود، اما متاسفانه، اغلب اوقات فهمیدن اینکه آیا اکسپرت شما بر اساس “میلهها” کار میکند یا نه، بسیار سخت است. تاریخچهی نمودار همراه با تریدهای روی آن را اگر نگاه کنید میبینید که بعضی مواقع تستر، معاملاتی را روی پرشهای نمودار باز میکند، اما همیشه هم اینطور نیست. همچنین پیشبینی اینکه استراتژی ریکوت در این هنگام، کمکم از بین میرود، یا اینکه فقط سوددهی کم میشود، کار سختی است. در این مقاله قصد دارم روش خودم را برای حل این مشکل ارائه کنم.
فرضیات و تعریفها
ریکوت، پاسخ برورکر به معاملهایست که شما به سرور ترید ارسال میکنید. این پاسخ بروکر ما را آگاه میکند که قیمت (قیمتی که در آن میخواستید معامله باز کنید)، بهنوعی، دیگر وجود ندارد. این اتفاق اغلب بهخاطر نقدینگی کم و نوسانات بالا در بازار اتفاق میاُفتد و قیمت پس از درخواست، تغییر زیاد و ناگهانی دارد. همچنین ریکوت هنگام خوانشهای غیربازاری و یا پَرش حساب، بسیار رایج است.
بیایید فرض کنیم اکسپرت فقط معاملاتی را مانند OP_SELLو OP_BUY باز و بسته میکند. ماهیت تغییر نمیکند بلکه برخی از توابع سادهتر میشوند.
مدلسازی ریکوتها در استراتژیتستر
بیاییم هدف خود را شبیهسازی ریکوتها با احتمال از پیش تعیینشده در بازشدن و بستهشدن معاملات قرار دهیم. ابتدا بیایید یک متغیر اکسترنال خاص را وارد کنیم که احتمال وقوع ریکوت ساختگی ما را تعیین میکند. بنابر تحقیقات و رصدهای من، احتمال ریکوت روی جفتاَرزهایی که نقدینگی کمی دارند، نزدیک به ۹۰ درصد است – بنابراین این مقدار را در تحلیل اکسپرت بهکار میگیریم.
extern int RQF_TEST = 90;
از آنجایی که ما از تابع MathRand برای بازگشت یک مقدار دلخواه استفاده میکنیم، بهتر است که دنبالهی اعداد شبهتصادفی را مقداردهی اولیه کنیم. برای این منظور تابع MathSrand در آغاز کارِ اکسپرت، اجرا خواهد شد. برای جزئیات بیشتر در رابطه با تولید مقادیر تصادفی، و همینطور هدف این تابع، میتوانید به کتاب مرجع زبان MQL مراجعه کنید. ناگفته نماند که اگر از تابع MathSrand استفاده نکنیم، علیرغم تعداد “تصادفیبودنها”، با هر بار تست استراتژی، نتایج یکسانی بدست خواهیم آورد. و بهطور کلی، بهدرد ما نمیخورد:
int start() { //---- MathSrand(TimeCurrent());
بعد از این باید توابع خودمان یعنیOrderSend و OrderClose را بنویسیم. اسم آنها را میگذاریم MyOrderSend و MyOrderClose:
int MyOrderSend(int req_prob, string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment="", int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { if(IsTesting() && (MathRand() % 100) < req_prob && (cmd == OP_SELL || cmd == OP_BUY)) return (-1); //modelling requote return(OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color)); } bool MyOrderClose(int req_prob, int ticket, double lots, double price, int slippage, color Color=CLR_NONE) { if(IsTesting() && (MathRand() % 100) < req_prob) return (false); //modelling requote return (OrderClose(ticket, lots, price, slippage, Color)); }
اکنون باید تمام توابعOrderSend و OrderClose را در اکسپرت با MyOrderSend و MyOrderClose و با مشخص کردن متغیر اکسترنال از پیش واردشدهی RQF_TEST، بهعنوان اولین استدلال، جایگزین کنیم. مثالی از اکسپرت خود من را ملاحظه میکنید:
: OrderClose -> MyOrderClose
if(MyOrderClose(RQF_TEST, ticket, amount, Bid, 0, Blue)) // PREV: if(OrderClose(ticket, amount, Bid, 0, Blue)) { Print("Skalpel: Order #" + ticket + " closed! (BUY, " + Bid + ")"); //... Something } else { // Requote or something like this Print("Skalpel: Error while closing order #" + ticket + " (BUY)!"); // ... Something }
: OrderSend -> MyOrderSend
ticket = MyOrderSend(RQF_TEST, Symbol(), OP_BUY, amount, Ask, 0, Bid-StopLoss*Point, Bid+TakeProfit*Point, NULL, EXPERT_MAGIC, 0, Blue); // PREV: OrderSend(Symbol(), OP_BUY, amount, Ask, 0, Bid - StopLoss*Point, // Bid+TakeProfit*Point, NULL, EXPERT_MAGIC, 0, Blue); if(ticket > 0) Print("Skalpel: Order #" + ticket + " opened! (BUY)"); else Print("Skalpel: Error while placing order."); // ... Requote or something like this
نتیجهگیری و تحلیل نتایج
اول از همه مقدار متغیر RQF_TESTرا باید توضیح داد. این متغیر کمیت ریکوتها را برای ۱۰۰ ترید تعیین میکند و بر این اساس، میتواند مقداری از صفر (ریکوتی اصلاً وجود ندارد) تا ۱۰۰ (بازکردن یا بستن معامله کاملاً غیرممکن است) داشته باشد. برای مثال، اگر RQF_TEST برابر با ۹۰ باشد، این بدان معناست که تقریباً ۹۰ تلاش از ۱۰۰ تلاش، برای بازکردن یا بستن معامله با موفقیت انجام نخواهد شد؛ و به همین شکل ریکوتها شبیهسازی خواهند شد.
درواقع، نتایجی که در مقادیر مختلف RQF_TEST بدست آمده، ثبات استراتژی شما به ریکوتها و اختلاف بین روند تیک [دریافتی از] تستر و بروکر را، نشان میدهد.
اگر نتایج هنگام افزایش RQF_TEST بدتر شوند، ضروری است که سودآوری آن استراتژی بررسی شود، چراکه حساسیت به ریکوت یعنی شما دارید روی لبهی تیز و موقت پرشهای پیپ (pip) قدم برمیدارید. در مورد عواقب استفاده از چنین مشاورههایی، بارها مطالبی گفته شده است.
برای مثال بیایید نموداری متعادل از نحوهی کار یک اکسپرت کلاسیک را روی پَرشهای نمودار (بازار پُرنوسان) همراه با مقادیر مختلف RQF_TEST، درنظر بگیریم. این اکسپرت از مقالهی “My first Grail” گرفته شدهاست. و برای مشاهده در اینجا، اندکی آن را تغییر دادهایم. تمام معاملاتِ نوعِ limit با معاملات معمولی بازار تحقق یافتهاند. و همچنین پارامترها نیز انتخاب شدهاند تا نمودار ضعیف شدن پارامترها را در بدترین و آشکارترین ریکوتها، نشان دهد.
بدون ریکوت (RQF_TEST = 0):

۹۰ درخواست از ۱۰۰تا، ریکوت خواهد شد (RQF_TEST = 90):

مشخص است که شرایط کاملاً ناامیدکننده است. بخصوص در تصریح اینکه تست EURCHF کاملاً یک جفت غیرنقدی است و ریکوت حتی در بازار آرام هم خیلی رایج است، چه برسد به بازارهای پرنوسان! بنابراین سودآوری ما در استفاده از اکسپرت کمکم محو میشود، علیرغم اینکه در نبود ریکوت، نموداری بسیار زیبا داریم.
نکات و افزودنیها
در واقع، اکنون میدانیم که پیدا کردن اکسپرتی که از سودده به غیرسودده بهخاطر ریکوتها تبدیل شود، کار سختی است. من به دنبال چنین اکسپرتی بودهام، که کمشدن کیفیت آن را بتوان بهوضوح روی بالانس نمودار، برای مدت زمانی طولانی، نشان داد. معمولاً ریکوت (حتی با احتمال ۵۰ درصد) کمیت معاملات و سود شما را، آنهم وقتی که نمودار ثابت است، بهشدت تحت تاثیر قرار میدهد. توضیح سادهای برای این موضوع وجود دارد: اگر بروکر به شما اجازه ندهد که در ۹۰ درصد از ۱۰۰ درصد مواقع، معاملهای روی “سهام” باز کنید، در باقیماندهی ۱۰ درصد مواقع، تنها میتوانید چند پیپ سود کرده، آنهم تا زمانی که ممنوعیتی در استفاده از اکسپرتها نداشته باشید. چنین شرایطی در مقالهی”My first Grail” توضیح داده شدهاست. اما اگر فرض کنیم که بروکر ریکوت ندهد (که بسیار بعید است)، آنگاه سود ده برابر کاهشیافته (که دقیقاً همینطور است و اکسپرت ۹۰ “سهم” از ۱۰۰ سهم را بهراحتی از دست میدهد) تمام ویژگیهای مثبت “هدف نهایی ما” را از بین میبرد – و حتی کار ما از سود بانکی هم کمتر به ما سود خواهد داد.
این مقاله دارای فایل پیوست است.
فایل پیوست این مقاله را میتوانید از اینجا دانلود کنید .
۳۳ مورد نظر
ed drug comparison
cheep cialis canada cialis wallmart cialis overdose
buy prescription drugs online ed cures buy medication online
cialis wikipedia cialis usa online on line cialis
prednisone 20mg online pharmacy prednisone 5443 prednisone ordering online
prednisone for sale online order prednisone buy prednisone online no prescription
ed therapy best cure for ed hims ed pills
ed drugs list erectyle dysfunction male enhancement pills
worming goats with ivermectin ivermectin and covid mayo clinic albendazole vs ivermectin
buy prescription drugs buy prescription drugs online legally prescription drugs online without
ivermectin for chickens egg withdrawal where can i buy ivermectin for dogs ivermectin for mange
cheap pet meds without vet prescription the canadian drugstore prescription drugs online
propecia hair growth propecia sale finasteride 5 mg
medicine for erectile ed treatment review medications for ed
stromectol for humans for sale stromectol price usa buy stromectol online
generic drugs without doctor’s prescription highest rated canadian pharmacies buying from canadian online pharmacies
india pharmacies shipping to usa overseas pharmacies online prescriptions from india
erythromycin gastroparesis
ed pills comparison how to cure ed best drug for ed
provigil order online order modafinil 100mg pills buy modafinil 200mg sale
buy provigil online buy provigil 100mg sale
provigil 100mg for sale order provigil sale
price of cialis 20 mg online purchase of tadalafil in india cialis 20mg
provigil for sale modafinil 200mg generic
stromectol 12 mg tablets ivermectin without a doctor prescription stromectol
provigil sale
lowest price tadalafil tadalafil best price 20 mg tadalafil 10mg price
provigil cost provigil 200mg drug
viagra where to buy price for viagra viagra
viagra pills viagra where to buy sildenafil 100 mg lowest price
stromectol price usa stromectol price usa stromectol for humans for sale
order generic provigil 100mg modafinil tablet
erythromycin ophthalmic solution