
تِستِر در نرمافزار متاتریدر 4 : چیزی که به آن نیاز دارید
کار کردن در بازارهای مالی بدون یک سیستم ترید غیرممکن است. تریدرها وقت و تلاش زیادی را صرف میکنند تا اصول [ترید] را توسعه داده و پوزیشنهای مختلف را باز کرده یا ببندند، و بهصورت تجربی روشهایی را برای اصلاح این پوزیشنها با تریلینگ اِستاپ، انتخاب میکنند. اطلاعات ما از علوم مختلف گرفته شدهاست، و وقتی یک استراتژی شکل میگیرد، اولین کار این است که در سیستم ترید مکانیکی (MTS) روی تاریخچهی حساب (هیستوری)، آن را تست کنیم. این بدان معناست که قسمت تستر، مهمترین بخش در برنامههای این چنینی است.
دو شکل از مدلسازی
تمام برنامههایی که مرتبط با تحلیل تکنیکال هستند، آپشن تست را ندارند، یا حتی نرمافزارهای ترید! حتی اگر یک برنامه ادعا کند که این آپشن را در خود دارد، باز هم محتمل است [برای تست] با خطاهای زیادی مواجه شویم یا در ساختار برنامه محدودیتها و ممنوعیتهای زیادی باشد. به همین دلیل است که هنگام توسعهی تستر در متاتریدر ۴، از پیش تعریف کردن راهحل برای مسائل ساختاری، و لحاظ کردن این موارد در برنامه، جزء مهمترین کارها بوده است. در غیر این صورت همین مسائل باعث ممانعت از شکلگیری کلاسی جامع برای استراتژیها، برمبنای دانش آینده، میشدند. دو راه برای تست در برنامه برای هر استراتژی وجود دارد:
- بر اساس کندلهای تشکیلشده، که از پیش، یک فایل داده را آماده کرده، که تمام مقادیر مورد نیاز قیمتها، اندیکاتورها و دیگر پارامترها در آن موجود است و سپس این فایل به تستر فرستاده میشود (تستر خود دنبالهی مورد نیاز را برای بررسی احتمالات آینده، از نظر تئوری، تولید میکند). این اطلاعات بهشکل کندلهای تشکیلشده، بدون مدلسازی برای آرایش کندلهای قیمت، دریافت میشوند؛

- آمادهسازی فایلی که فقط حاوی قیمتهای آرایشیافته است، و فرستادن آنها به تستر که تغییر قیمت را بههمراه دارد – درست همانند زندگی واقعی. در این شرایط، تستر هیچ آیندهای در ماهیت خود ندارد.
مثلث نارنجی شکل بالا که “زمان کنونی” را نشان میدهد، در واقع دارد مقطعی را مشخص میکند که تستر در آن لحظه (در لحظهی حال) در آن قرار دارد. در موردِ اول، زمان گذشته را داریم (Last)، که در آن مقطع، تستر دادهها را پردازش کرده است، و در زمان آینده (Future)، مقطعی را داریم که تستر روی آن کار خواهد کرد. تستر، هم گذشته و هم آینده را هماکنون محاسبه کرده است (اندیکاتورها، قیمت بستهشدن، قیمت بازشدن، High و Low)، تستر فقط این دنباله را ادامه میدهد. و اگر احتمالی برای دیدن آینده (واقعی یا خطا) باشد، نتایج تست باید کاملاً بازبینی و بررسی شوند. محصور کردن و یکجا جمع کردن احتمالاتی که هماکنون از آنها [تقریباً] مطمئن هستیم بدان معنا نیست که احتمال دیگری وجود ندارد. این موضوع بهتدریج برای توسعهدهندگان و حتی کاربران تستر، تبدیل به معضلی دائمی خواهد شد.
در موردِ دوم فقط گذشته را داریم (Last)، و آیندهای وجود ندارد (مربع سیاه). در این رویکرد، همیشه فقط اطلاعاتی در مورد گذشته در اختیار داریم، و هیچچیز در مورد آینده نمیدانیم، که دقیقاً مانند ترید واقعی است. با هر تیک جدید (تغییر قیمت) در تستر در زمان حال حرکت میکنیم و آن مثلث نارنجی که زمان کنونی را نشان میدهد بهسمت راست حرکت کرده و از زمان جدید، قیمتهای جدید را دریافت میکند. هر تیک جدید “حال” را میسازد و اطلاعاتمان در مورد “گذشته” را افزایش میدهد اما هنوز “آینده” تاریک را پیش روی خود دارد. در این شرایط، تستر هیچ شانسی برای آیندهبینی ندارد – صرفنظر از اشتباهاتی که یک تریدر ممکن است هنگام نوشتن استراتژی انجام دهد.
این دقیقاً همان تفاوت بین دو رویکرد است. اولین رویکرد برای شما سادگی و سرعتی خیالی را در تست فرآهم میکند، درحالیکه دومین رویکرد به شما تضمین میدهد، که تمام استراتژیهای نوشتهشده دقیقاً مشابه و مطابق با ترید واقعی، در تغییراتِ قیمتِ برابر/یکسان، عمل خواهند کرد. به همین دلیل است که دنبالههایی که برای تستر آرایش یافته بودند را بهعنوان یک فایل ذخیره کرده که حاوی عکسهای لحظهای وضعیت کندل (فایل fxt) هستند، و میشود آنها را مانند نمودارهای معمولی از منوی File، قسمت Open Offline باز کرد.

فایلهای تستر آیکونی با حرف G (Generated/تولیدشده) دارند و اطلاعاتی در مورد نوع مدلسازی، دامنهی تغییرات آرایشیافته قیمت، عدد کندلها و تایمفریم به ما میدهند:

برای مثال اگر فایل EURUSD M15 را باز کنیم، خواهیم دید که یک کندل ۱۵ دقیقهای برای تستر دُرست شدهاست:

این تصویر پیشرفت یک کندل در تایمفریم ۱۵ دقیقه را نشان میدهد. هنگام تست اکسپرت، تستر این کندل ۱۵ دقیقهای(۲۰۰۶.۰۴.۲۱ ۱۰:۰۰)را دقیقاً در چنین توالیای دیده است. عدد تغییرات قیمت در کندل ۱ دقیقهای برابر باعدد تغییرات کندل طیِ مدتِ تست است. بنابراین، در هر نقطهی زمانی تستر قیمت بازشدن صحیح (که ثابت و برابر با [Open[0 است)، قیمتهای حداقل و حداکثری صحیح (که ممکن است همراه با پیشرفت نمودار تغییر کنند) را دیده است، که برابر با [High [0 و [Low[0کنونی، و آخرین قیمت ثبتشده برای فروش میباشد، که برابر قیمت [Close[0کنونی است، که قبل از بستهشدن کندل تغییر میکند. حجمها نیز حداکثر دقت در آرایش را دارند که این مطلب را از تاریخچهنگار سبز رنگِ مربوط به حجمها، مثل یک نمودار ساده، بهوضوح میتوان دید. خط شکستهشدهی قرمز مربوط به اندیکاتور Moving Average) Moving Average ساده) با دوره (Period(1 است. این Moving Average پوزیشن بستهشدن در هر لحظه از زمان را در طولِ فرآیند تست، نشان میدهد.
مهم! تسترِ متاتریدر ۴، هر [نوع] تغییر قیمت را پردازش کرده و هیچ چیزی مربوط به آینده را نشان نداده و از خود بهجا نمیگذارد!
مدلسازی در تایمفریمهای مختلف یک اَرز تستشده
تستر متاتریدر ۴، نهتنها به ما اجازه میدهد تایمفریم تستشده را ببینیم، بلکه تایمفریمهای بالاتر و پایینتر را هم نشان میدهد. بنابراین، اگر یک اکسپرت را روی تایمفریم EURUSD M15تست کنیم، مقادیر اندیکاتور EURUSD H1یا EURUSD M5 را هم میتوانیم ببینیم. همچنین میتوانیم قیمتهای حداقل و حداکثری کندل صفر کنونی را در هر تایمفریمی در EURUSD ببینیم. اگر بخواهیم حداکثر قیمت آن روز را بدست آوریم، خیلی ساده مقدار (iHigh(NULL,PERIOD_D1,0 را نگاه میکنیم. درست مانند ترید آنلاین است. و فرقی هم نمیکند که در چه دورهای (Period) اکسپرت را تست میکنیم، یا روی چه نموداری با چه تایمفریمی.
بنابراین، وظیفهی تستر این است که نهتنها تایمفریم کنونی را، بلکه تمام تایمفریمهای دیگر مورد نیاز را مدلسازی کند. این موضوع در تستر با این روش حل شدهاست: نهتنها پیشرفت نمودار روی کندل صفر کنونی مدلسازی شده، بلکه تمام تایمفریمهای دیگر نیز به همین روش مدلسازی شدهاند. دریافت هر تیک جدید، اطلاعات را در مورد شرایط کندل صفر، روی هر تایمفریم، تغییر میدهد و همهچیز همزمان آپدیت میشود. تصویر این موضوع را مشاهده میکنید:

رنگ آبی در اینجا نشانگر کندلهای بستهشده است و رنگ سبز کندل صفر کنونی در حال تغییر را نشان میدهد. ۱+هایی که میبینید، نشانگر دریافت تیک جدید هستند. تمام تایمفریمها بلافاصله هر تیک جدید را دریافت میکنند. برای اطمینان میتوانید اکپسرت سادهی CheckModelling.mq4 را تست کنید، که قیمتهای موجود برای تستر را در هر نقطه از زمان، نشان میدهد.
تمام تایمفریمهای درخواستی (و نه فقط قیمتها، بلکه حجمها هم) درست مدلسازی شدهاند. تستر، پیشرفت قیمتها را همزمان روی هر تایمفریم میبیند، درست مانند ترید واقعی:

واضح است که، کمترین قیمت برای تایمفریم ۱۵ دقیقهای، با کمترین قیمت تایمفریمهای بالاتر تفاوت دارد. این موضوع برای بالاترین قیمت هم صدق میکند. هرچند، قیمت خرید در تمام تایمفریمها، هنگام دریافت تیک جدید، یکسان است.
مهم: تمام تایمفریمهای اَرزهای تستشده، کاملاً درست مدلسازی شدهاند – قیمت بازشدن و بستهشدن و High و Low، ۱۰۰ درصد درست هستند. حجمها در تایمفریمهای بالاتر نیز کاملاً درست میباشند.
مدلسازی قیمتها در دیگر اَرزها
حجم دادههای مدلسازیشده برای یک تست دقیق در بخش تاریخچه، گاهیاوقات بسیار زیاد بوده و نیازمند حافظه و منابع پردازشی بیشتر است. تستر در متاتریدر ۴ اجازهی تست نمونهکار را نمیدهد، اما تکنولوژیهای کامپیوتری نیز سریع توسعه مییابند و احتمالاً بهزودی شاهد اجرای تستهای دقیق استراتژیهای حتی پیچیده، و باز کردن چندین پوزیشن روی چند اَرز، خواهیم بود. با این وجود، تستر متاتریدر ۴ اجازهی دریافت اطلاعات در مورد قیمت اَرزهای دیگر، غیر از آنکه تست شده، را میدهد. اما در این مورد، مدلسازی اجرا نشده و دادهها همانگونه که هستند، استخراج شدهاند. کندل صفر برای معرفی در آغاز فرآیند زیر، سادهسازی شدهاست:
High[0]=Low[0]=Close[0]=Open[0], Volume[0]=1
که ما را قادر میسازد قیمت را در آغاز کندل بدانیم، اما در پایان [کندل] دانستن قیمت در کار نیست. برای اطمینان فقط کافیست یک اکسپرت ساده را رویEURUSD در حالت “همهی تیکها” تست کنید.
//+------------------------------------------------------------------+ //| CheckModelling.mq4 | //| Copyright © ۲۰۰۷, MetaQuotes Software Corp. | //| https://www.metaquotes.net/| //+------------------------------------------------------------------+ #property copyright "Copyright © ۲۰۰۷, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/" //---- input parameters extern int DayS=21; extern int MonthS=4; extern int YearS=2006; extern int HourS=10; extern int MinuteS=00; extern int CounterS=20; int counter; int start() { //---- if (counter>CounterS) return; if (Year()<2006) return; if (Month()<MonthS) return; if (Day()<DayS) return; if (Hour()<HourS) return; if (Minute()<MinuteS) return; Print("My time frame "," Open=",Open[0]," High=",High[0]," Low=",Low[0], " Close=",Close[0]," Volume=",Volume[0]," Bid=",Bid); Print("30 minute frame "," Open=",iOpen(NULL,PERIOD_M30,0)," High=",iHigh(NULL,PERIOD_M30,0), " Low=",iLow(NULL,PERIOD_M30,0)," Close=",iClose(NULL,PERIOD_M30,0), " Volume=",iVolume(NULL,PERIOD_M30,0)," Bid=",Bid); Print("1 hour frame "," Open=",iOpen(NULL,PERIOD_H1,0)," High=",iHigh(NULL,PERIOD_H1,0), " Low=",iLow(NULL,PERIOD_H1,0)," Close=",iClose(NULL,PERIOD_H1,0), " Volume=",iVolume(NULL,PERIOD_H1,0)," Bid=",Bid); Print("4 hour frame "," Open=",iOpen(NULL,PERIOD_H4,0)," High=",iHigh(NULL,PERIOD_H4,0), " Low=",iLow(NULL,PERIOD_H4,0)," Close=",iClose(NULL,PERIOD_H4,0), " Volume=",iVolume(NULL,PERIOD_H4,0)," Bid=",Bid); counter++; //---- return(0); } //+------------------------------------------------------------------+
محاسبهی اندیکاتورها حین مدلسازی
ده سال پیش کارایی ناقص کامپیوترهای خانگی و همینطور اداری، محدودیتهایی را برای توسعهدهندگان نرمافزار ایجاد میکرد. حافظهی عملیاتی محدود، فرکانس پردازش زیر ۱۰۰ مگاهرتز – همهی اینها فقط اجازه میداد از بیشترین محاسبات از نوعِ فضای کارآمد استفاده کرده و استراتژیهای ترید را تست کنیم. تستِ درون-نموداری اصلاً وجود نداشت و تمام اندیکاتورهای مورد نیاز از قبل محاسبه، و در حالتی آماده و غیرقابل تغییر تست میشدند. در آن زمان این تنها راهحل بود، که البته محدودیتهای خودش را بر تست اِعمال میکرد. در این رویکرد، مقادیر صحیح اندیکاتور را فقط برای لحظهی بستهشدن کندل دریافت میکنیم، و استفاده از این دادهها روی کندل صفر در واقع یعنی نقب زدن به آینده.
تستر متاتریدر ۴ هیچ نوع دادهی محاسبهشدهای را دریافت نمیکند، و فقط پیشرفت مدلسازیشدهی قیمت را میگیرد و برمبنای قیمتهای جدیدی که میآیند، تمام اندیکاتورهای ضروری برای تست، محاسبه میشوند. بهعبارت دیگر، تمام اندیکاتورها حین فرآیند آنلاین کار، محاسبه میشوند. همین مزیت برای تستر کافیست، اما اگر الگوریتم اندیکاتور بهینه نباشد، تست اکسپرت اُفت سرعت شدیدی میکند. محاسبهی اندیکاتور در تستر با همان سرعت نرمافزار انجام میشود، و یک الگوریتم بهینهسازینشده ممکن است نادیده گرفته شود. اما در تستر متاتریدر ۴ حین محاسبه روی میلیونها کندل (۱ دقیقه از تاریخچهی EURUSD از سال ۱۹۹۹، تقریباً ۳ میلیون کندل خواهد داشت) هرگونه غیربهینگی مشخص میشود. فراموش نکنید که هر تیک مدلسازی یک کندل یک دقیقهای، نه یک، بلکه چندین تیک به ما میدهد که هرکدام با تستر محاسبه میشوند.
امروزه پردازشگرها، گیگابایتی حافظهی عملیاتی، و چند گیگاهرتز فرکانس دارند، سیستمهای ۳۲ بیتی جای خود را به ۶۴ بیتیها دادهاند و حتی چندپردازشی هم بهمیان آمده است. اما هنوز افرادی هستند که به سبک یک قرن قبل زندگی میکنند و همان عیبهای قبلی نسل قبل برنامهها را ترجیح میدهند. چنین افرادی از مدلسازی درون-نموداری وحشت دارند و آن را کاری بیهوده در فرآیند تستر میدانند. تستر متاتریدر ۴ نهتنها [با احتمال بالا] مدلسازی صحیح قیمت روی هر تایمفریمی را اثبات کرده، بلکه نیاز به دقیقاً همین رویکرد در تست استراتژیهایی که برمبنای تاریخچه هستند، بهشدت احساس میشود.
میتوانید این ویدیو را تماشا کرده و پیشرفت قیمت و محاسبهی اندیکاتور در تستر را خودتان تخمین بزنید.
مهم: این تستر در شرایط واقعی کار میکند که نیازمند منابع مشخصی است.
سوالات متداول؛ برگرفته از ناآگاهی در مورد مدلسازی صحیح قیمت در تستر
متاتریدر ۴ رسماً در تاریخ ۱ جولای ۲۰۰۵ معرفی شد. و از آن زمان سوالات مشابه به سبکهای مختلف پرسیده شدند و این سوالات با کارکرد غلط تستر مرتبط هستند. در اینجا سوالات متداول را داریم که برگرفته از افسانههایی در مورد تسترهای سال گذشته هستند.
- چرا اکسپرت من که از اندیکاتور استفاده میکند، معاملات را در جای اشتباه درج میکند؟
بعد از اینکه تست پایان یافت، درست مانند اندیکاتوری که از آن اکسپرت فراخوانده میشود، از گزینهی “Open Chart” استفاده کرده و یک نمودار جدید باز کنید، که تمام نقاط ورود و خروج را بازتاب دهد. اما اغلب نادیده گرفته میشود که مقادیر اندیکاتور، در آن لحظهای که روی تاریخچه محاسبه شدهاند، با مقادیری که در لحظهی تست (واقعی، آنلاین) داده شدهاند، ممکن است بهطور قابلتوجهی تفاوت داشته باشند. مثال واضح آن اندیکاتور زیگزاگ است.
با باز کردن نمودار تست اکسپرت و جایی که این اندیکاتور استفاده شده، تمامی شکستهای زیگزاگ را بهوضوح میتوانیم ببینیم. فردی ممکن است بر اساس دنبال کردن چنین شکستهایی روی کندل صفر، انتظار سود خوبی از یک استراتژی داشته باشد. کسانی که اصول کارِ تستر متاتریدر ۴ را بهدرستی درک نمیکنند، به اشتباه فکر خواهند کرد که چنین استراتژیهایی باید سود مطلق را در تستر نشان دهند زیرا در دیگر برنامهها، آینده برای چنین استراتژیهایی دیده میشود. اما سودی نمیبینیم، بعلاوه اینکه معاملات در جای اشتباه باز شدهاند! تست را در حالت ویژوال قرار داده و تمام اندیکاتورهایی که اکسپرت از آنها استفاده میکند را روی نمودار بیاورید – و توهمات حل خواهند شد! این کار به علم خاصی نیاز ندارد! تستر همهچیز را در حالت ویژوال به شما نشان خواهد داد. در اینجا هم مثالی از چنین اکسپرتی داریم – ExpertZigzag:

مهم: اگر شما در مورد کارکرد صحیح تستر خود شک دارید، از ویژوال تست استفاده کنید. فرآیند تست را همانگونه که هست، مشاهده خواهید کرد و نه آنگونه که شما تصور میکنید.
- چرا مقادیر اندیکاتور در تست با مقادیر اندیکاتور در نمودار آنلاین برابر نیست؟
یکی از اشتباهاتی که حین نوشتن اندیکاتور انجام میشود این است که مقادیر اندیکاتور اشتباه محاسبه شده و قیاس نادرست بهوجود میآید. در نتیجه اندیکاتور “دروغ” میگوید و اشتباه جمعآوری میکند. بهعبارت دیگر، تا دیروز اندیکاتور مقادیری را نشان میداد که با مقادیر کنونیاش، با همان شرایط، تفاوت دارد.
اشتباه چنین اندیکاتورهایی را همچنین میتوان در کارکرد آنلاین اندیکاتور دید. برای مثال، اندیکاتور را روی نمودار ۱۵ دقیقه آوردیم و برای ایجاد ۳-۴ کندل جدید صبر کردیم و سپس یکی دیگر از همان اندیکاتور را دوباره اضافه کردیم – با یک رنگ دیگر. اغلب میشد تفاوت را کامل دید. در اینجا مثالی از چنین اندیکاتور اشتباهی را داریم:

مهم: اندیکاتورها در جریان تست محاسبه نمیشوند، درست مانند زمانی که آنلاین هستند، به همین دلیل است که تمامی اشتباهات در استدلال اندیکاتور، در فرآیند تست، ظاهر میشوند!
- چرا اکسپرت من در تایمفریمهای بالاتر قیمتهای اشتباه میبیند؟ حتی با اینکه خودم تاریخچه را کامل وارد کردهام.
برای مدلسازی، تستر از دادههای فایل fxt استفاده میکند. معمولاً این فایل را تستر برمبنای تاریخچهی موجود در فایلهای hst، تولید میکند. اما اگر فایل FXT آمادهشده، در یک منطقهی زمانی (Time-Zone) دیگر، یا با قیمتهای یک بروکر دیگر، تولید شده باشد (یا حتی توسط خودتان تولید شده باشد – فرمت فایلهای fxt از نوعِ باز است)، و دادهها در این فایل fxt با دادههای فایلهای hst موجود، منطبق نباشند، آنگاه پیغامهای خطای مختلفی را خواهید داشت. معمولاً این اتفاق بعد از وارد کردن دستی و بازتبدیلِ قیمتها از منابع جانبی، رخ میدهد.
برای مثال، اکسپرت این توابع را فرا میخواند: (iOpen(NULL, PERIOD_D1,1 یا(iHighest(NULL, PERIOD_D1,MODE_HIGH,20,1. تابع iOpen(NULL, PERIOD_D1,1) درخواستِ قیمت بازشدن دیروز، که تست روی آن انجام شده را، در همان اَرز دارد. تابع(iHighest(NULL,PERIOD_D1, MODE_HIGH,20,1 شاخص کندل روزانه، با بیشترین مقدار High بهاندازهی ۲۰ کندل که از اولین [کندل] (برای دیروز) شروع میشود را میدهد. هر دو تابع در تستر برمبنای دادههای فایلهای hst، محاسبه میشوند.
و اگر فایل fxt با تاریخچهی [موجود در] فایلهای hst مطابقت نداشته باشد (در این مثال دادههای [فایل] EURUSD1440.hst)، قیمتها در تستر کاملاً متفاوت خواهند بود. دو تاریخچهی مختلف داریم – یکی در تستر و دیگری آنکه در فایل EURUSD*hst است.
مهم: یک تست صحیح نیازمند یکسان بودن دادهها بین فایلهای fxt و hst است. وارد کردن (Import) مطالب دیگر از منابع جانبی، کار جالبی بهنظر نمیرسد. از “مرکز تاریخچه” استاندارد که دقیقترین قیمتها را از سال ۱۹۹۹ دارد، استفاده کنید. قیمتهای دقیقی که از “مرکز تاریخچه” استاندارد گرفته شده باشند، روی تمام تایمفریمها، بهصورت خودکار، محاسبهی مجدد میشوند، و همچنین با منطقهی زمانی شما [بهشکل خودکار] هماهنگ خواهند شد که این کار بحث “تایم شیفت” را حذف میکند.
- چرا بعد از وارد کردن قیمتهای من، اندیکاتورها در تایمفریمهای بالاتر در تستر اشتباه جواب میدهند؟
درحالیکه که فقط قیمتهای کندل صفر مدلسازی شدهاند، مقادیر اندیکاتورهای استاندارد و سفارشی روی دیگر کندلها برمبنای دادههای فایلهای hst محاسبه میشوند. بهعبارت دیگر، مقادیر صحیح اندیکاتور را نمیتوان بدون منبعی درست از دادههای قیمت از تایمفریمهای دیگر، محاسبه کرد.
مهم: قبل از شروع تست مطمئن شوید که تمام دادههای ضروری در مورد قیمت از دیگر تایمفریمها تزریق شدهاند، و اینکه این دادهها درست هستند. مرکز تاریخچهی استاندارد، صحیح بودن تمام تایمفریمها را تامین میکند، زیرا بهصورت خودکار، محاسبهی مجدد برای تمام دورهها انجام میشود.
نتیجهگیری
تستر متاتریدر ۴ نتیجهی تجربهای طولانی از نوشتن چند نسل از نرمافزارهای ترید از سال ۲۰۰۰ است. همه کاری انجام شده تا تریدر فرصت تست استراتژیها را با حداکثر ضریب درست بودن، داشته باشد. این موضوع باعث شده تا تستهای چند ماهه آنهم در شرایط واقعی [که قطعاً ریسک بالایی دارد] حذف شوند. دانستن تمام گزینههای موجود به شما کمک میکند در زمان صرفهجویی کنید و اهمیت [وجود] اندیکاتورهای صحیح و توسعهی اکسپرت را بهتر درک کنید.
این مقاله دارای فایل پیوست است.
پیوست مقاله را از اینجا میتوانید دانلود کنید .
۲۶ مورد نظر
ed clinic
buy prednisone online india prednisone 21 pack ordering prednisone
cialis online 2nd day shipping cialis pills cialis canada over the counter
۵ mg prednisone tablets buy prednisone online prednisone pills 10 mg
prednisone uk buy order prednisone prednisone 20 mg prices
cheap cialis australia order cialis online nb canada how much is cialis per pill
buy prednisone online uk buy prednisone online cheap prednisone online
pain meds online without doctor prescription cheap medications over the counter ed
prednisone buy online nz buy prednisone online ۵۰ mg prednisone from canada
canadian drugs online ed prescription drugs canadian drug prices
ivermectin cream 5% ivermectin for mange ivermectin dosage for cats ear mites
ivermectin australian shepherd ivermectin nobel prize ivermectin stock
natural remedies for ed ed pills gnc the best ed pills
finasteride without prescription propecia cheap propecia without a prescription
propecia pills propecia drug propecia hair loss
online canadian drugstore canadian drugs ed meds online canada
internet pharmacy no prior prescription canadian pharmacy online ship to usa top rated canadian pharmacies online
buy prescription drugs online cheap highest rated canadian pharmacies canada rx drugs online
best erection pills new ed treatments gnc ed pills
stromectol price usa prescribing stromectol stromectol without a doctor prescription
online purchase of tadalafil in india price of cialis 20 mg tadalafil 20 mg buy online
sildenafil 20 mg viagra pills viagra tablets for men
buy clomid 50mg online buy clomid buy clomid
stromectol 3 mg tablets price stromectol without a doctor prescription stromectol 12 mg tablets
cialis 20mg tadalafil best price 20 mg tadalafil
stromectol 12 mg tablets stromectol without a doctor prescription stromectol for sale