مــبـــانــی کـدنـویـســی اکسپرت هِــــج

مــبـــانــی کـدنـویـســی اکسپرت هِــــج

مقدمه

قصد دارم در این مقاله‌، اکسپرت هج را معرفی کنم که ایده‌‌ای بسیار ساده‌ای هم دارد. اما ابتدا یادداشتی مهم درباره‌ی مبانی اکسپرت هج را با هم بخوانیم:

  • هج (برگرفته از ویکی‌پدیا، دانشنامه‌ی آزاد)

برگرفته از مدخل  (Hedging)

در امور مالی، “هج”، یک نوع خاصی از سرمایه‌گذاری است که به‌طور ویژه برای کاهش یا از بین بردن ریسک، در یک سرمایه‌گذاری دیگر، استفاده می‌شود. هجینگ (hedging)، یک استراتژی برای به‌حداقل‌رساندنِ ضرر در کسب‌وکار است، و در همان حال اجازه می‌دهد، آن کسب‌وکار برای‌ ما سود هم داشته باشد. عموماً، کسی که این کار را انجام می‌دهد، یا به‌عبارتی، فرد هجر (hedger)، روی اوراقِ بهاداری سرمایه‌گذاری می‌کند که باور دارد نسبت به “اَرزش واقعی‌شان” زیر قیمت آمده‌اند

(برای مثال، وام مسکنی که او گرفته)، و وی این [موضوع] را با فروش موقت[۲] اوراق بهادار مرتبط، ترکیب می‌کند. بنابراین، در اینجا فرد اهمیتی نمی‌دهد که اَرزش مجموعه‌ی بازار بالا می‌رود یا پایین می‌آید. هولبروک ورکینگ (Holbrook Working)، که یکی از پیشگامان تئوری هجینگ است، این استراتژی را استراتژی “احتکار در پایه” (Speculation in the basis) می‌نامد – جاییکه این پایه، اختلافِ بین اَرزش تئوری هج، و اَرزش واقعی آن (یا بین قیمت‌های واقعی، و قیمت‌های آینده در زمان هولبروک ورکینگ) به‌حساب می‌آید.

در هر نوع فعالیت کاری، طبیعتاً ریسک‌هایی داریم. و برخی از این ریسک‌ها برای مشاغل یا فعالیت‌هایی خاص، “عادی” محسوب می‌شوند؛ مثلاً بالا رفتن یا پایین آمدن قیمت نفت در شرکت‌های استخراج و پخش فرآورده‌های نفتی، اَمری طبیعی حساب می‌شود. اما برخی دیگر از ریسک‌ها، طبیعی نیستند و اصلاً مشتاق آنها هم نیستیم، ولی بدون پوشش و حمایت، نمی‌توان از آنها جلوگیری کرد. کسی که فروشگاه دارد، می‌تواند از ریسک‌هایی مانند رقابت، محصولات ضعیف یا مشتری‌ناپسند، خود را محفوظ نگه دارد. اما در آتش سوختنِ اجناس، طبیعتاً ناخواسته است ولی می‌شود با بیمه‌ی آتش‌سوزی این ریسک را “پوشاند” [در اصلِ مقاله، برای لغت “پوشاند” معادل hedge آورده شده‌است، که در معنی کلی، یعنی پوشاندن و حفظ کردن با پوشش، تا به‌نوعی به بحث هجینگ در مقاله ربط پیدا کند].

تمام هج‌ها [یعنی تمام پوشش دادن‌ها] اَبزارهای مالی نیستند: برای مثال، تولیدکننده‌ای که به کشور دیگری صادرات می‌کند، با پول کشور مقصد هزینه‌های خود را انجام می‌دهد و کالا می‌فروشد تا اینگونه از ریسک به‌وجودآمده به‌خاطر اختلاف پول دو کشور، جلوگیری کند و آن را پوشش دهد (=هج کند).
بیشتر در این مورد بخوانید.

  • تمام چیزهایی که از سِرور نیاز داریم را باید با تابع MarketInfo (string symbol, int type) فراخوانی کنیم. این تابع به ما اجازه می‌دهد هر داده‌ای را وَرای داده‌هایی که روی نمودارِ فعال، دیده می‌شوند، فراخوانی کنیم. و همچنین اجازه خواهیم داشت هر نوع معامله‌ای در هر اَرزی را، فراتر از نمودار اَرزی که جلوی ماست، انجام دهیم. و می‌توانیم دو اَرز را به‌سادگی هج کنیم. جا دارد از خداوند بزرگ به‌خاطر دانشی که به ما بخشیده، و تیم متاتریدر ۴ تشکر کنیم که کار را برای ما بسیار ساده کرده‌اند!
  • یک موضوع مهم در هجینگ، همبستگی‌ بین دو اَرزِ درحال رصد است که می‌توان توابع کوچکی را از آنها استخراج کرد و در ادامه آنها را نشان خواهیم داد.

همبستگی (Correlation)، در دنیای مالی، اندا‌زه‌گیری آماری در ارتباطِ بین دو سند بهادار، به‌حساب می‌آید. ضریب همبستگی بین ۱- و ۱+ متغییر است. همبستگی ۱+ یعنی دو جفت‌اَرز ۱۰۰ درصد در یک جهت، در یک زمان، حرکت خواهند کرد. و ۱- نیز می‌گوید دو جفت‌اَرز ۱۰۰ درصد در جهت مخالف خواهند رفت. این عدد اگر صفر باشد، رابطه‌ی بین این دو جفت‌اَرز کاملاً رَندوم خواهد بود. بیشتر بخوانید.

مطالب بالا چیزهای ساده‌ای هستند، و فارکس هجرهایی که از اکسپرت متاتریدر ۴ استفاده می‌کنند، باید این مطالب را بدانند. اکنون می‌توانیم ساختن یک اکسپرت هج را شروع کنیم.

قدم به قدم با کدنویسی اکسپرت هج

مرحله اول: پارامترهای ورودی

قبل از شروع نوشتن اکسپرت هج، نیاز داریم که ۲ اَرز دارای همبستگی را انتخاب کنیم؛ به‌عبارت دیگر:

  • GBPUSD  وEURUSD  که همیشه در یک جهت حرکت می‌کنند؛
  • EURUSD  و USDCHF که همیشه در جهت مخالف می‌کنند؛
  • و غیره.

در این مقاله، دو جفت‌اَرز هج مورد علاقه‌ی خودم را انتخاب می‌کنم کهEURJPY  و GBPJPY هستند. این دو همیشه در یک جهت حرکت می‌کنند و برای ثبت معامله‌ی هج، کار ساده‌تری خواهیم داشت. بیایید شروع کنیم. برای شروع کار بیایید با این متغیرهای ورودی آشنا شویم.

مرحله‌ دوم: اعلام متغیر

در زیر، متغیرهایی را می‌بینید که در این اکسپرت استفاده شده، و من فقط متغیری را توضیح می‌دهم که برای درک عملکرد اکسپرت ضروری است.

 

مرحله‌ سوم: دریافت تمام پارامترهای آماری مورد نیاز

اکنون بیایید بعضی از مقادیر (values) آماری‌ که در قسمت init() ثبت می‌شوند را مشخص کنیم.

 

مرحله چهارم: توابع کاربردی

قبل از اینکه جذاب‌ترین بخش کار که منتظرش هستیم، یعنی تابع “start()”، را اِستارت بزنیم، بیایید با توابعی شروع کنیم که در این اکسپرت از آنها استفاده شده‌است. اما لطفاً توجه داشته باشید که تمامی این توابع خارج از تابع start() خواهند بود.

  1. تابع همبستگی

ابتدا نیاز داریم با توابعِ محاسباتیِ همبستگی آغاز کنیم. توابع زیر برای فردی است که ابتدا از آنها استفاده کرده و سپس اندیکاتور همبستگی  (igorad2004@list.ru)را رایگان در اختیار عموم گذاشته و من نیز آنها را برای استفاده در این اکسپرت، ساده‌سازی کرده‌ام، و اینگونه دیگر نیازی به فراخوانی مقدار همبستگی از اندیکاتور خارجی نداریم. ایده‌ی خوبیست، نه؟

 

متغیرCorPeriod  را به‌عنوان یک متغیر ورودی، خارج می‌کنیم تا اجازه‌ی تغییر آن را داشته باشیم. وقتی می‌خواهید همبستگی بین دو اَرز را محاسبه کنید، فقط کافیست تابع Cor(string base,string hedge) را فرا بخوانید، مانند این Cor(EURJPY,GBPJPY). کار ساده‌ایست…

  1. تابع ارسال هج (Send Hedge Function)

به‌نظرم ساده‌تر این است که چگونگی ارسال معاملات هج را با ساختن تابعSendH ، مدیریت کنیم.

 

می‌توانید از این لینک درمورد تابعOrderSend بیشتر بخوانید.

تابع  ErrorDescription(GetLastError())که در بالا آمده است، اجازه می‌دهد اکسپرت ما به ما بگوید هنگامی که تابع ترید مشغول به کار بوده، چه خطایی رخ داده است. برای استفاده از آن باید فایل stdlib.mqh را با استفاده از کد زیر، جای‌گذاری کنیم:

 

و برای استفاده از آن، تابع ErrorDescription() را، همانطور که در بالا نشان داده شد، فرا بخوانید.

  1. تابع بستن هج

فراتر از ارسال معاملات، نیاز به تابعی داریم که تمام معاملات هج را وقتی به سود مورد نظر ما رسیدند، ببندد.

و در اینجا آن را مشاهده می‌کنید:

 

این تابع فقط معاملاتی را می‌بندد که عدد جادویی مشابه دارند؛ به این معنی که در کار معاملات هجی که دیگر اعداد جادویی را دارند، دخالت نمی‌کند. چیزی نیست که نگران آن باشید. قبل از استفاده از این تابع [برای] بستن معاملات، باید تعریف کنیم که “اکنون چقدر داریم”، آن‌هم با تابع زیر.

  1. تابع یافتن سود کلی

 

همانند تابعِ بستن معاملات، برای دانستن سود هج، فقط باید معاملاتی را رصد کنیم که عدد جادویی یکسانی دارند، تا بتوانیم آنها را دُرست ببندیم.‌ برای استفاده، آنها را مانند زیر کدنویسی کنید:

تمام مقادیر سود به دلار آمریکا محاسبه شده‌اند. از خط بالا درمی‌یابیم که وقتی سود کلی معاملاتی که عدد جادویی آنها ۳۱۸ است، بیش از ۱۰۰ دلار باشد، آن معاملات بسته خواهند شد. همین. برای باز کردن معاملات هج باید بدانیم که هیچ معامله‌ی دیگری در همان اَرز و با همان عدد جادویی، در حال حاضر باز، وجود ندارد. این کار را می‌توان با این تابع انجام داد.

  1. دریافت حجم پوزیشن‌های موجود

 

می‌توان بدین شکل از آن استفاده کرد:

این تابع، این را به ما برمی‌گرداند که در لحظه “چه تعداد معامله‌ی باز GBPJPY با عدد جادویی ۳۱۸ وجود دارد”. یک تابع دیگر هم داریم برای تعریف نوع معاملات باز.

  1. پیدا کردن نوع معامله در پوزیشن مشخص‌شده‌ی موجود

 

این تابع مقدار صحیح نوع معامله، برای اَرز و عدد جادویی مشخص‌شده، که در لحظه باز هستند، را به ما برمی‌گر‌داند. اگر معامله‌ی باز GBPJPY، OP_BUY باشد، مقدار برگشتی صفر خواهد بود. این تابع فقط با تابع ترید کار نمی‌کند، بلکه با تابعی که وضعیت هجینگ کنونی را نشان می‌دهد هم کار می‌کند. این تابع را “OP2Str” می‌نامند.

  1. نشان دادن وضعیت ترید

 

چیز خاصی برای گفتن نداریم. خود تابع گویای نحوه‌‌ی عملکرد خود است.

  1. بستن تمام انواع معاملات مشخص‌شده

این هم یک تابع دیگر است برای بستن مستقیم فقط یک معامله (فرقی نمی‌کند چه نوع معامله‌ای باشد)، درصورتیکه هنگام ارسال یا بستن هج، خطایی رخ دهد.

 

نگاه کنید به CloseScrap(“GBPJPY”,OP_BUY,318): این [تابع] فقط معامله‌ی بلندمدت GBPJPY با عدد جادویی ۳۱۸ را می‌بندد. ساده است… یک تابع دیگر هم برای آشنایی با آن داریم.

  1. نشان دادن هر وضعیت منطقی‌ای[۳] که شما می‌خواهید

چیز پیچیده‌ای نیست. این تابع وضعیت منطقی بعضی از پارامترها، مانند مقدار BlockOpening را نشان می‌دهد. وقتی آن را true تعیین می‌کنید، این تابع روی صفحه‌ی نمایش Yes را به شما نشان می‌دهد. و وقتی آن را false تعیین ‌می‌کنید، روی صفحه‌ی نمایش No نشان داده می‌شود. تمام مطلب همین است. پس بیایید از فرآیند کدنویسی هج لذت ببریم.

مرحله پنجم: هسته‌ی اکسپرت

ابتدا با این شروع کنید:

سپس دامنه‌ی همبستگی را مشخص کنید.

 

پس از آن مسیر هج را مشخص کنید (این فقط یک مثال است)، در این مقاله من سبک ترید خود را با مقدار سوآپ انتخاب می‌کنم، سپس فقط به روشی که بتوانم از سوآپ هر روز درآمد داشته باشم، ترید خواهم کرد.

اکنون زمان ارسال هج رسیده است:

 

سپس آنها را وقتی که به سود مورد نظر می‌رسند، ببندید.

و یک چیز جالب‌تر: بخشShowStatus .

و پایان هر اکسپرت.

مرحله ششم: سَرِهم‌کردن همه‌چیز

در اینجا می‌بینید که myHedge.mq4 من این شکلی خواهد بود:

نتیجه‌گیری

این فقط یک مثال ساده از اکسپرت هج بود. قطعاً باید آن را منطبق با نیازها و سبک خود، تغییر دهید. مطمئناً سبک‌ها (استراتژی‌های) بسیاری وجود دارند که به شما کمک می‌کنند. توجه داشته باشید که این نوع اکسپرت را به‌خاطر محدودیت‌هایش نمی‌توانید با استراتژی‌تستر، تست کنید. فقط باید آن را در شرایط واقعی امتحان کرد. مثالی از نتیجه‌ی تست یک اکسپرت هج را مشاهده می‌کنید:

مــبـــانــی کـدنـویـســی اکسپرت هِــــج

و تابع ShowStatus هم چنین چیزی را به شما خواهد داد:

مــبـــانــی کـدنـویـســی اکسپرت هِــــج

امیدوارم از این مقاله لذت برده باشید و بتوانید اکسپرت هج خود را، عالی بسازید.

این مقاله دارای فایل پیوست است.

[۱]) هج “hedge” یعنی هم‌پوشانی. اگر روی یک اَرز، با حجم یکسان و در همان تایم‌فریم، دو معامله، یکی buy و یکی  sellهمزمان باز کنیم، آنگاه اصطلاحاً معامله‌ی hedge یا معامله‌ی هم‌پوشانی باز کرده‌ایم.

[۲]) فروش موقت یعنی فروختن چیزی موقتاً، با این قصد که بعداً دوباره آن را با قیمت پایین‌تر بخریم.

[۳]) Boolean (bool) داده‌های بولی یا همان داده‌های منطقی

امینی

→ خواندن مطلب قبلی

کاربرد عملی سِرور خصوصی مجازی (VPS) برای ترید خودکار

خواندن مطلب بعدی ←

زبان MQL4 برای تازه‌کارها، سوالات سخت با جملات ساده

نوشتن نظر شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *