لوپ یا Loop در فارکس، یک تکنیک برنامهنویسی است، که میتوان با استفاده از آن رباتهای معاملهگری را برنامهریزی کرد. در این الگوریتم، یک سوال مکررا پرسیده میشود، و تا زمانی که سوال پرسیده شده پاسخ داده نشود، این لوپ یا حلقه ادامه پیدا میکند. زمانی که شرایط درجشده در این لوپ ارضا شود، برنامه کامپیوتری از لوپ خارج میشود و باقی خطوط برنامه اجرا میشوند. در مفاهیم برنامهنویسی، به سوال مطرحشده در لوپ اصطلاحا تکرار (iteration) گفته میشود. به عنوان مثال، موارد استفاده از Loop در فارکس و معاملات الگوریتمی میتواند به صورت زیر باشد:
قیمتهای پیشین بازار را بخوان و مشخص کن کدام قیمت در X روز گذشته، کمترین مقدار را تا به امروز داشته است.
قیمتهای پیشین میانگین متحرک ۲۰ روزه و ۵۰ روزه را در X روز گذشته بخوان و مشخص کن که در کدام بازهها این دو یکدیگر را قطع کرده اند.
مرور معاملات باز و تایید این که آیا یک معامله خاص به سوددهی رسیده است یا خیر تا دستورات حد ضرر حتی برای معاملات خاصی که معیار خاصی را برآورده میکنند اجرا شود.
بازبینی مکرر موقعیتهای باز و استفاده از تریلینگ استاپ (Trailing stop loss) برای معاملاتی که به حد خاصی رسیده اند.
محاسبه سود و ضرر کلی در X معامله اخیر.
انواع Loop در فارکس
در برنامهنویسی لوپهای مختلفی وجود دارند، که زبانهای برنامهنویسی MQL4 و MQL5 استفاده از سه مورد را برای ما مقدور میسازند:
لوپ For: به هنگام استفاده از لوپ For، دستورات تعیین شده به تعداد مشخصی تکرار میشوند. تعداد تکرارها در این حلقه بستگی به سه معیار دارد: مقداردهی اولیه، معیار مشخصشده برای پایان لوپ و محاسباتی که در هر لوپ انجام میشود.
لوپ While: در یک حلقه While، محاسبات تا زمانی تکرار میشوند که یک شرط برای خروج از حلقه ارضا شود. این شرط در ابتدای هر لوپ ارزیابی میشود و مقادیر در ادامه محاسبه میشوند.
لوپ Do While: این لوپ شباهت زیادی به لوپ While دارد، با این تفاوت که شرط ادامهی لوپ در انتهای آن ارزیابی میشود.
اگر شرط و معیاری که برای خاتمه یافتن لوپ تعریف شده، هیچگاه ارضا نشود، این حلقه تا ابد تکرار میشود. بنابراین در این شرایط مجبور به توقف برنامه میشویم، یا میتوانیم از دستوری به نام BREAK در برنامهنویسی خود استفاده کنیم.
شرح انواع Loop در فارکس
مهم است که مشخصاتی که سبب ایجاد تفاوت میان حلقههای For، While و Do While میشود را همواره به خاطر بسپارید. در مورد لوپهای For و While، شرط خروج از حلقه در ابتدای هر تکرار ارزیابی میشود. از طرفی دیگر، در مورد لوپهای Do While، این شرط در انتهای هر تکرار ارزیابی میشود. این بدین معنی است که شرطهای درجشده در هر حلقه، درست قبل از تصمیمگیری به ادامه یا شکست حلقه ارزیابی میشوند. به صورت پیشفرض، لوپها به شکلی طراحی شده اند که دستهای از دستورالعملها را تا زمانی که یک شرط برقرار است تکرار کنند. به همین سبب، از شروط وضعشده در لوپهای برنامهنویسی میتوان نحوه اجرای برنامه را کنترل کرد.
لوپ For
بر خلاف لوپهای While و Do While، در تعریف یک لوپ For، باید از سه عبارت استفاده شود:
مقداردهی اولیه به یک عدد صحیح، که به عنوان شمارنده لوپ مورد استفاده قرار میگیرد
تعیین شرط برای ادامه لوپ
محاسباتی که در هر تکرار از لوپ انجام میشود. این محاسبات شامل اضافه شدن یا کم شدن متغیر تکرار نیز میشوند.
لوپ While
برای تعریف یک لوپ While تنها نیاز است که یک شرط برای تکرار حلقه تعیین شود. محاسبات در هر تکرار پس از ارزیابی شرط تکرار لوپ انجام میشوند، که از لحاظ کارایی مانند حلقه For است. بر خلاف لوپ For، حلقه While میتواند از هر عبارتی به عنوان معیار تکرار لوپ استفاده کند.
لوپ Do While
عبارتهای کنترلی Loop در فارکس
در برنامهنویسی، از دو عبارت کنترلی در لوپها استفاده میشود. این دو عبارت کنترلی Break و Continue هستند. عبارت Break سبب میشود که برنامه به سرعت از لوپ خارج شود، و از به روند تکرارشونده پایان دهد. از طرفی دیگر، زمانی که دستور Continue اجرا شود، انجام محاسبات در این تکرار متوقف میشود، و برنامه به سراغ اجرای تکرار بعدی از همان لوپ میرود.
مثالی از Loop در فارکس
در این مثال، به ارزیابی این مسئله میپردازیم که کدام یک از لوپهای درجشده در زیر یک لوپ بی انتها (infinite loop) هستند. یک لوپ بی انتها، حلقهای است که اجرای آن هیچگاه متوقف نمیشود و تا ابد تکرار میشود.
در مثال بالا، لوپ A یک لوپ بی انتها است، زیرا شرط تعیین شده برای توقف آن هیچگاه ارضا نمیشود. مقدار i هیچگاه نمیتواند برابر با ۵ شود. بنابراین، این حلقه همواره ادامه پیدا میکند، چرا که شرایط طرح شده در این لوپ به صورت زیر هستند:
در صورتی که مقدار i با ۵ برابر نباشد، لوپ تکرار شود
در زمانی که i برابر با ۴ باشد، مقدار آن در طول محاسبات به ۶ تغییر پیدا میکند
کلام پایانی
استفاده از Loop در فارکس، این امکان را برای معاملهگران فراهم میکند که با استفاده از برنامهنویسی به تربیت رباتهای معاملهگر بپردازند. دو زبان برنامه نویسی MQL4 و MQL5 این اجازه را به معاملهگران میدهند که در پلتفرمهای معاملاتی MetaTrader 4 و MetaTrader 5 به برنامه نویسی پرداخته و با استفاده از تکنیکهای برنامه نویسی، سودآوری خود را با استفاده از رباتهای معاملهگر به بیشترین حد ممکن برسانند.