MetaQuotes Languages 4 နှင့် 5 တို့သည် MetaTrader အုပ်စု၏ စတုတ္ထနှင့် ပဉ္စမမျိုးဆက်ဖြစ်ပြီး ၎င်းတို့၏ ပလပ်ဖောင်းများအပေါ် အခြေခံ၍ MetaTrader Client Terminal အတွက် အက်ပလီကေးရှင်းများကို တီထွင်ရန် စီမံထားသောဆော့ဝဲလ်များဖြစ်သည်။ ဤပရိုဂရမ်းမင်းဘာသာစကားများသည် အသုံးပြုသူများအား သုံးစွဲသူစိတ်ကြိုက်ဖြစ်ရန် အလိုအလျောက်စနစ်ဖြင့် ကုန်သွယ်မှုဗျူဟာများ ဖန်တီးဖော်ဆောင်ရန် ပံ့ပိုးပေးထားသော ကုန်သွယ်ရေး အထောက်အကူပြုကိရိယာများဖြစ်ပါသည်။
ဆောင်းပါးတွင် အောက်ပါအကြောင်းအရာများ ပါဝင်ပါသည်။
- MQL4 နှင့် MQL5 ဟူသည်မှာ အဘယ်နည်း
- MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာများ၏ အင်္ဂါရပ်များ
- MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက်များ၏ ဒေတာအမျိုးအစားများနှင့် အထားအသို
- MQL4 နှင့် MQL5 ကုဒ်များကြား ကွာခြားချက်
- MQL4 ညွှန်ပြချက် ပရိုဂရမ်ရေးဆွဲခြင်း- Expert Advisor ကို MQL4 (သို့မဟုတ်) MQL5 တွင် မည်သို့ရေးရမည်နည်း
- Pros and Cons of MQL4 and MQL5 languages
- MQL4 မှ MQL5 သို့ပြောင်းလဲခြင်း
- MQL4 နှင့် MQL5 ၏ အမေးများသော မေးခွန်းများ
MetaTrader ပရိုဂရမ်းမင်း ဆော့ဝဲလ်များဖြစ်သော MQL4 နှင့် MQL5 နှင့်ပတ်သက်သည့် အသေးစိတ် ကျသော လက်တွေ့သင်ခန်းစာကို စာရှုသူ နားလည်စေရန် ပြင်ဆင်ထားပါသည်။ ဤဆောင်းပါးကိုဖတ်ပြီးနောက်၊ MQL ဆိုတာ ဘာလဲ၊ နောက်ဆုံးထွက်ဗားရှင်းနှစ်ခုကြားရှိ ကွာခြားမှုများ၊ ၎င်းတို့နှင့် မည်သို့အလုပ်လုပ်ရမည်ကို နားလည်လာမည်ဖြစ်သည်။ ဤနေရာတွင် expert advisor (EA) အား မည်သို့ရေးရမည်ကို ပုံများဖြင့် အသေးစိတ် လမ်းညွှန်ထားသည်အား တွေ့မြင့်ရပါမည်။ အခုဘဲ စလိုက်ကြစို့!
MQL4 နှင့် MQL5 ဟူသည်မှာ အဘယ်နည်း
နည်းလမ်းများစွာတွင် MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာစကားများသည် အလွန်ဆင်တူပါသည်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့အနေဖြင့် ကွာခြားချက်များအကြောင်းကို သီးခြားဆွေးနွေးမည်ဖြစ်သော်လည်း ယခုအခါ ၎င်းတို့နှစ်မျိုးလုံး အား မတူညီသောဗားရှင်းအနေဖြင့်သတ်မှတ်မနေဘဲ MQL ဟုသာ ခေါ်ဆို သတ်မှတ်မည်ဖြစ်ကြောင်း ဦးစွာ တင်ပြပါရစေ။
MQL သည် MetaTrader ပလပ်ဖောင်းတွင် ထည့်သွင်းဖန်တီးထားသော ပရိုဂရမ်းမင်း ဘာသာစကားတစ်ခုဖြစ်သည်။ MetaQuotes Language Editor ကို MQL တွင် သင်၏ကိုယ်ပိုင် ကုန်သွယ်ရေးဆိုင်ရာ အလိုအလျောက်စနစ်များ၊ ညွှန်ပြချက်များ သို့မဟုတ် အခြား အပလီကေးရှင်းများ ရေးသားရန်နှင့် ၎င်းတို့ကို စုစည်း၍ ချိန်ညှိရန်အတွက် အသုံးပြုပါသည်။ ဤဆော့ဝဲလ်အား ကိုးကားချက် အချက်အလက်အားလုံးနှင့် MetaTrader Client Terminal နှင့်အတူ ထောက်ပံ့ပေးထားသည်။
အကယ်၍ သင်သည် ပိုင်ဆိုင်မှုအချို့တွင် အနည်းဆုံး တစ်ကြိမ်ခန့် ရင်းနှီးမြုပ်နှံခဲ့လျှင် သင့်အနေဖြင့် ဒေါ်လာကို ဝယ်၍ ဘဏ်တွင် ထားရှိသည်လည်း ဖြစ်နိုင်သည်၊ ထို့နောက် ရင်းနှီးမြှုပ်နှံမှုအတွက် ထိန်းချုပ်မှုမဖြစ်မနေ လိုအပ်ကြောင်း သင်နားလည်မည်ဖြစ်သည်။ ဤကဲ့သို့သောမေးခွန်းမျိုးများကို သင့်ကိုယ်သင် တစ်ကြိမ်ထက်မက မေးနေမည်ဖြစ်ကြောင်း ကျွန်ုပ်အနေဖြင့် လောင်းကြေးထပ်ရဲသည်။
- အမြင့်မားဆုံးနေရာသို့ စျေးနှုန်း ရောက်ချိန်၌ အရောင်းအ၀ယ်မှထွက်ရန်အချိန်ကျနေပြီလား?
- ပိုင်ဆိုင်မှုတစ်ခု၏စျေးနှုန်း ဆက်လက်မြင့်တက်နေမည်လား သို့မဟုတ် စျေးကွက် ပြန်လှည့်လာမည် လား ဆိုသည်ကို မည်သို့ဆုံးဖြတ်မည်နည်း?
- လက်ရှိအချိန်သည် မှားယွင်းသောအချက်ပြမှုကို လက်ခံရရှိထား၍ အဆိုပါ အခြေအနေအတွက် ဆုံးရှုံးမှုမရှိစေရန် နှင့် အရောင်းအဝယ်တစ်ခုဖွင့်ရန်အတွက် အလျင်စလိုလုပ်ဆောင်ရန် မလိုအပ်ကြောင်း သေချာနိုင်လား ?
သင်သည် စျေးကွက်နှင့်လိုက်လျောညီထွေရန် နှင့် အချိန်နှင့်တပြေးညီ အရောင်းအဝယ် ဆုံးဖြတ်ချက်များချရန် လိုအပ်သည်။ အရောင်းအဝယ်အဖြစ်ဆုံး ကုန်သွယ်ရေးအချိန်များတွင် နေ့ရောညပါ ပြုလုပ်ရန် အကြံပြုလိုသည်။ တစ်ချိန်တည်းတွင် ပိုင်ဆိုင်မှုအမျိုးအစားများစွာဖြင့် ရောင်းဝယ်သောအခါ အခြေအနေမှာ ပိုမို၍ဆိုးရွားလာမည်ဖြစ်သည်။
MQL သည် သင့်အား မည်သည့် ကုန်သွယ်မှုဗျူဟာ သို့မဟုတ် မည်သည့် algorithm ကို မဆို ကွန်ပျူတာပရိုဂရမ်ပုံစံဖြင့် အကောင်အထည်ဖော်ခွင့်ပေးထားသည်။ ထို့နောက် ဤပရိုဂရမ်ကို စတင်ပြီး MetaTrader Client Terminal ရှိ ယန္တရားတစ်ခုပေါ်တွင် အဆက်မပြတ် လည်ပတ်စေသည်။ ထို့အပြင်၊ ပံ့ပိုးပေးထားသည့် ဆော့ဝဲလ်များတွင် ပရိုဂရမ်းမင်းဘာသာနှင့် ၎င်း၏ထည့်သွင်းပြီးသားနည်းပညာများ ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို လွန်စွာလွယ်ကူချောမွေ့စေသည့် အရင်းအမြစ်ကုဒ်များအဖြစ် ဖန်တီးသူမှ ဖန်တီးထားသည့် ကုန်သွယ်ရေးဆိုင်ရာ အလိုအလျောက်စနစ်များ၊ ညွှန်ပြချက်များနှင့် ပရိုဂရမ်ကုဒ် အများအပြားပါဝင်သည်။ ထို့အပြင် MQL အား အသေးစိတ်ကျသော အွန်လိုင်း နှင့် အော့ဖ်လိုင်း ကိုးကားချက် အချက်အလက်များဖြင့် ထောက်ပံ့ပေးထားသည်။ ပရိုဂရမ်းမင်းဘာသာများအကြား အလွန်ကျယ်ပြန့်ကြီးမားသော ဆက်သွယ်ချက်များလည်း ရှိနေသည်။
သင့်ကုန်သွယ်မှုတွင် သင်အသုံးပြုလိုသော အဆင်ပြေသည့်အချက်ပြကိရိယာ သို့မဟုတ် သင့်တော်သည့် ကုန်သွယ်ရေးဆိုင်ရာ algorithm တစ်ခု ရှိလာသည်ဆိုကြပါစို့ သို့မဟုတ် သင်သည် neural networks များ အသုံးပြု၍ စျေးကွက်ကို ခွဲခြမ်းစိတ်ဖြာလိုသည်ဆိုပါစို့။ ထို့အတွက် ကန့်သတ်ချက်မရှိပါ။ MQL ဖြင့်ဆိုလျှင် သင်သည် အချက်ပြကိရိယာ၊ EA သို့မဟုတ် အခြားအက်ပလီကေးရှင်းပုံစံဖြင့် မည်သည့်စိတ်ကူးကိုမဆို အကောင်အထည်ဖော်နိုင်ခြင်း၊ ပရိုဂရမ်ကုဒ်တစ်ခုအဖြစ်ပြောင်းလဲခြင်း၊ ပရိုဂရမ်စနစ်ဖြင့် အမှားများ ဖယ်ရှား၍ ပြုပြင်ခြင်း၊ ကုန်သွယ်ရေးဗျူဟာစမ်းသပ်ချက်ရှိ ဈေးနှုန်းသမိုင်းအချက်အလက်များကို စစ်ဆေးခြင်း - စသည်တို့အားလုံးကို ဆုံးရှုံးနိုင်ချေငွေကြေးအန္တရာယ်များမပါဝင်ဘဲ ကုန်သွယ်မှုတွင် လွတ်လပ်စွာ အသုံးပြုနိုင်သည်။
အကျဉ်းချုပ်ကြစို့! MQL သည် ကုန်သွယ်ရေးအကောင့်တစ်ခု၏အခြေအနေကို စောင့်ကြည့်ခြင်း၊ ညွှန်ပြချက်အညွှန်းကိန်းများနှင့် ဈေးတန်းများကို တွက်ချက်ခြင်း၊ အရောင်းအ၀ယ်အချက်ပြမှုများကို လက်ခံရရှိခြင်းနှင့် စျေးကွက်မှ အဝင်နှင့်အထွက်မှတ်များကို ဆုံးဖြတ်ခြင်းအတွက် လိုအပ်သောကိစ္စရပ်များ၏ မပြေလည်မှုများကို ဖြေရှင်းပေးပါသည်။ ပရိုဂရမ်းမင်းဘာသာသုံး ဆော့ဝဲလ်ကိရိယာများသည် TLS encryption သို့မဟုတ် HTTP protocol အပါအဝင် TCP protocol ကို အသုံးပြု၍ ကုန်သွယ်ရေးဆိုင်ရာ အလိုအလျောက်စနစ် သို့မဟုတ် ညွှန်ပြချက်အညွှန်းကိန်းအား သတင်းအချက်အလက်ဖလှယ်ရန် အဝေးထိန်းဆာဗာတစ်ခုဖြင့် စုစည်းနိုင်ရန် အသုံးပြုခွင့်ပေးထားသည်။ FTP မှတဆင့် ဒေတာအချက်အလက်များ ပေးပို့နိုင်သည့်အပြင် MetaTrader မိုဘိုင်း သုံးစွဲသူများထံ သို့မဟုတ် အသုံးပြုသူ၏ အီးမေးလ်သို့ အကြောင်းကြားချက်များ ပေးပို့နိုင်သည်။ ကောင်းစွာ ရေးဆွဲထား၍ အမှားရှာကာ ပြုပြင်ခြင်းပြုလုပ်ပေးသော ပရိုဂရမ်တစ်ခုသည် အပြောင်းအလဲများ ပြုလုပ်ရန် သို့မဟုတ် ၎င်းကို အခြားတစ်ခုနှင့် လုံးလုံးလျားလျား အစားထိုးရန် သင် က ဆုံးဖြတ်ချက်ချသည့်အချိန်အထိ အလုပ်လုပ်နေမည်ဖြစ်သည်။ သင်လုပ်ဆောင်ရန်လိုအပ်သည်မှာ ၎င်းတို့အား ခြုံငုံ၍ ထိန်းချုပ်ရန်သာဖြစ်သည်။
MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာစကားများနောက်ကွယ်ရှိ အဖြစ်အပျက်
MQL သည် ကုန်သွယ်ရေးပလက်ဖောင်း၏ နောက်တက်တွဲဆင့်ကဲ ပြောင်းလဲတိုးတက်မှု၏ ရလဒ်အဖြစ် ပေါ်ထွက်လာသည်။ ၎င်းသည် MetaTrader ရှိ ကုန်သွယ်ရေးအကောင့်များ၏ အလိုအလျောက် စီမံခန့်ခွဲမှုအတွက် ကိရိယာတစ်ခုဖြစ်သည်။ ဤအချက်ကို အကျယ်တဝင့် မပြောဘဲ အပေါ်ယံအားဖြင့် ဆွေးနွေးပေးပါမည်။
MetaQuotes သည် ယခင်က FXCharts အက်ပလီကေးရှင်းဖြစ်သည့် MetaTrader ပလပ်ဖောင်းနှင့်အတူ MetaQuotes ဘာသာစကားကို စတင်ထုတ်လုပ်ခဲ့သည်။ MQL သည် MetaTrader 3 အပ်ဒိတ်နှင့်အတူ ဒုတိယမြောက်ဗားရှင်းအဖြစ် သို့ တိုးတက်လာခဲ့သည်။ ဤတွင် MetaQuotes သည် MetaTrader Client နှင့် MetaTrader ဆာဗာကြားရှိ နောက်ထပ်အလွှာတစ်ရပ်အနေအဖြစ် သုံးစွဲသူများထံ ပေးအပ်ထားသည့် API ကို ထုတ်လုပ်ပေးခဲ့သည်။
ပလက်ဖောင်း၏စတုတ္ထမျိုးဆက်ကို ၂၀၀၅ ခုနှစ် ဇူလိုင်လ ၁ ရက်နေ့တွင် ဖြန့်ချိခဲ့သည်။ ၎င်းနှင့်အတူ MQL4 ကို ဖြန့်ချိခဲ့သည်။ ဘာသာစကား၏ ယခင်ဗားရှင်းနှင့် လိုက်လျောညီထွေသော ပုံစံမှာ ပျောက်ဆုံးခဲ့သည်။ MetaQuotes သည် client terminal API အား ပံ့ပိုးပေးခြင်းကိုလည်း ရပ်တန့်ထားသော်လည်း ပရိုဂရမ်းမင်းဘာသာစကား၏ စွမ်းဆောင်ရည်များကို ဆက်လက်တိုးချဲ့ကာ စိတ်ကြိုက်ပြင်ဆင်နိုင်ရန် DLL libraries များကို MQL အက်ပလီကေးရှင်းများအတွင်းသို့ ပေါင်းစည်းရန် နည်းလမ်းများကို ပံ့ပိုးပေးသည်။ API ကို ကုန်သွယ်ရေးအကျိုးဆောင်များ၏ ဆာဗာ၊ စီမံခန့်ခွဲရေးနှင့် စီမံခန့်ခွဲမှုအဆင့်များ၌သာ ရရှိနိုင်ပါသည်။
၂၀၁၀ ဇွန်လတွင် ပုံစံအများအပြား ထွက်ရှိပြီးနောက် MetaTrader 5 ကို စတင်ခဲ့သည်။ MetaQuotes သည် ပလပ်ဖောင်း၏ အတွင်းပိုင်းဖွဲ့စည်းပုံမှ ချမှတ်ထားသော ကန့်သတ်ချက်အများစုကို ဖယ်ရှားကာ ကုန်သွယ်မှုသဘော ကို ပြန်လည်ဒီဇိုင်းရေးဆွဲခဲ့သည်။ သို့သော် ယခုအချိန်အထိ MT5 သည် လူကြိုက်များသည့် စတုတ္ထမျိုးဆက်နှင့် ယှဉ်ပြိုင်နိုင်ခြင်းမရှိပေ။
၂၀၁၄ ဖေဖော်ဝါရီလ တွင် MQL4 ကို MT4 client terminal ၏ 600 build နှင့်အတူ ပြင်ဆင်မွမ်းမံခဲ့သည်။ MetaQuotes သည် ပရိုဂရမ်းမင်းဘာသာကို မြှင့်တင်ပေး၍ MQL5 မှ အင်္ဂါရပ်အများစုကို မိတ်ဆက်ခဲ့ပြီး တစ်ချိန်တည်းတွင် ၎င်းအား ထပ်မံအဆင့်မြင့်ထားသည့် အနေအထားသို့ မြှင့်တင်ခဲ့သည်။
MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာများ၏ အင်္ဂါရပ်များ
MQL ကို အလိုအလျောက်စနစ်ဖြင့် ကုန်သွယ်မှုဗျူဟာများ ဖန်တီးရန် အသုံးပြုသည်။ MQL ကုဒ်ကို C++ ကုဒ်အဖြစ် ပဏာမအားဖြင့် အဓိပ္ပာယ်သတ်မှတ်ထားပြီး၊ ထို့နောက် တာမင်နယ် အတွင်းတွင် ပါဝင်သော dynamic library အဖြစ် လည်ပတ်နိုင်သော ပရိုဂရမ်ကုဒ် တစ်ခုအဖြစ် စုစည်းထားသည်။ အကယ်၍ ကျွန်ုပ်တို့သည် ယခင်စနစ်များနှင့် နှိုင်းယှဉ်ပါက၊ ၎င်းသည် ပင်မပရိုဂရမ်၏ ပရိုဂရမ်ကုဒ် တွင် DLL library ကို ထည့်သွင်းခြင်းနှင့် ဆင်တူသည်။ ဤနည်းလမ်းသည် ဖွံ့ဖြိုးတိုးတက်မှု ကို အထောက်အကူပြုလွယ်ကူစေရန်နှင့် အလိုအလျောက် ကုန်သွယ်ခြင်းနယ်ပယ်သို့ ဝင်ရောက်ရန်အတွက် အနိမ့်ဆုံးအဆင့်ဖြစ်သည်။ ဤပရိုဂရမ်းမင်း ဘာသာဆက်သွယ်ချက်စနစ်သည် ကျဉ်းမြောင်းသော နယ်ပယ်နှင့် ကုန်သွယ်ရေး ပလပ်ဖောင်းပေါ်ရှိ ပရိုဂရမ်းမင်းဘာသာကို မှီခိုနေရသော်လည်း ကုန်သည်များကြားတွင် ရေပန်းစားသည်။
MetaQuotes သည် ၎င်းတို့၏ အသုံးပြုသူများကို ဂရုစိုက်ပြီး ၎င်းတို့၏ အက်ပလီကေးရှင်းများအားလုံးကို အသေးစိတ် အထောက်အပံ့ဖြစ်စေသော အချက်အလက်များဖြင့် ပံ့ပိုးပေးခဲ့သည်။ MQL4 ပရိုဂရမ်ရေးသားခြင်းအတွက် အကိုးအကားများနှင့် MQL5 ကို HTM ဖိုင်ပုံစံများ အသွင်ဖြင့် ပရိုဂရမ်းမင်းဘာသာစကားများစွာအသုံးပြု၍ MetaEditor တွင် ပံ့ပိုးပေးပါသည်။ ထို့ကြောင့်၊ သင့်တွင် လိုအပ်သည့် အနေအထားကို အကောင်အထည်ဖော်ပုံနှင့်ပတ်သက်၍ ကုဒ်နမူနာများပါသည့် အသေးစိတ်လမ်းညွှန်ချက် အမြဲရှိနေမည်ဖြစ်သည်။
MQL နှင့် ပတ်သက်၍ ကုန်သည်များနှင့် ပရိုဂရမ်မာများ ၏ အဖွဲ့အစည်းကြီးတစ်ခု ပေါ်ပေါက်လာခဲ့သည်။ ပရိုဂရမ်မာများနှင့် ကုန်သည်များကြား ဆက်သွယ်မှု အဆင်ပြေစေရန် ဆော့ဝဲလ်များ ရှိလာသည်။ ကုန်သွယ်မှုလုပ်ငန်းစဉ်ကို ရိုးရှင်းစေရန် အဆင်သင့်အသုံးပြုနိုင်သော ကြားခံအက်ပလီကေးရှင်းတစ်ခု ပေါ်ပေါက်လာခဲ့သည်။ mql5.com တွင် အခပေး သို့မဟုတ် အခမဲ့ဖြင့် အက်ပလီကေးရှင်းများလဲလှယ်ရန်အတွက် စျေးကွက်ရှိလာသည်။ ကုန်သွယ်မှု တာမင်နယ်သည် အက်ပလီကေးရှင်းစတိုး၊ ကုဒ်အခြေခံ၊ ဆောင်းပါးများနှင့် အခြားကုန်သည်များထံမှ အချက်ပြမှုများကို ပေါင်းစပ်ထားသည်။ အက်ပလီကေးရှင်းစတိုးသည် အချက်ပြကိရိယာများ၊ အကြံပေးများ၊ ပရိုဂရမ်များနှင့် အသုံးဝင်ဆော့ဝဲလ်အမျိုးမျိုးကဲ့သို့သော အခပေးနှင့် အခမဲ့ဖြစ်သည့် အက်ပလီကေးရှင်းရာပေါင်းများစွာကို ပံ့ပိုးပေးသည်။ ဤသည်မှာ "သင်၏ကိုယ်ပိုင်ကုန်သွယ်ရေးဗျူဟာကိုပြန်လည်တီထွင်ခြင်း" ထက် အသင့်လုပ်ထားသောပရိုဂရမ်ကို ၀ယ်ရန်ပိုမိုလွယ်ကူသောအခြေအနေဖြစ်သည်။
အကယ်၍ သင်သည် MQL ကို ကျွမ်းကျင်ပိုင်နိုင်စွာ အသုံးချရန် ခိုင်မာစွာ ဆုံးဖြတ်ထားပြီး သင့်ကိုယ်ပိုင် အက်ပလီကေးရှင်းများ ဖန်တီးနိုင်သည့်ရပ်ဝန်းသို့ ခြေချမည်ဆိုပါက၊ ဤရည်ရွယ်ချက်ကို စတင် ဖော်ဆောင်ရာတွင် စတင်သူတိုင်း ကြုံတွေ့ရသည့် ပြဿနာများအကြောင်း လေ့လာရန် ဤဆောင်းပါးကို အသုံးပြုနိုင်ပါသည်။ အဆင့်မြင့်လေ့လာသူများအနေဖြင့် အောက်ဖော်ပြပါတင်ပြချက်များမှ အသစ်အဆန်းများကို သင်ယူနိုင်မည်မဟုတ်ပါ။
ဖန်တီးသူများသည် အရောင်းအ၀ယ်လောကမှ အကြောင်းအရာအမျိုးစုံအတွက် ဆောင်းပါးပုံစံဖြင့် သင်ခန်းစာများကို ပုံမှန်ထုတ်ဝေခြင်းကာ MQL ရပ်ဝန်းအား သတင်းအချက်အလက်များ ပံ့ပိုးပေးပါသည်။ ဆောင်းပါးရေးသားသူများသည် လူသားဦးဏှောက်ကို အခြေခံသော neural networks များဖန်တီးခြင်း၊ ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက် ၏ ကန့်သတ်ချက်များ နှင့် ပြဿနာများကို ဖြေရှင်းပေးခြင်းနှင့် ၎င်းတို့ကို ခွဲခြမ်းစိတ်ဖြာခြင်း၊ ကုန်သွယ်မှုဗျူဟာများကို အသေးစိတ်သုံးသပ်ခြင်းနှင့် စမ်းသပ်ခြင်း၊ ပရိုဂရမ်ဆိုင်ရာ algorithms အသစ်များကို ရှာဖွေခြင်းနှင့် အကောင်အထည်ဖော်ခြင်းတို့ အပါအဝင် ပရိုဂရမ်နည်းပညာအသစ်များကို ထည့်သွင်းစဉ်းစားသည်။
MQL Wizard သည် MQL4 အတွက် ရွေးချယ်စရာ ၈ ခုနှင့် MQL5 အတွက် ရွေးချယ်စရာ ၁၀ ခု ပံ့ပိုးပေးထားသည်။ ဤသည်မှာ ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက် ဗားရှင်းနှစ်မျိုးလုံးအတွက် wizard ဖိုင် ၏ ပုံများဖြစ်သည်။
လူကြိုက်အများဆုံး အမျိုးအစားများကို သုံးသပ်ကြည့်ရအောင်။
- Expert Advisor/အလိုအလျောက်ကုန်သွယ်သောစနစ်၊
- Indicator;
- Script;
- Include files (.mqh) library
အချက်အလက်များကို စုစည်းပြီးနောက်၊ ပရိုဂရမ်ကုဒ်ပုံစံဖြင့် ဤအက်ပလီကေးရှင်းများကို MetaTrader Client Terminal (File -> Open Data Folder) ၏ သင့်လျော်သောနေရာတွင် ထားရှိသည်- Experts, Indicators, Scripts စသဖြင့်ဖြစ်သည် ။ ထို့နောက် ဈေးနှုန်းဇယားပေါ်တွင် စတင်ထည့်သွင်းပြီးနောက် ၎င်းတို့ လည်ပတ်နေစဉ်အတွင်း MetaTrader Client Terminal မှ ထုတ်ပေးသော လုပ်ဆောင်ချက်များကို တုံ့ပြန်ခြင်းဖြင့် အလုပ်လုပ်မည်ဖြစ်သည်။ လုပ်ဆောင်ချက်များသည် စိတ်ကြိုက်ပရိုဂရမ်များကို စတင် အကောင်အထည်ခြင်းအတွက် အစပျိုးမှုဖြစ်ပြီး သင့်အား အစပြုခြင်းနှင့် အဆုံးသတ်ခြင်းတို့ကို ခြေရာခံခြင်း၊ ကိုးကားချက်အသစ်လက်ခံရရှိခြင်း၊ ဇယားပေါ်ရှိ စိတ်ကြိုက်လုပ်ဆောင်ချက်နှင့် အခြားလုပ်ဆောင်ချက်များကို ခြေရာခံနိုင်စေပါသည်။
ထို့အပြင်၊ ယခုအခါ၌ Python တွင် အက်ပလီကေးရှင်းများကို ဖန်တီးနိုင်ပြီဖြစ်သည်။ ထို့ကြောင့် Python အက်ပလီကေးရှင်းများကို ကုန်သွယ်မှုတာမင်နယ်တွင် ရရှိနိုင်ပါပြီ။
အောက်ဖော်ပြပါလုပ်ဆောင်ချက်ထိန်းကျောင်းသူများကို MQL4 ရည်ညွှန်းချက်တွင် ဖော်ပြထားပါသည်။
MQL5 တွင် ယခင်မျိုးဆက်များနှင့် နှိုင်းယှဉ်ပါက ထိန်းကျောင်းသူအရေအတွက် တိုးလာခဲ့သည်။ လက်ရှိစာရင်းမှာ အောက်ပါအတိုင်းဖြစ်သည် ။
နောက်ပိုင်းတွင် ဤစာရင်းကို တိုးချဲ့ခဲ့သည်။ ယခုအခါတွင် အောက်ပါအတိုင်း တွေ့ရှိရသည် ။
အလိုအလျောက်ကုန်သွယ်သည့်စနစ် - Trading robot သို့မဟုတ် Expert Advisor
ကုန်သည်အသိုင်းအဝိုင်းကြားတွင် ၎င်းကို Expert အဖြစ်လည်း ရည်ညွှန်းသည်။ Expert Advisor သည် MetaTrader Client Terminal ရှိ ဈေးနှုန်းဇယားတွင် ပူးတွဲပါရှိပြီး ကုန်သွယ်မှုတာမင်နယ် လည်ပတ်နေခြင်း နှင့် ကုန်သွယ်မှုဆာဗာသို့ ချိတ်ဆက်မှု ရရှိနေသရွေ့ အဆက်မပြတ် အလုပ်လုပ်ပါသည်။ Expert Advisor များသည် မည်သည့်ကုန်သွယ်မဟာဗျူဟာများကိုမဆို အကောင်အထည်ဖော်ရန်၊ အကောင့်အခြေအနေကို ထိန်းချုပ်ရန်၊ အချို့သောအခြေအနေများအောက်တွင် ကုန်သွယ်မှုလုပ်ငန်းများလုပ်ဆောင်ရန်နှင့် ဂရပ်ဖစ်ဝတ္ထုများကို စီမံခန့်ခွဲရန်အတွက် အသုံးပြုပါသည်။ ကုန်သွယ်ရေးအမျိုးအစားတစ်ခုအတွက် ဈေးနှုန်းအသစ် တစ်ခုရရှိသည့်အခါတိုင်း ဤအလိုအလျောက်ကုန်သွယ်မှု စနစ်သည် အရောင်းအဝယ်ဝင်ရောက်ရန်အတွက် စတင်လုပ်ဆောင်ပါသည်။ OnTimer, OnChartEvent, OnTesterTimer စသည်ဖြင့် အခြားသော ဖြစ်ရပ်များစွာအတွက် Expert Advisor ကိုလည်း စတင်လုပ်ဆောင်နိုင်ပါသည်။
Expert Advisors များကို အသုံးပြုသူလမ်းညွှန်ချက်များ ဖန်တီးရန် အသုံးပြုသည်။ အချက်ပြကိရိယာများကဲ့သို့ ဤစနစ်များသည် ဂရပ်ဖစ်ဝတ္ထုများကို အသုံးပြုခွင့်ရှိသည်။
အောက်တွင်ဖော်ပြမည်မှာ ရိုးရှင်းသော အဆိုပါစနစ်အတွက် ကုဒ်ဖြစ်သည်။ EA အလုပ်လုပ်သည့် ဈေးနှုန်းဇယားရှိ သင်္ကေတ တွင် အမှတ်အသားသစ်ရရှိပြီးတိုင်း၊ စျေးကွက် အရောင်းအဝယ်များကို စစ်ဆေးသည်။ သင်္ကေတတစ်ခုအတွက် ကုန်သွယ်မှုတစ်ခုရှိနေပြီဆိုလျှင်၊ EA သည် ၎င်းကိုပိတ်ရန် စောင့်ဆိုင်းနေပါသည်။ အရောင်းအဝယ်မရှိပါက၊ နောက်အရောင်းအဝယ်တစ်ခုကို ယခင်တစ်ခုနှင့် ဆန့်ကျင်ဘက် ဦးတည်ချက်တွင် ဖွင့်လှစ်ထားသည်။ EA ကန့်သတ်ချက်များ- အရောင်းအဝယ်ပမာဏ၊ အရှုံးနှင့် အမြတ်ရယူသည့် ဈေးတန်းများကို သုံးစွဲသူက သတ်မှတ်သည်။ ပထမဆုံး စတင်လုပ်ဆောင်သည့်အချိန်တွင်၊ ငွေကြေးဝယ်ယူမှု ပြုလုပ်မည်ဖြစ်သည်။ ၎င်းကိုပိတ်ပြီးနောက်၊ နောက်တစ်ခုကို ရောင်းရန်ဖွင့်မည်ဖြစ်ပြီး၊ ထို့နောက်တွင် ထပ်မံဝယ်ယူရန် စသည်ဖြင့် လုပ်ဆောင်မည်ဖြစ်သည်။ အရောင်းအဝယ်တစ်ခုဖွင့်ရန် ကြိုးပမ်းမှု မအောင်မြင်ပါက၊ EA သည် မှတ်တမ်း သို့ အမှားအယွင်းဖြစ်ကြောင်း မက်ဆေ့ချ်တစ်ခု ရေးသားပေးပို့ပြီး စက္ကန့် ၆၀ ကြာ ရပ်တန့်သွားပြီးနောက် ကြိုးပမ်းမှုကို အထပ်ထပ်အခါခါ လုပ်ဆောင်မည်ဖြစ်သည်။ EA သည် အသုံးပြုသူမှထည့်သွင်းထားသော ကန့်သတ်ချက်များကို တိကျမှန်ကန်စေရန် မစစ်ဆေးသောကြောင့် ဤအချက်ကို ဂရုတစိုက်စောင့်ကြည့်ပါ။ ချက်ချင်းမြင်နိုင်သော ဖြစ်နိုင်ဖွယ်ရှိသည့် ပြဿနာများမှာ -
- ကုန်သွယ်မှုစွမ်းရည်အလုံးစုံ ကို မစစ်ဆေးပါ။ ၎င်းကို တာမင်နယ် တွင် အသုံးပြုသူက အထူးသဖြင့် ဤစနစ်အတွက် ပိတ်ထားနိုင်သည်။ ကုန်သွယ်မှုဆာဗာတွင် အလိုအလျောက် ကုန်သွယ်မှုအတွက် ကန့်သတ်ချက်များလည်း ရှိနိုင်သည်။
- အရောင်းအဝယ်ပမာဏသည် အနည်းဆုံးကန့်သတ်ချက်ပမာဏ ထက် သေးငယ်ခြင်း သို့မဟုတ် အကြီးဆုံး ကန့်သတ်ချက်ပမာဏထက် များပြားနိုင်ပြီး၊ ဆာဗာသည် အရောင်းအဝယ်ပမာဏ အတက်အကျကို ကန့်သတ်ထားပါက သင့်လျော်မည်မဟုတ်ပေ။ ဥပမာအားဖြင့်၊ အသုံးပြုသူသည် 0.23 lots ထည့်သွင်းထားသော်လည်း ဆာဗာ၏ အနည်းဆုံးပြောင်းလဲနိုင်မှုမှာ 0.05 lots ဖြစ်သည်။ ရလဒ်အနေဖြင့်၊ အရောင်းအဝယ်ကိုဖွင့်မည်မဟုတ်ဘဲ OrderSend လုပ်ဆောင်ချက်သည် အမှားအယွင်း တစ်ခု အဖြစ်သို့ ရောက်ရှိသွားမည်ဖြစ်သည်။
- အရောင်းအဝယ်တစ်ခုအတွက် ရပ်တန့်သည့်ဈေးတန်းများကိုလည်း တိကျမှုရှိမရှိ မစစ်ဆေးထားပါ။ ၎င်းတို့သည် အနိမ့်ဆုံး/အမြင့်ဆုံး ခွင့်ပြုနိုင်သော တန်ဖိုးများအတွင်း အံဝင်ခွင်ကျမဖြစ်နိုင်ခြင်း သို့မဟုတ် ထိန်းချုပ်ဈေးတန်းများဖြင့် သတ်မှတ်ထားသည့် ကန့်သတ်ချက်များအတွင်း အံဝင်ခွင်ကျမဖြစ်နိုင်ပါ။
အကြီးစားကုန်သွယ်ရေးအခြေအနေများအား အကောင်အထည်ဖော်ရန်အတွက် နမူနာပုံစံတစ်ခုအဖြစ် အသုံးပြုနိုင်သည့် အရိုးရှင်းဆုံးကုဒ်။
ဤကုဒ်သည် ၂၀၂၀ ခုနှစ် မတ်လ ၃၁ ရက်နေ့တွင် MetaQuotes Language Editor 5 build 2375 ၌ စတင် ဖွဲ့စည်းပြီး အလုပ်လုပ်လျက်ရှိပါသည်။
Indicator
အချက်ပြကိရိယာကို စျေးနှုန်းဒေတာ နှင့် ပတ်သက်သော သတင်းအချက်အလက်များ ပြသရန် နည်းလမ်းတစ်မျိုးမျိုးဖြင့် ပြောင်းလဲကာ အသုံးပြုခြင်းဖြစ်သည်။ Ooscillator အမျိုးအစားအားလုံး၊ trend lines များ၊ fractals များအားလုံးသည် အချက်ပြကိရိယာများဖြစ်သည်။ အချက်ပြကိရိယာများသည် ဂရပ်ဖစ်ကိရိယာများကို အသုံးပြုခွင့်ရှိသည်။ MQL4 တွင် ၎င်းတို့ထဲမှ ၆ ခုရှိပြီး MQL5 တွင် ၁၈ခု ဖြစ်သည်။ ဥပမာအားဖြင့်၊ Moving Average သည် ယခင်စျေးနှုန်းကာလတစ်ခုအတွက် ပျမ်းမျှ သို့မဟုတ် ချောမွေ့သော စျေးနှုန်းတန်ဖိုးအချို့ကိုပြသပြီး ကုန်သွယ်ရေးဈေးကွက်တစ်ခုအတွက် စျေးနှုန်း၏အနာဂတ်ဦးတည်ချက်ကို သွယ်ဝိုက်ဖော်ပြသည်။ ၎င်းသည် ဇယားတွင် အချိန်တိုင်း အလုပ်လုပ်သည်။ ညွှန်ပြချက် အလုပ်လုပ်နေချိန် သို့မဟုတ် ဈေးနှုန်းဇယားပေါ်ရှိ အဆိုပါကုန်သွယ်ရေးအမျိုးအစားအတွက် အချက်အလက်များ လက်ခံရရှိ၍ အသုံးပြုသူထံမှ ချိန်ညှိချက်များကို ပြန်လည်ပြုလုပ်သည့်အခါတိုင်း ညွှန်ပြချက်ကို ပြန်လည်ပြင်ဆင်၍ ပြန်လည်တွက်ချက်ခြင်း ပြုလုပ်ပါသည်။
တစ်ခု သို့မဟုတ် များစွာသော buffers များသည် ကိန်းဂဏာန်းဒေတာများကို ထည့်သွင်းထားသည့်အတွက် MetaTrader Client Terminal အတွင်းရှိ မည်သည့် အချက်ပြကိရိယာနှင့်မဆို ဆက်စပ်နေပါသည်။ MQL4 သည် ညွှန်ပြချက်တစ်ခုအတွက် buffers ၃၂ ခုကို ပံ့ပိုးပေးထားပြီး MQL5 တွင် buffers ၅၁၂ ခု အထိ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။
အောက်တွင်ဖော်ပြထားသည်မှာ MetaTrader4 နှင့် ကုန်သွယ်ရေးပလပ်ဖောင်း ဖန်တီးသူများမှ ပံ့ပိုးပေးသော Bears ညွှန်ပြချက် ၏ အရင်းအမြစ်ကုဒ်၏ နမူနာပုံစံဖြစ်သည်။
Script
ဆော့ဖ်ဝဲရေးသားသူများသည် အချိန်နှင့်တပြေးညီဒေတာလည်ပတ်မှု မလိုအပ်သော algorithms များကို ဖန်တီးရန် script များကို အသုံးပြုကြသည်။ ဥပမာအားဖြင့်၊ ကိန်းဂဏန်းအချက်အလက်ကို ဒေါင်းလုဒ်လုပ်ရန် သို့မဟုတ် အမှားရှာကာ ပြုပြင်ခြင်းပြုလုပ်ပေးသည့် အချက်အလက်ကို ထုတ်ပေးရန်ဖြစ်သည်။ OnStart ပုံစံဖြင့် မည်သည့်ဈေးနှုန်းဇယားတွင်မဆို ထည့်သွင်းထားသည့်အခါ Script များကို တစ်ကြိမ်တည်းဖြင့် လုပ်ဆောင်သည်။ ၎င်းသည် script ကို လုပ်ဆောင်နိုင်သည့် တစ်ခုတည်းသော နည်းလမ်းဖြစ်သည်။
အောက်ပါပုံတွင် အကောင့်ရှိ စျေးကွက်အော်ဒါများအားလုံးကို ပိတ်ရန်အတွက် script code ကို ပြသထားသည်။ Script သည် မည်သည့်ကုန်သွယ်ရေးအမျိုးအစားသင်္ကေတ၏ဇယားကို စတင်သည်ဖြစ်စေ အော်ဒါများအားလုံးကို လည်ပတ်ဆောင်ရွက်မည်ဖြစ်သည်။ ဤအခြေအနေတွင် ကြိုတင်သတ်မှတ်ထားသော အော်ဒါများကို လျစ်လျူရှုထားသည်။
ဤ script ကို လည်ပတ်အသုံးပြုခြင်း၏ရလာဒ်သည် MetaTrader မှတ်တမ်းအတွက် အောက်ပါအတိုင်း ထွက်ပေါ်မည့်ရလာဒ် ဖြစ်မည်ဖြစ်သည်-
MQL4 တွင် ကြိုတင်သတ်မှတ်ထားသော အော်ဒါများကို သီးခြားစီ လုပ်ဆောင်ရန်အတွက် ဤ script ကို သိရှိနိုင်ရန် ပိုမိုလေ့လာအားထုတ်ရမည်ဖြစ်ပါသည်။ ပထမဦးစွာ၊ script ဖြင့် input data များပါဝင်သော window တစ်ခုကိုပြသနိုင်ရန် Property တစ်ခုကိုဖန်တီးကြပါစို့။ ထို့နောက်၊ script တစ်ခုဖြင့် အရောင်းအဝယ်များ ကို ပိတ်ရန်အတွက် ရွေးချယ်စရာ ၃ ခုပါရှိသော Enum ကို ပေါင်းထည့်ပါ- စျေးကွက်အော်ဒါများနှင့် ကြိုတင်သတ်မှတ်ထားသော အော်ဒါများသာလျှင်၊ သို့မဟုတ် လက်ရှိအကောင့်ပေါ်ရှိ အရောင်းအဝယ်များအားလုံးကိုပေါင်းထည့်ပါ။ ထို့နောက် ကျွန်ုပ်တို့သည် ကြိုတင်သတ်မှတ်ထားသော အော်ဒါများ၏ လက်မှတ်နံပတ်များကို သိမ်းဆည်းရန်အတွက် ပရိုဂရမ်မှတ်ဉာဏ်တစ်ခုကို ပေါင်းထည့်ကာ ပထမဆုံးအကြိမ်အဖြစ် ပရိုဂရမ်းမင်းဆက်သွယ်ချက်တစ်ခုဖြစ်သော For loop တွင် ၎င်းကို ဖြည့်စွက်ပါ။ ယခုအခုတွင် အသုံးပြုသူမှ ရွေးချယ်ထားသော အရောင်းအဝယ်များကို ပိတ်ရန်အတွက် လုပ်ဆောင်မှုကျန်ရှိနေပါသည်။
ရလဒ်အနေဖြင့်၊ ကျွန်ုပ်တို့သည် အရောင်းအဝယ်အားလုံးကို ပိတ်နိုင်ရုံသာမက အသုံးပြုသူ၏ရွေးချယ်မှုကိုပါ ထည့်သွင်းစဉ်းစားထားသည့် ဤကဲ့သို့သော script တစ်ခုကို ရရှိခဲ့ပါသည်။
Include files (.mqh) library
MetaTrader Client Terminal အတွက် အခြားသော ပရိုဂရမ် အမျိုးအစားများတွင် ပါ၀င်ရန်အတွက် ၎င်းကို ဖော်ပြသည့် အမည်အတိုင်း အသုံးပြုပါသည်။ အတွေ့အကြုံရှိဆော့ဖ်ဝဲရေးသားသူတွင် အက်ပလီကေးရှင်းအမျိုးမျိုး၌ ကြိမ်ဖန်များစွာ ပြန်လည်အသုံးပြုနိုင်သည့် ၎င်းတို့၏ ကိုယ်ပိုင် ပရိုဂရမ်ပိုင်းဆိုင်ရာ အထောက်အကူပြုကိရိယာအစုံအလင်ရှိသည်။
MetaQuotes Language Editor တွင်၊ ပါဝင်သည့် ဖိုင်၏တည်နေရာနှင့် ဆက်စပ်သော ပင်မဖိုင်တည်ရှိရာသို့ ဖိုင်လမ်းကြောင်းကို သတ်မှတ်ရန်သာ လိုအပ်ပါသည်။ ပရိုဂရမ်ကို စုစည်းတည်ဆောက်သောအခါ၊ MetaEditor သည် ဤဖိုင်ကို တွေ့ရှိပြီး #include ညွှန်ကြားချက်အစား ၎င်း ဖိုင်မှ ကုဒ်ကို ထည့်သွင်းမည်ဖြစ်သည်။ ယခုအခါ library code အားလုံးကို အက်ပလီကေးရှင်းတွင် အသုံးပြုနိုင်သည်။
အလားတူ၊ C နှင့် C++ ပရိုဂရမ်မာများသည် ၎င်းတို့၏ ပရောဂျက်များတွင် ပင်မဖိုင်များပါ၀င်ပြီး binaries နှင့် ချိတ်ဆက်ခြင်းဖြင့် ကုဒ်ကို ပြန်လည်အသုံးပြုသည်။
အောက်ဖော်ပြပါ ဥပမာသည် standard C++ library မှ dynamic array (aka std::vector) ၏ အရိုးရှင်းဆုံးသော အဓိပ္ပာယ်ဖွင့်ဆိုချက်ကို ဖော်ပြထားပါသည်။ ဤကုဒ်သည် MetaEditor ဗားရှင်း 5.00 build 2375 31 March 2020 ဖြင့် စတင်လည်ပတ်သည်။
MQL4 နှင့် MQL5 ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက်များ၏ ဒေတာအမျိုးအစားများနှင့် အထားအသို
ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက်၏ ဒေတာအမျိုးအစားများနှင့် အထားအသိုများသည် C++ မှ ဆက်လက်ဆင်းသက်လာသည်။ ဒေတာစုစည်းမှုမပြုမီ၊ MQL ကုဒ်ကို ကြိုတင်လုပ်ဆောင်ထားပြီး သက်ဆိုင်ရာ C++ ကုဒ်သို့ ချိတ်ဆက်ထားသောကြောင့်၊ ယခင်ပုံစံအဆက်ဆက်ရှိ ပုံမှန်အသုံးပြုသော ပရိုဂရမ်းမင်းဘာသာ ဆက်သွယ်တည်ဆောက်မှုများကို အများဆုံးစုစည်းထားပြီး MQL တွင် လည်ပတ်စေမည်ဖြစ်သည်။ C, C++ သို့မဟုတ် C# နှင့် ရင်းနှီးကျွမ်းဝင်သော ပရိုဂရမ်ရေးသူ သည် MQL ကုဒ်အား မည်သို့ရေးရမည်ကို အလွယ်တကူ ရှာဖွေနိုင်သည်။
ဒေတာအမျိုးအစားများ
MQL တွင် အောက်ပါအခြေခံဒေတာအမျိုးအစားများ ရှိပါသည်။
- Boolean တန်ဖိုးများ
- တိကျသော Single နှင့် Double floating ပွိုင့် နံပတ်များ၊
- ကိန်းပြည့်များ၊ single နှင့် double precision ၊ signed နှင့် unsigned
- အချက်အလက်ဒေတာကို သိမ်းဆည်းရန်အတွက် Char
- Enum စာရင်းကောက်ယူမှုများ၊ သို့သော် enum class ကို ပံ့ပိုးမထားပါ
- ဖွဲ့စည်းပုံများ၊ အမျိုးအစားများနှင့် အမျိုးအစား နမူနာပုံစံများ
တစ်ချိန်တည်းမှာပင်၊ built-in အမျိုးအစားများအဖြစ် အရောင်၊ ပရိုဂရမ်းမင်းဆိုင်ရာ ကိန်းဂဏန်း နှင့် နေ့ရက်အချိန် အတွက် ပံ့ပိုးမှုလည်း ပါ၀င်ပြီး ဖန်တီးသူ ၏ ဖန်တီးမှုကိုလည်း အနည်းငယ် ရိုးရှင်းစေပါသည်။ အများသုံးလုပ်ဆောင်ချက်များကိုအသုံးပြု၍ ဤအမျိုးအစားများနှင့်လုပ်ဆောင်ခြင်းကို C style ဖြင့် ဖွဲ့စည်းထားသည်။ MQL ကိန်းဂဏန်း၏ သဘောတရားသည် C++03 ၏ std::string family ပုံစံများနှင့် အခြေခံအားဖြင့် ကွဲပြားသည်။ ၎င်းတို့ကို မရောထွေးပါနှင့် ။
MetaQuotes ပရိုဂရမ်းမင်းဘာသာ ဆက်သွယ်ချက်များ၏ Syntax
MQL တွင် C++ နှင့်ဆင်တူသော syntax တစ်ခုရှိသည်။ C++03 စံနှုန်း၏ အဆက်ဆက်အသုံးပြုသော စနစ်များ၏ အယူအဆကို MQL ထဲသို့ ပြောင်းလဲမှုအနည်းငယ်ဖြင့် ရွှေ့ပြောင်းထားသည်။ လက်ရှိတွင် MQL ၏ စွမ်းဆောင်ရည်သတ်မှတ်ချက်များသည် C++03 စံနှုန်းများနှင့် ကိုက်ညီပါသည်။
MQL နှင့် C++ အကြား အဓိက ကွာခြားချက်မှာ pointers များ၏ မတူညီသော semantics ဖြစ်သည်။ C++ တွင် ၎င်းသည် ဒေတာတည်ရှိသည့် virtual လိပ်စာဖြစ်ပါက MQL တွင် ၎င်းသည် ဖော်ပြချက်တစ်ခု၊ POSIX စံသတ်မှတ်ဖော်ပြချက်တစ်ခု၏ analogue တစ်ခု၊ ကိန်းဂဏာန်းအမှတ်အသားတစ်ခု၊ raw pointer တစ်ခုပေါ်ရှိ wrapper တစ်မျိုးဖြစ်ပြီး၊ ဝတ္ထုများသည် dynamic memory တွင် ဖန်တီးထားသည့် အရာများဖြစ်၍ ဤအမှတ်အသားများ နှင့် ဆက်စပ်တည်ရှိနေပါသည်။ Arrow operator “->” ကို MQL pointers များအတွက် ပံ့ပိုးမထားဘဲ Dot operator “-” ကို အသုံးပြု၍ ကိုးကားခြင်းအား လုပ်ဆောင်သည်။ပရိုဂရမ်ပြီးဆုံးပြီးနောက် ဖော်ပြချက်အား ညွှန်ပြသည့်အတိုင်း ဖျက်ပစ်ရပါမည်။ သို့သော်၊ ဤအရာများကို ရည်ညွှန်းသည့် အရာဝတ္တုကို ဖျက်ရန်မေ့သွားပါက၊ ပရိုဂရမ်ကို ပယ်ဖျက်ခြင်း လုပ်သောအခါ runtime သည် သင့်အတွက် ပြန်လည်လုပ်ဆောင်ပေးမည် ဖြစ်သည်။
MQL language သည် ယာယီပြောင်းလဲမှုနှင့် ဒေတာ ပြောင်းရွေ့မှု၏ သဘောတရားပါဝင်မှု နည်းပါးသည်။ ကိုးကားချက်များနှင့် တန်ဖိုးအလိုက် ကိန်းရှင်များ လည်ပတ်ခြင်းသည် C++ နှင့် ကွာခြားပြီး MQL တွင် ၎င်း၏ကိုယ်ပိုင်ပုံစံဖြင့် အကောင်အထည်ဖော်ဆောင်သည်။ Ampersand operator သုံးသည်ဖြစ်စေ မသုံးစွဲသည်ဖြစ်စေ ကိုးကားချက်ဖြင့် complex object သို့မဟုတ် စိတ်ကြိုက် အမျိုးအစားတစ်ခုကို ရည်ညွှန်းချက်ဖြင့် လုပ်ဆောင်သွားမည်ဖြစ်သည်။
ယခင် ပရိုဂရမ်များအပေါ် ကန့်သတ်ချက်များစွာရှိသည်။ အကြောင်းပြချက်အမျိုးမျိုးဖြင့် လုပ်ဆောင်ချက်များနှင့် နမူနာပုံစံများကို ရေးသား၍မရပါ။ သို့သော် မှတ်သားရန်မှာ iCustom (ဤဆောင်းပါးတွင် နောက်ပိုင်းမှ ထပ်မံ တင်ပြမည့်) ၊ printf၊ StringFormat၊ PrintFormat ကဲ့သို့သော built-in function အများအပြားသည် ကွဲပြားမှုများစွာကို ဖြစ်စေသည်။ ဝိရောဓိသဘော!
ဒေတာအချက်အလက်နှင့် ဝတ္ထုကိုးကားမှုများဖြင့် လုပ်ဆောင်ခြင်းသည် C++ နှင့် နှိုင်းယှဉ်ပါက အချို့သောရှုထောင့်များတွင် ကွဲပြားသော်လည်း ၎င်းတို့အားလုံးကို အချက်အလက်စုစည်းသည့် ကွန်ပျူတာပရိုဂရမ် မှ မက်ဆေ့ချ်များကို အသုံးပြု၍ အလွယ်တကူ ဖယ်ရှားနိုင်သည်။ ကိုးကားချက်ဖြင့် ဖြတ်သန်းလုပ်ဆောင်သော ကွဲပြားမှုများ၏ မတူညီသော ဝေါဟာရများကြောင့် copy constructor ၏ အမှတ်အသားများနှင့် copy assignment operator များတွင် ကွဲပြားမှုများရှိပါသည်။ ထို့အပြင်၊ MQL တွင် ကိန်းရှင်များနှင့် ဝတ္ထုများကို ရွေ့လျားရန်အတွက် ရွေ့လျားမှုဆိုင်ရာ အဓိပ္ပါယ်သတ်မှတ်ချက်များ မရှိပါ။
MQL4 နှင့် MQL5 ကုဒ်များကြား ကွာခြားချက်
MQL languages များ၏ စတုတ္ထမျိုးဆက်နှင့် ပဉ္စမမျိုးဆက်ကြား ခြားနားချက်များမှာ MetaTrader4 နှင့် MetaTrader5 ပလပ်ဖောင်းများအကြား ကွဲပြားမှုများကြောင့်ဖြစ်သည်။ 600 MT4 တည်ဆောက်မှုကို ထုတ်လုပ်ပြီးကတည်းက MetaQuotes Language Editor ၏ ပဉ္စမမြောက်ဗားရှင်းကို MQL4 နှင့် MQL5 တို့တွင် ပရိုဂရမ်များ ရေးသားပြုစုခြင်းနှင့် စုစည်းရန် အသုံးပြုကြောင်း သတိပြုသင့်သည်။ အထူးသဖြင့်၊ ပဉ္စမပလပ်ဖောင်းတွင် ကုန်သွယ်မှုပုံစံများ ပိုမိုပါဝင်ပြီး အော်ဒါ၊ အရောင်းအဝယ်သဘောတူညီချက်နှင့် အရောင်းအဝယ်ကို ခွဲခြားထားသောကြောင့် ပရိုဂရမ်းမင်းဘာသာဆက်သွယ်ချက်များသည် ကုန်သွယ်မှုဆိုင်ရာ လုပ်ဆောင်ချက်များနှင့် မတူညီသောနည်းလမ်းများဖြင့် လုပ်ဆောင်ကြသည်။
ယခုအခါ တောင်းဆိုမှုများကို ပေးပို့ရန် OrderSend လုပ်ဆောင်ချက်ကိုသာ အသုံးပြုထားပြီး၊ ၎င်းသည် စတုတ္ထဗားရှင်းနှင့် ဆန့်ကျင်ဘက်ဖြစ်သော ပြုပြင်မွမ်းမံမှုတစ်ခု သို့မဟုတ် အော်ဒါကို ပယ်ဖျက်ရန်အတွက် သီးခြားလုပ်ဆောင်ချက်များကို အသုံးပြုသည်။
| MQL4 | MQL5 | |
|---|---|---|
| Timeframes | 9 (M1, M5, M15, M30, H1, H4, D, W, MN) | 21 (M1, M2, M3, M4, M5, M6, M10, M12, M15, M20, M30, H1, H2, H3, H4, H6, H8, H12, D1, W1, MN1) |
| Drawing styles | 6 DRAW_NONE DRAW_LINE DRAW_SECTION DRAW_HISTOGRAM DRAW_ARROW DRAW_ZIGZAG With build 600, the number has become consistent with the fifth version. | 18 DRAW_NONE DRAW_LINE DRAW_SECTION DRAW_HISTOGRAM DRAW_HISTOGRAM2 DRAW_ARROW DRAW_ZIGZAG DRAW_FILLING DRAW_BARS DRAW_CANDLES DRAW_COLOR_LINE DRAW_COLOR_SECTION DRAW_COLOR_HISTOGRAM DRAW_COLOR_HISTOGRAM2 DRAW_COLOR_ARROW DRAW_COLOR_ZIGZAG DRAW_COLOR_BARS DRAW_COLOR_CANDLES |
| Event-driven launch model | OnInit OnStart OnDeinit OnTick OnCalculate OnTimer OnChartEvent OnTester
| OnInit OnStart OnDeinit OnTick OnCalculate OnTimer OnTrade OnTradeTransaction OnBookEvent OnChartEvent OnTester OnTesterInit OnTesterDeinit OnTesterPass |
| Trading | OrderSend OrderModify OrderDelete လုပ်ဆောင်မှုတစ်ခုစီအတွက် သီးခြား ကန့်သတ်ဘောင်တစ်ခုဖြင့် သတ်မှတ်ဖော်ပြသည်။ ၎င်းသည် ပရိုဂရမ်ရေးသားခြင်းနှင့် error ရှာသော ပရိုဂရမ်များကို ရှုပ်ထွေးစေသည်။ | OrderSend လုပ်ဆောင်ချက်အားလုံးအတွက် လုပ်ဆောင်ချက်တစ်ခု။ လိုအပ်သောအနေအထားကို MqlTradeRequest ဖွဲ့စည်းပုံတွင် သတ်မှတ်ထားသည်။လုပ်ဆောင်ချက်အတွက် တုံ့ပြန်မှုသည် MqlTradeResult ဖွဲ့စည်းပုံသို့ ပြန်လည်အသိပေးသည်။ ပုံစံကို ဒီဇိုင်းဆွဲရန်၊ ရလဒ်ကို စမ်းသပ်ရန်နှင့် ပရိုဂရမ်ကို အမှားရှာရန် ပိုမိုလွယ်ကူသည်။ |
| Indicator data buffers | 32 | 512 |
| Built-in indicators | Quantity: 30 | Quantity: 38 Indicators များအား ပရိုဂရမ်အရင်းအမြစ်များကို အသုံးပြု၍ ဖန်တီးထားသည်။ ကူးယူသည့်အရေအတွက်နှင့် မှတ်ဉာဏ်သုံးစွဲမှု လျော့ကျစေခဲ့သည်။ |
| Trading Modes | Hedging | Netting Hedging Stock |
| OpenCL and DirectX graphics tools | No | Yes |
| Generation of trading robots | No | ဟုတ်ပါသည်။ တစ်ချိန်တည်းတွင် သင်သည် စိတ်ကြိုက် signal module များကို သတ်မှတ်နိုင်သည်။ |
ထို့ကြောင့် ကွဲပြားမှုအနည်းငယ်ရှိသော်လည်း ၎င်းတို့သည် တူညီစွာတည်ရှိနေပါသည်။ Build 600 တွင် အပ်ဒိတ်လုပ်ပြီးနောက်၊ MQL4 သည် ပလပ်ဖောင်းတစ်ခုမှ အခြားတစ်ခုနှင့် မတူသည့်အပိုင်းတွင်သာ MQL5 နှင့် ကွဲပြားသည်။ LiteFinance ဘလော့ဂ်တွင် MetaTrader 4 နှင့် MetaTrader 5 တို့ကို နှိုင်းယှဉ်ရန် ရည်ရွယ်ထားသော ဆောင်းပါးတစ်ပုဒ်ရှိပြီးဖြစ်သည်၊ ဤအကြောင်းအရာတွင် သင့်အနေဖြင့် ပိုမိုနက်ရှိုင်းစွာ လေ့လာလိုပါက ထပ်မံဖတ်ရှုရန် ကျွန်ုပ်အလေးအနက်အကြံပြုအပ်ပါသည်။
MQL4 ညွှန်ပြချက် ပရိုဂရမ်ရေးဆွဲခြင်း- Expert Advisor ကို MQL4 (သို့မဟုတ်) MQL5 တွင် မည်သို့ရေးရမည်နည်း
Expert Advisor အကြောင်းမရေးသားမှီ သင့်တွင်ကုန်သွယ်မှုဗျူဟာတစ်ခု ရှိပြီးသားဖြစ်မည်ဆိုသည်ကို နားလည်ထားဖို့လိုပါသည်။ သို့မှသာ သင်၏စိတ်ကူးကို တရားဝင် algorithm ပုံစံဖြင့် စတင်အကောင်အထည် ဖော်နိုင်မည်ဖြစ်သည်။ စိတ်ကူးတစ်ခုကို အကောင်အထည်ဖော်ရန်အတွက် ကုဒ်ကိုယ်တိုင်က အချို့သောဘာသာစကား (Program) ကိရိယာများကိုသာ ထောက်ပံ့ပေးသည်။
ထို့ကြောင့်ပထမဦးဆုံး သင်လိုအပ်သည်မှာ အလုပ်ဖြစ်သော ကုန်သွယ်မှုဗျူဟာတစ်ခုဖြစ်သည်။ ဤအရာကို ဖော်ထုတ်ရန်မေးခွန်းသည် ယခုဆောင်းပါး၏ ဘောင်အပြင်ဘက်တွင် ရှိနေသောကြောင့် ရိုးရှင်းသောအရာတစ်ခုကို ဥပမာတစ်ခုအနေဖြင့် လေ့လာကြည့်ကြပါစို့။ အောက်ပါအတိုင်း ယူဆကြပါစို့။ “ဦးတည်ချက်မရှိသော ဈေးကွက်တစ်ခုပေါ်တွင်” ကုန်သွယ်ရေးအမျိူးအစား၏ လှုပ်ရှားမှုနည်းပါးသည့်ကာလအတွင်း ဆန့်ကျင်ဘက်လမ်းကြောင်းများတွင် ကန့်သတ်ပမာဏအနည်းငယ်ဖြင့် အရောင်းအဝယ်များကိုဖွင့်နိုင်သည်။ ၎င်းသည်သေးငယ်သော ဘေးတိုက်စျေးကွက်လှုပ်ရှားမှုများကို အခွင့်ကောင်းယူပြီး အမြတ်အစွန်းရရှိစေမည်ဖြစ်သည်။
ကျွန်ုပ်တို့သည် အရောင်းအ၀ယ်များကို ကိုယ်တိုင်ဖွင့်ပြီး အလိုအလျောက်လုပ်ဆောင်ပေးမည့် Expert Advisor ကိုရေးသားပြီး ၎င်းတို့၏ကန့်သတ်ချက်များကို ထိန်းချုပ်ကာ ဦးတည်ချက်မရှိသော ဈေးကွက်အချိန်အတွင်း ၎င်းကိုကုန်သွယ်ရေးအကောင့်တစ်ခုတွင် ထည့်သွင်းပါမည်။
အစပိုင်းတွင် language version မခွဲခြားဘဲ လုပ်ထုံးလုပ်နည်းသည် တူညီသည်။ MQL တွင် ပရိုဂရမ်များရေးသားရန် MetaEditor ပါ၀င်သည့် ပေးပို့မှုပက်ကေ့ချ်ဖြစ်သည့် MetaTrader Client Terminal ကိုထည့်သွင်းရန် လိုအပ်ပါသည်။ ကျွန်ုပ်တို့သည် MetaEditor ကို terminal ၏ လုပ်ဆောင်နေသော လမ်းညွှန်မှ တိုက်ရိုက် (သို့မဟုတ်) ကုန်သွယ်မှု တာမင်နယ်ရှိပင်မမီနူး - Tools နှင့် MetaQuotes Language Editor (F4) မှတဆင့်ဖွင့်နိုင်သည်။ MetaEditor ပင်မမီနူးရှိ ဝင်းဒိုးတွင် File -> New ကိုနှိပ်ပါ။ ဂရပ်ဖစ်မီနူးရှိ New ကိုနှိပ်ပြီးနောက် အလားတူလုပ်ဆောင်သည်။
MQL4 ကုန်သွယ်မှု robot ကို ဘယ်လိုရေးရမလဲ
MQL4 ea builder တွင် Wizard ကို Expert Advisor (နမူနာပုံစံ) ရွေးပြီး Next ကိုနှိပ်ပါ။
ထို့နောက်ပရိုဂရမ်နှင့် အပြန်အလှန်တုံ့ပြန်ရန်အတွက် သုံးစွဲသူအားပေးဆောင်သည့် ကန့်သတ်ဘောင် များကို ထည့်သွင်းပြီး OK ကိုနှိပ်ခြင်းဖြင့် အတည်ပြုပါ။ ဤနေရာတွင်ထပ်မံထည့်သွင်းထားသည်-
- ကုန်သွယ်မှုအတွက်ကိရိယာ
- ပထမဆုံး အရောင်းအဝယ်သဘောတူညီချက်အတွက် robot မှ ဖွင့်မည့် ဦးတည်ချက်ရွေးချယ်မှု။ ယခုအချိန်တွင် ၎င်းသည်ကိန်းပြည့် အမျိုးအစားဖြစ်သည်၊ သို့သော်ကျွန်ုပ်တို့သည် နောက်ပိုင်းတွင် အဝယ် (သို့မဟုတ်) အရောင်းကိုသာ ရွေးချယ်နိုင်စေရန်အတွက် ကုဒ်ကိုပြင်ဆင်ပေးပါမည်။
MetaEditor သည် ကုဒ်တွင် OnTick event ပရိုဂရမ်အရင်းအမြစ်ကို အလိုအလျောက်ထည့်သွင်းပါမည်။ ကျန်ရှိသည်ကို သင်ကိုယ်တိုင်ရွေးချယ်ရန်လိုအပ်သည်။ သင်မြင်တွေ့ရသည့်အတိုင်း ကျွန်ုပ်တို့သည် ဇယားပါအသုံးပြုသူလုပ်ဆောင်မှုများကို တုံ့ပြန်ရန်အတွက် သတ်မှတ်ထားသည့် ကြိမ်နှုန်းဖြင့် ခေါ်သည့် အချိန်တိုင်းကိရိယာနှင့် OnChartEvent အတွက် OnTimer ကိုအသုံးပြုခွင့်ရှိသည်။ ဤနေရာတွင် MQL5 အတွက် နောက်ထပ် ပရိုဂရမ်အရင်းအမြစ်များ ရရှိနိုင်သည်ကို သင်တွေ့မြင်နိုင်ပါသည်။
နောက်ထပ်မံ၍ စမ်းသပ်အနေအထားတွင် event handlers များကို ရွေးချယ်ပါ။ သင်သည် MQL5 ၏ စမ်းသပ်အနေအထားတွင် နောက်ထပ် အခြေအနေများကို ရွေးချယ်နိုင်ပြီး ၎င်းတို့အတွက် လျော်ညီသော handlers များ ပိုမိုရရှိနိုင်မည်ဖြစ်သည်။
ကျွန်ုပ်တို့သည် ယခင်အဆင့်နှစ်ဆင့်အတွင်း ရွေးချယ်စရာအားလုံးကို ကွက်လပ်ထားခဲ့သည်။ ကျွန်ုပ်တို့၏ သတ်မှတ်လုပ်ဆောင်ချက်အားလုံးကို OnTick လုပ်ဆောင်ချက်ဖြင့် လုပ်ဆောင်မည်ဖြစ်သည်။ ၎င်းကို သင်္ကေတတစ်ခုဖြစ်တိုင်း tick အသစ်တစ်ခုဟုခေါ်သည်။
Finish ခလုတ်ကိုနှိပ်ပြီးနောက် MetaEditor သည် future Expert Advisor အတွက် သတ်မှတ်ထားသော အမည်နှင့် ကန့်သတ်ချက်များဖြင့် နမူနာပုံစံတစ်ခုကိုဖန်တီးပါမည်။ ရွေးချယ်ထားသော event handlers များကိုလည်း ကုဒ်တွင်ထည့်သွင်းပါမည်။ ၎င်းတို့တစ်ခုစီတွင် အသေးစိတ်ဖော်ပြထားသည်ကို မတင်ပြတော့ပါ။ ဤအကြောင်းနှင့်ပတ်သက်ပြီး လိုအပ်သောအချက်အလက်အားလုံးသည် အကိုးအကားလမ်းညွှန်တွင်ရှိသည်။
ဤကုဒ်ကို ကုန်သွယ်မှု တာမင်နယ်တွင်စုစည်းပြီး လုပ်ဆောင်နိုင်ပါသည်။ သို့သော် မည်သို့မျှမှဖြစ်မလာပါ။ ကျွန်ုပ်တို့တွင် input variable များရှိသော်လည်း ၎င်းတို့ကိုအသုံးမပြုသေးပါ။ OnInit လုပ်ဆောင်ချက်သည် အောင်မြင်သော ထည့်သွင်းခြင်းဖြစ်ကြောင်း တာမင်နယ်အား အမြဲတမ်းအသိပေးသည်၊ OnTick နှင့် OnDeinit တွင် မည်သည့်ညွှန်ကြားချက်မျှ မပါဝင်ပါ။
ကုဒ်ကို စရေးလိုက်ရအောင်။
ပထမဦးစွာ အရင်ရှင်းလင်းရန်ဖြစ်သည်။ အပိုနေရာများကိုဖယ်ရှားပြီး မှတ်ချက်များကို တစ်ကြောင်းထဲဖြစ်အောင် အတိုချုံ့ပါ။ ထို့နောက် enum TradeCmd (လိုင်း 11-14) သည် နံပါတ်တစ်ခုထက်စာလျှင် ပုံမှန်နည်းလမ်းဖြင့် ပထမဆုံးကုန်သွယ်မှုအတွက် ဦးတည်ချက်ကို ညွှန်ပြရန် သတ်မှတ်သည်။ ထို့နောက် FirstTradeDirection variable ၏ input type ကို int မှ TradeCmd (20) သို့ ပြောင်းပါ။ နောက်တစ်ဆင့်မှာ TradeCmd အမျိုးအစားဖြင့် ယခင်အရောင်းအဝယ်သဘောတူညီချက်၏ ဦးတည်ချက်ကို ထည့်သွင်းစဉ်းစားပြီး ဆန့်ကျင်ဘက်နောက်တစ်ခုသို့ ပြောင်းရန်အတွက် static global variable Direction ကိုဖန်တီးရန်ဖြစ်သည်။
အစပိုင်းတွင် အရောင်းအဝယ်သဘောတူညီချက်ပမာဏ၊ အရှုံးခံအမှတ်နှင့် အမြတ်ရယူမည့် အမှတ်များအတွက် ကိန်းရှင်များအား wizard တွင်ထည့်ရန် သတိမေ့သွားခဲ့သည်။ ၎င်းတို့ကို ပြင်ပဆက်တင်များနှင့်အတူ ထည့်သွင်းသော input keyword ဖြင့် ယခုပေါင်းထည့်ပါသည်။
OnTick လုပ်ဆောင်ချက်သို့ ဆက်သွားကြပါစို့။ ကျွန်ုပ်တို့သည် အရောင်းအဝယ်အတွက် အဖွင့်ပုံစံများ ရရှိနိုင်မှုကို ပိုင်းခြားစိတ်ဖြာပါသည်။ ကျွန်ုပ်တို့သည် ၎င်းကိုလုပ်ဆောင်ရန် အကွာအဝေး [0၊ TotalTrades) မှာရှိသည့် ရိုးရှင်းသော လည်ပတ်မှုကို အသုံးပြုပြီး ဖွင့်ထားသော ကုန်သွယ်မှုအားလုံးကို ဂရုပြုထားသည်။ ရွေးချယ်ထားသော သဘောတူညီချက်၏ သင်္ကေတသည် InputSymbol တွင်ဖော်ပြထားသော သတ်မှတ်ထားသည့် တစ်ခုနှင့်ကိုက်ညီကြောင်း တစ်ခုပြီးတစ်ခုစစ်ဆေးပါ။ အနည်းဆုံးတူညီချက် တစ်ခုရရှိပြီဆိုသည်နှင့် ထပ်မံလုပ်ဆောင်ရန် မလိုအပ်ပါ။ ထို့အပြင် ကျွန်ုပ်တို့သည် အချိန်ဇယားမတိုင်မီ OnTick လုပ်ဆောင်ချက်ကို Return (စာကြောင်း 29-35) ဖြင့်ထွက်ပါမည်။ နောက်လာမည့် လုပ်ဆောင်ချက်အထိ စောင့်ဆိုင်းနေရမည်ဖြစ်သည်။
မဟုတ်ပါက သင်သည် အရောင်းအဝယ်တစ်ခုဖွင့်ရန်လိုအပ်သည်။ ကျွန်ုပ်တို့သည် OrderSend လုပ်ဆောင်ချက်ကို မှန်ကန်စွာအသုံးပြုရန်အတွက် ကုန်သွယ်မှုဆာဗာထံတောင်းဆိုချက် တစ်ခုပေးပို့မည့်အကူအညီဖြင့် MQL4 အချက်အလက်စာရွက်စာတမ်းကို အကိုးအကားယူကြပါစို့။ ကြေငြာချက်သည် ဤကဲ့သို့ ဖြစ်သည် -
ကန့်သတ်ချက်များကိုအစဉ်လိုက် စဉ်းစားကြည့်ရအောင်-
- Symbol. ကျွန်ုပ်တို့တွင် ရှိနှင့်ပြီးဖြစ်သော်လည်း မည်သည့်နည်းဖြင့်မဆို မှန်ကန်မှုကို စစ်ဆေးထားခြင်း မရှိဘဲ အသုံးပြုသူထံမှ မှန်ကန်သောထည့်သွင်းမှု အပေါ်တွင်သာ မူတည်ပါသည်။
- CMD. ၎င်းအတွက် ကျွန်ုပ်တို့သည် Direction global static variable ကိုအသုံးပြုပါသည်။
- Volume. အသုံးပြုသူမှ သတ်မှတ်ထားပါသည်။ တဖန်ကန့်သတ်များအတွက် ထည့်သွင်းထားသော ပမာဏပြောင်းလဲမှု၏ ကန့်သတ်ချက်၊ အနိမ့်ဆုံး၊ အမြင့်ဆုံးနှင့် အနိမ့်ဆုံးအဆင့်တန်ဖိုးကိုစစ်ဆေးရန် လိုအပ်ပါသည်။
- Price. အကယ်၍ဝယ်ပါက Ask ၊ ရောင်းပါက Bid ဖြစ်သည်။
- Slippage. ဤအခြေအနေတွင် ၎င်းသည် သိပ်အရေးမကြီးပါ။ ၎င်းကို 2 pip တွင် သတ်မှတ်နိုင်သည်။
- Stoploss. အရောင်းအဝယ်၏ ဦးတည်ချက်ပေါ်တွင် မူတည်ပြန်သည်။ အကယ်၍ ဝယ်ပါက အဖွင့်ဈေးထက် လျော့သင့်ပြီး ရောင်းပါက အဖွင့်ဈေးထက် ပိုရမည်ဖြစ်သည်။
- Takeprofit. Stop loss ကဲ့သို့ ၎င်းသည်ကုန်သွယ်မှု၏ ဦးတည်ချက်ပေါ်တွင် မူတည်သည်။
ကျွန်ုပ်တို့အတွက် ပုံသေတန်ဖိုးရှိသည့် အခြားသော ကန့်သတ်ချက် ၄ ခုကို မဖော်ပြသေးပါ။ ရလဒ်အနေဖြင့် အရောင်းအဝယ်တစ်ခုကိုဖွင့်ရန် - InputVolume (ဆိုလိုသည်မှာ ပမာဏ)၊ Direction (ဆိုလိုသည်မှာ အရောင်းအဝယ်၏ ဦးတည်ချက်)၊ InputSymbol (ဆိုလိုသည်မှာ သင်္ကေတ)၊ slippage ကို 1 point သတ်မှတ်ပါ။ Direction ပေါ်မူတည်၍ - price (ဆိုလိုသည်မှာ အဖွင့်စျေးနှုန်း)၊ sl (ဆိုလိုသည်မှာ stop loss) နှင့် tp (ဆိုလိုသည် take profit) တွက်ချက်ရန်လိုအပ်သည်။ အကယ်၍ဝယ်ပါက စျေးနှုန်းမှာ Ask ဖြစ်သည်။ Stop loss သည် လက်ရှိပေါက်ဈေးထက်နိမ့်၍၊ အမြတ်က ပိုမြင့်သည်၊ အကယ်၍ရောင်းပါက ဈေးနှုန်းသည် Bid ဖြစ်ပြီး၊ Stop Loss သည် လက်ရှိပေါက်ဈေးထက် ပိုမြင့်ပြီး အမြတ်က ပို၍နည်းပါသည်။ . ကျွန်ုပ်တို့သည် နောက်ထပ်ကိန်းရှင် ၂ ခုလိုအပ်ပါသည်။ ပထမတစ်ခုသည် သင်္ကေတပြောင်းလဲနိုင်သည့် ကိုးကားချက်တစ်ခုအတွက် အနိမ့်ဆုံးတန်ဖိုးဖြစ်သည့်အမှတ်များမှ ကန့်သတ်အဆင့်ကို nominal value point သို့ပြောင်းလဲရန်အတွက်ဖြစ်သည်။ ဒုတိယတစ်ခုသည် ဈေးနှုန်းကိုးကားချက်၏အပိုင်းကိန်းရှိ သိသာထင်ရှားသော ဂဏန်းအရေအတွက်ဖြစ်သည့် digit floating point ဖြင့် တန်ဖိုးများကို ပုံမှန်ဖြစ်အောင် ပြုလုပ်ရန်အတွက်ဖြစ်သည်။
၎င်းကို MQL သို့ပြောင်းပါ။
ကျွန်ုပ်တို့သည် အရောင်းအဝယ်တစ်ခုဖွင့်လှစ်ရန် တိုက်ရိုက်လုပ်ဆောင်ပါသည်။ ResetLastError built-in လုပ်ဆောင်ချက်ကို _LastError စနစ်ပြောင်းလဲမှုကို ပြန်လည်သတ်မှတ်ပါသည်။ ကျွန်ုပ်တို့သည် ရလဒ်ကို result variable သို့ရေး၍ OrderSend ကိုအသုံးပြုပြီး တောင်းဆိုချက်တစ်ခု ပေးပို့ပါသည်။ ရွေးချယ်စရာနှစ်ခုရှိပါသည် -
- အကယ်၍ ရလဒ် တွင် သုညထက်ကြီးသောတန်ဖိုး အရောင်းအဝယ်သဘောတူညီချက်၏ အမှတ်အသား ပါရှိလျှင် အရောင်းအဝယ်ကို အောင်မြင်စွာဖွင့်လှစ်လိုက်ပါပြီ။ ထို့ကြောင့်နောက်တစ်ကြိမ်တွင် ဆန့်ကျင်ဘက်ဦးတည်ချက်ဖြင့် အရောင်းအဝယ်တစ်ခုဖွင့်ရန်အတွက် ဦးတည်ချက်တန်ဖိုးကိုပြောင်းလဲရန် လိုအပ်ပါသည်။
- အကယ်၍ ရလဒ် တွင် အနုတ်လက္ခဏာတန်ဖိုးပါဝင်ပါက အရောင်းအဝယ်ကို ဖွင့်မည်မဟုတ်ပါ။ GetLastError ကိုအသုံးပြုပြီး နောက်ဆုံးအမှားကို စစ်ဆေးရန် ၎င်းကိုခွဲခြမ်းစိတ်ဖြာ၍ တစ်ခုခုလုပ်ရန်လိုအပ်ပါသည် - ထပ်မံ၍စမ်းကြည့်ပါ၊ ခဏလောက် ရပ်တံ့သွားစေရန်၊ အမှားရှာအချက်အလက်ကို မှတ်တမ်းသို့ ထုတ်ပေးခြင်း စသဖြင့်၊ ရိုးရှင်းစေရန်အတွက်၊ ကျွန်ုပ်သည် နောက်ဆုံးအမှား၏ တန်ဖိုးကို ထုတ်ပေးပါသည်။
အောက်ပါတို့ကို လေ့လာကြည့်ရအောင်။
ထို့ကြောင့်ကုဒ်စာကြောင်း ဒါဇင်ပေါင်းများစွာကိုရေးသားခဲ့ပြီး ကုန်သွယ်ရေးအလိုအလျောက်စနစ် - robot သည် အဆင်သင့်ဖြစ်နေပြီဖြစ်သည်။ ၎င်းသည် အလွန် အလုပ်မဖြစ်သေးကြောင်း ဝန်ခံပါသည်၊ သို့သော် ကုဒ်ရေးခြင်းသည် အသိပညာနှင့် သိသာထင်ရှားသော အားထုတ်မှုအတွက်များစွာမလိုအပ်ခြင်းဟူသော အချက်၏ အကောင်းဆုံး ဥပမာတစ်ခုအဖြစ် လုပ်ဆောင်နိုင်သည်။
ဤသည်မှာ သင်လိုအပ်နိုင်သော စာရင်းအပြည့်အစုံဖြစ်ပါသည်။
ကျွန်ုပ်တို့သည် ကုဒ်ကိုစုစည်းပြီး Expert Advisor ကို ကုန်သွယ်မှုတာမင်နယ်တွင် ထည့်သွင်းပါသည်။
MQL5 တွင် Expert Advisor ကိုမည်သို့ရေးရမည်နည်း
ဤနေရာတွင် MQL5 သည် MQL4 ထက် ငြင်းမရနိုင်သော အားသာချက်တစ်ခုရှိသည်။ ပဉ္စမဗားရှင်းအတွက် ကလစ်အနည်းငယ်ဖြင့် ကုဒ်တစ်ကြောင်းတည်းကို အမှန်တကယ်မရေးဘဲ ကုန်သွယ်ရေး robot ကိုဖန်တီးနိုင်သည်။
MetaEditor တွင် New ကိုနှိပ်ပြီး အက်ပလီကေးရှင်း wizard တွင် Expert Advisor (generate) ကိုရွေးချယ်ပါ။
ကျွန်ုပ်တို့၏ Expert Advisor ကို MQL5_Generated_Robot ဟုနာမည်ပေးကြပါစို့။ ကျွန်ုပ်တို့၏ရွေးချယ်နိုင်မှုအနေဖြင့် စာရေးသူနှင့် သူ၏ဝဘ်ဆိုဒ် (သို့မဟုတ်) ပရိုဖိုင်ကို ညွှန်ပြထားပါသည်။ Advior ၏ ကန့်သတ်ချက်များကိုထည့်ပါ - အကယ်၍လိုအပ်ပါက သင်္ကေတနှင့် ကုန်သွယ်မှုအတွက် အချိန်ကာလကိုထည့်သွင်းပါ။ ကန့်သတ်ချက်ကို နှစ်ချက်နှိပ်ခြင်းဖြင့် အသက်ဝင်စေသည်၊ ကိန်းရှင်၏ အမည် (သို့မဟုတ်) တန်ဖိုးကို နှိပ်ခြင်းဖြင့် အဆိုပြုထားသော ပုံသေတန်ဖိုးများကိုပြောင်းလဲနိုင်သည်။ အလိုရှိသော မည်သည့်သင်္ကေတကိုမဆို သတ်မှတ်နိုင်သည်။ EA အလုပ်လုပ်မည့်ဇယားတွင် ၎င်းကိုလက်ရှိတစ်ခုအဖြစ် သတ်မှတ်ခဲ့သည်။ ကုန်သွယ်ရေးအချက်ပြမှုများ၏ ဖြစ်နိုင်ခြေကိုတိုးမြှင့်ရန်အတွက် အချိန်ကာလကို M15 တွင်သတ်မှတ်ခဲ့သည်။
ရှေ့ဆက်ကြရအောင်။ ယခုအခါ ၎င်းတို့အတွက် အချက်ပြမှုနှင့် ဆက်တင်များကို ရွေးချယ်ရန် လိုအပ်ပါသည်။ ဤနေရာတွင် သင်သည် ဖန်တီးသူမှအကြံပြုထားသော အချက်ပြမှုများ၏ မတူညီသော ပေါင်းစပ်မှုများကိုဖန်တီးနိုင်ပြီး စမ်းကြည့်နိုင်ပါသည်။ ဤအချက်ပြမှုများသည် EA အတွက် အရောင်းအဝယ်များပြုလုပ်ရန် အခြေအနေများကို ဖန်တီးပေးမည်ဖြစ်သည်။
ဤကဏ္ဍတွင် mql5.com ရှိ စောင့်ကြည့်ထားသည့် အချက်အလက်များအပါအဝင် စိတ်ကြိုက်အချက်ပြမှုများကို ထည့်သွင်းနိုင်သည်။ အောက်ပါရွေးချယ်စရာများကို ပလပ်ဖောင်းတွင် ပုံမှန်အားဖြင့် ပံ့ပိုးပေးသည်-
ကျွန်ုပ်သည် "Averages လိုင်းနှစ်ခု၏ဆုံရာတွင် ရောင်းဝယ်ခြင်း" ကိုရွေးချယ်ပြီး 21 နှင့် 55 နှင့်ညီသော ကာလများကို သတ်မှတ်ခဲ့သည်။ အကယ်၍မှားယွင်းသော အချက်ပြမှုအရေအတွက်ကို လျှော့ချလိုပါက အလွန်တိုတောင်းသောကာလများကို ရွေးချယ်ရန်မလိုအပ်ပါ။ လက်ရှိ သင်္ကေတကို ချန်ခဲ့လိုက်သည်။ ဥပမာအားဖြင့် ကျွန်ုပ်တို့သည် EURJPY နှင့်ကုန်သွယ်မှုပြုပြီး တူညီသော EURJPY ၏စျေးနှုန်းဒေတာသို့ အသုံးပြုသည့် moving averages များမှ အချက်ပြမှုများကို လက်ခံရရှိပါမည်။ အကယ်၍ သင်၏ဗျူဟာသည် အခြားသော အချက်ပြမှုများ အပေါ်မူတည်၍ ကုန်သွယ်ရေးအမျိူးအစားကို ရောင်းဝယ်ခြင်းဖြစ်ပါက ဤနေရာတွင်မတူညီသော သင်္ကေတတစ်ခုကိုရွေးပါ။ အချိန်ကာလကိုလည်း M15 တွင်သတ်မှတ်သည်။
Confirm. ၎င်းသည် EA အတွက် အခြေအနေများကို ဖန်တီးပေးမည့် လက်ရှိသင်္ကေတနှင့် timeframe အတွက် အချက်ပြတစ်ခု ထည့်သွင်းထားသည်ကို ကျွန်ုပ်တို့တွေ့မြင်ရပါသည်။
Trailing Stop သို့ဆက်သွားပါ။ ဤနေရာတွင် ပုံသေအရွယ်အစားကန့်သတ်ချက်ကို ရွေးချယ်ထားသည်။ အရှုံးခံအမှတ်ကို အမှတ် 150 နှင့် အမြတ်ယူမည့်အမှတ်ကို အမှတ် 200 ဖြင့်သတ်မှတ်ပါမည်။
ထို့နောက် ကျွန်ုပ်တို့သည် ကုန်သွယ်ရေးအကောင့်တစ်ခုအတွက် ငွေကြေးစီမံခန့်ခွဲမှုပုံစံ ငါးမျိုးထဲမှ တစ်ခုကို ရွေးချယ်နိုင်ပါသည်။ ကုန်သွယ်မှုဖြင့်ရရှိနိုင်သည်များမှာ -
- ပုံသေကုန်သွယ်မှုပမာဏ
- ပုံသေ မာဂျင်
- ပုံသေဆုံးရှုံးနိုင်ချေအန္တရာယ်
- အနည်းဆုံး ခွင့်ပြုထားသော ကုန်သွယ်မှုပမာဏ
- အကောင်းဆုံးကုန်သွယ်မှုပမာဏ
အကောင့်ထဲရှိ ရင်းနှီးငွေ 1% ၏ ပုံသေဆုံးရှုံးနိုင်ချေရှိသည့်အန္တရာယ်နှင့် အရောင်းအ၀ယ်ပြုလုပ်ရန် သတ်မှတ်ခဲ့သည်။
Done ကိုနှိပ်ပြီး အမြတ်ငွေရယူလိုက်ပါ! Expert Advisor ကို ကုဒ်တစ်ကြောင်းမရေးဘဲ ဖန်တီးခဲ့ပြီးဖြစ်သည်။
ထိုကဲ့သို့အရင်းအမြစ်များကို သေးငယ်သော ခွဲခြမ်းစိတ်ဖြာမှုတစ်ခုလုပ်ဆောင်ပြီး အသေးစိတ် လေ့လာကြပါစို့။
အထက်ပါ သတ်မှတ်ချက်များကြောင့် - အကြောင်းအရာများ မှာ ရင်းနှီးလာပြီဖြစ်သည်။ ထို့နောက် library modules များ ပါဝင်လာသည်။ Expert သည် ကျွန်ုပ်တို့၏ ကုန်သွယ်ရေး robot ဖြစ်သည်။ MACross သည် Moving Average crossing အတွက် signal generator တစ်ခုဖြစ်ပြီး TrailingFixedPips သည် ကန့်သတ်ဈေးနှုန်းအဆင့်ထိန်းချုပ်မှု module တစ်ခုဖြစ်၍ MoneyFixedRisk သည်အန္တရာယ်စီမံခန့်ခွဲမှု module တစ်ခုဖြစ်သည်။ ထို့နောက် အက်ပလီကေးရှင်းနှင့် အပြန်အလှန် ဆက်သွယ်ရန်အတွက် အသုံးပြုသူလမ်းညွှန်ကို သတ်မှတ်သည့် input variables များပါဝင်သော ဆက်တင်များဖြစ်သည်။ ယခင်ထက်စာလျှင် လုပ်ဆောင်ပုံများသည် ရင်းနှီးပြီးသား ဖြစ်လာသည်၊ ဟုတ်ပါသည်! ၎င်းတို့ကို Expert Advisor Generation Wizard တွင်ထည့်သွင်းထားသည်။ အနာဂတ်တွင် မူရင်းတန်ဖိုးများကို ဤနေရာတွင် ပြောင်းလဲနိုင်သည်။
ထို့နောက် CExpert အမျိုးအစား၏ အလိုအလျောက်စနစ်ဖြစ်သော global variable ကို ထုတ်ပြန်ပြီး ၎င်းကို ပုံသေတန်ဖိုးဖြင့် ထည့်သွင်းထားသည်။ ဝတ္ထုတစ်ခုအတွက် ဆိုလိုသည်မှာ default constructor ကိုခေါ်ခြင်းဖြစ်သည်။ OnInit ၏ တည်ဆောက်ပုံတွင် EA ကို ထည့်သွင်းထားပြီး အချက်ပြမှုများနှင့် စစ်ထုတ်မှုများကို ဖန်တီးပြီး ဆက်တင်များတွင်သတ်မှတ်ထားသည့် တန်ဖိုးများဖြင့် စတင်လုပ်ဆောင်ပါသည်။ အောက်တွင်ဖော်ပြထားသည်မှာ အောင်မြင်သော ထည့်သွင်းမှုအတွက် ကနဦးစစ်ဆေးခြင်းရလဒ်များနှင့် ကုဒ်ပမာဏကို မြင်သာစွာလျှော့ချရန် ဖြစ်နိုင်ချေအတွက် ဖော်ပြချက်အားလုံးကို ဖယ်ရှားခဲ့သည့်ကုဒ်ဖြစ်သည်။
အောက်တွင် OnDeinit၊ OnTick၊ OnTimer၊ OnTrade လုပ်ဆောင်ချက်များကို တွေ့မြင်နိုင်ပါသည်။ ၎င်းတို့တစ်ခုစီကို CExpert class ၏ သက်ဆိုင်ရာနည်းလမ်းဟု ရိုးရှင်းစွာခေါ်ဆိုသည်။
အသေးစိတ်ကြည့်ရှုမည်ဆိုပါက navigator ဘယ်ဘက်ရှိ Include -> Experts folder တွင် အချက်ပြမှုများနှင့် module များကို generator တွင် ရရှိနိုင်သည်ကို တွေ့မြင်နိုင်ပါသည်။ ထို့ကြောင့်အချို့သော အထူးပြုဖြေရှင်းချက်များကို generator သို့ပေါင်းထည့်နိုင်ပြီး ကလစ်အချက်ရေအနည်းငယ်ဖြင့် လိုအပ်သလို ဖန်တီးနိုင်သည်။
ကုဒ်ကို စုစည်းကြည့်ရအောင်။ 0 errors များနှင့် 0 warnings များသည် အောင်မြင်ခြင်းဖြစ်သည်။ ဗျူဟာစမ်းသပ်ခြင်းကို စတင်ရန် Ctrl နှင့် F5 ကို တစ်ပြိုင်နက်နှိပ်ပါ (သို့မဟုတ်) ထိပ်ဘက်မှဂရပ်ဖစ်မီနူးရှိ ခလုတ်ကိုနှိပ်ပါ။
ထိန်းချုပ်မှုကို MetaTrader Client Terminal ရှိ ဗျူဟာစမ်းသပ်မှုဆက်တင်များသို့ လွှဲပြောင်းထားသည်။ ထို့နောက်ကျွန်ုပ်တို့သည် ကန့်သတ်ချက် များကိုစမ်းသပ်ရန်နှင့် ပြင်ဆင်သတ်မှတ်ရန် ဖိုင်ကို ရွေးပါ- symbol၊ timeframe၊ history depth၊ balance နှင့် leverage စသည်ဖြင့်ဖြစ်သည်။ ၎င်းတို့တစ်ခုစီအတွက် ရည်ညွှန်းဖိုင်တွင် ဖော်ပြချက်တစ်ခုပါရှိပြီး ဆက်တင်များစွာရှိပါသည်။ အသေးစိတ်အချက်အလက်များအတွက် ဆက်တင်များနှင့် စမ်းသပ်မှု အခြေအနေတွင် tester ကို ဂရုပြုပြီး F1 ကိုနှိပ်ပါ။
စတင်ရန် tester ၏ ညာဘက်အောက်ထောင့်ရှိ Start ကိုနှိပ်ပြီး ရွေးချယ်ချက်မပါရှိဘဲ အကယ်၍ စမ်းသပ်မှုဖြစ်ပေါ်ပါက သင်၏ဗျူဟာအတွက် visualization mode ကိုရွေးချယ်နိုင်ပါသည်။
ဖန်တီးသူများသည် https://www.mql5.com/en/docs/standardlibrary/expertclasses တွင် built-in module တစ်ခုစီ နှင့် signal on ဖော်ပြချက်တစ်ခုစီကို ထောက်ပံ့ပေးအပ်ထားပါသည်။ သင့်အသိပညာကို ချဲ့ထွင်ရန် ဖော်ပြပါ အကြောင်းအရာအချက်အလက်များကို မှီငြမ်းကိုးကားရန် မတွန့်ဆုတ်ပါနှင့်။
Pros and Cons of MQL4 and MQL5 languages
ဤ language များ ၏ အဓိကရည်ရွယ်ချက်တွင် အားနည်းချက်များရှိသည်။ MetaQuotes Querying Language သည် MetaTrader အတွက်သာ အက်ပလီကေးရှင်းများ ရေးသားရန်အတွက် language တစ်ခု ဖြစ်သည်။ MetaEditor environment တွင်သာ MQL ကုဒ်ကိုစုစည်းပြီး အမှားရှာဖွေရန်ဖြစ်နိုင်သည်။ MetaTrader Client Terminal သာလျှင် ပရိုဂရမ်ကို အကောင်အထည်ဖော်ရန်အတွက် စတင်နိုင်သည်။ ထိုနေရာတွင် အလိုအလျောက်မဟုတ်သောမှတ်ဉာဏ် စီမံခန့်ခွဲမှုမရှိပါ။ သင်သည် stack ပေါ်ရှိ ကိန်းရှင်ကိုဖန်တီးရန် (သို့မဟုတ်) dynamic နယ်ပယ်တွင် ရွေးချယ်နေဆဲဖြစ်သော်လည်း မည်သည့်အခြေအနေမျိုးတွင်မဆို ၎င်း၏ virtual address ကိုအသုံးပြုခွင့်မရှိပါ။
အားသာချက် အများအပြားလဲ ရှိသည်။ အထူးသဖြင့် အကယ်၍ သင့်တွင် statically typed languages များ တီထွင်ဖန်တီးရာတွင် အတွေ့အကြုံရှိပြီးဖြစ်ပါက အရောင်းအဝယ် ဝင်ရောက်မှု လိုအပ်ချက်အဆင့်မှာ နိမ့်ပါးသည်။ C နှင့် C++ အဆင့်တွင် စွမ်းဆောင်ရည်မြင့်မားသည်။ Object-oriented programming ပုံစံအတွက် ပံ့ပိုးမှု - encapsulation နှင့် ချဲ့ထွင်နိုင်မှု၊ inheritance၊ polymorphism နှင့် အဆိုပါ အမျိုးအစားများ၏ virtual နည်းလမ်းများဖြစ်သည်။ ၎င်း parametric polymorphism ၏ ဆိုလိုချက်မှာ အမျိုးအစား နှင့် လုပ်ဆောင်ချက် အတွက် နမူနာပုံစံကို ဖန်တီးနိုင်သည်။ ၎င်းတို့အားလုံးသည် ကုဒ်ကိုအကြိမ်ပေါင်းများစွာ ပြန်သုံးနိုင်စေသည်။ အခမဲ့ပံ့ပိုးပေးထာသည့် ပရိုဂရမ်ဖွဲ့စည်းပုံများတွင် ကုန်သွယ်မှုတာမင်နယ်၊ ပရိုပိုင်းဆိုင်ရာ နယ်ပယ်ရှိ ဖွံ့ဖြိုးတိုးတက်မှု၊ ကုန်သွယ်ရေးဗျူဟာ စမ်းသက်မှုနှင့် ပရိုဂရမ်စုဆောင်းထားသည့် နေရာများ ပါဝင်သည်။
MQL4 မှ MQL5 သို့ပြောင်းလဲခြင်း
ဤဆောင်းပါးတွင် language ၏ စွမ်းရည်များအကြောင်း ကဏ္ဍတွင် ယခင်က တင်ပြထားသည့် အလိုအလျောက်စနစ် robot ၏ နမူနာကိုအသုံးပြုပြီး ပရိုဂရမ်တစ်ခုကို ဗားရှင်းတစ်ခုမှ အခြားတစ်ခုသို့ အဆင့်မြှင့်တင်ခြင်း၏ အသွင်ကူးပြောင်းမှုကို သုံးသပ်ကြည့်ကြပါစို့။ ၎င်းကိုလုပ်ဆောင်ရန် MetaEditor 5 တွင် Expert Advisor အလွတ်ကိုဖန်တီးပြီး MQL4_Example_EA Expert Advisor ၏ အရင်းအမြစ်ကုဒ်ကို ၎င်းထဲသို့ကူးထည့်ပါ။ ဤကုဒ်ကို အပြောင်းအလဲမရှိဘဲ စုစည်း၍မရပါ၊ လုပ်ဆောင်သောအခါတွင် အမှားအယွင်းများစွာ ဖြစ်ပေါ်နိုင်သည်။
ပထမဦးစွာ အချက်နှစ်ချက်မှ လွဲ၍ ပြောင်းလဲမှု မရှိပါ
- Preprocessor ညွှန်ကြားချက်များမှ #property strict ကိုဖယ်ရှားလိုက်ခြင်းဖြင့် MQL4 ကုဒ်ကို စုစည်းပြုစုရာတွင် အသက်ဝင်စေမည်ဖြစ်သည်။
- ရရှိနိုင်သောအရောင်းအဝယ်များပေါ်မူတည်၍ EA ထည့်သွင်းခြင်းလုပ်ဆောင်ချက်အပြင် OnInit တွင် အထူးနည်းလမ်းဖြင့် ထည့်သွင်းရန် Direction static variable ဖန်တီးမှု သို့ လွှဲပြောင်းပါ။ ၎င်းသည် အနာဂတ် တွင် ကုန်သွယ်မှုလုပ်ငန်းစဉ်၏ လည်ပတ်မှုတွင် EA ဆက်တင်များကို ပြောင်းလဲခွင့်ပြုမည်ဖြစ်သည်။
MQL5 ရှိ Built-in PositionSelect လုပ်ဆောင်ချက်ကိုသုံးပြု၍ အရောင်းအဝယ်သဘောတူညီချက်တစ်ခု၏ မည်သည့်သင်္ကေတအတွက်မဆို ဖွင့်ထားသော ကုန်သွယ်မှုများအားလုံးကို ရှာဖွေစရာမလိုဘဲ ရွေးချယ်ရန် ပိုမိုလွယ်ကူကြောင်း သတိပြုပါ။
OnTick လုပ်ဆောင်ချက်အပြည့်အစုံကို သုံးသပ်ကြည့်ကြပါစို့။ သင်္ကေတတစ်ခုအတွက် ဖွင့်ထားသည့်အရောင်းအဝယ်ကို စစ်ဆေးရန် PositionSelect ကိုအသုံးပြုပါသည်။ အကယ်၍ ယခုလိုမျိုးမရှိပါက if လုပ်ဆောင်ချက် ထဲသို့ဝင်ပြီး အရောင်းအဝယ်တစ်ခုဖွင့်ရန် တောင်းဆိုချက်တစ်ခုပေးပို့ဖို့ ပြင်ဆင်ပါ။ MQL5 သည် MQL4 ရှိ ကန့်သတ်ချက်များနှင့် ဆန့်ကျင်သည့် တောင်းဆိုမှုတစ်ခု ဖန်တီးရန်အတွက် MqlTradeRequest ဖွဲ့စည်းပုံကို ပံ့ပိုးပေးထားပါသည်။ ၎င်း၏နယ်ပယ်တစ်ခုစီကို သီးခြားစဉ်းစားမည်မဟုတ်ပါ။ MQL4 တွင်ကဲ့သို့ပင် ကျွန်ုပ်တို့တွင်လိုအပ်သော ကန့်သတ်ချက် 7 ခုထဲမှ 4 ခုဖြစ်သည့် - ကုန်သွယ်မှုသင်္ကေတ - symbol ၊ အရောင်းအဝယ်ပမာဏ - volume ၊ ဦးတည်ချက် - direction နှင့် တောင်းဆိုထားသောစျေးနှုန်းမှ သွေဖည်ခြင်း - deviation ကို သတိပြုပါ။ အရောင်းအ၀ယ်၏ ဦးတည်ချက်ပေါ်မူတည်၍ ကျန်သုံးမျိုး (အဖွင့်စျေးနှုန်း၊ အရှုံးခံဈေးနှုန်း - SL နှင့် အမြတ်ယူမည့်ဈေးနှုန်း TP) ကို တွက်ချက်ပါသည်။ ကျွန်ုပ်တို့သည် ဖွဲ့စည်းမှုစနစ်တွင် အစဉ်လိုက်ဖြည့်ထားသည်။ ယခုအခါတွင် floating point နံပါတ်များကို ပုံမှန်ပြုလုပ်ပေးရန် မလိုအပ်တော့သောကြောင့် digit ကိန်းရှင်နံပတ်များ အတွက်လည်း မလိုအပ်ပါ။
Language ၏ နောက်ဆုံးထွက်ဗားရှင်းတွင် တောင်းဆိုချက်တစ်ခုပေးပို့ခြင်းသည် အချိန်ပိုမိုတိုတောင်းသည်။ ကျွန်ုပ်တို့ထံ OrderSend လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ခြင်း၏ ရလဒ်နှင့်ပတ်သက်သည့် အချက်အလက်အားလုံးကို MqlTradeResult တွင်ပြန်လည်ပေးပို့ပါသည်။
ပရိုဂရမ်တွင် အမှားရှာ၍ ပြုပြင်ခြင်းနှင့် စမ်းသပ်မှုများ ဆက်တိုက်ပြုလုပ်ပြီးနောက် အောက်ပါကုဒ်ဖြင့် အဆုံးသတ်ခဲ့သည်။ OnInit ၏ ကနဦးလုပ်ဆောင်မှုအဆင့်တွင် ထပ်လောင်းလုပ်ဆောင်မှုများဖြစ်သည့် လိုအပ်သော ပြောင်းလဲမှုတစ်ခု ပြုလုပ်ခဲ့သော်လည်း အရွယ်အစားသည် ပြောင်းလဲခြင်းမရှိပေ။
အကျဉ်းချုပ်ကြပါစို့။ MQL4 အက်ပလီကေးရှင်းများကို MQL5 သို့အဆင့်မြှင့်တင်ခြင်းသည် လွယ်ကူသည်။ အကယ်၍ MQL နှင့်ပတ်သက်သော အခြေခံဗဟုသုတရှိပါက ကိုယ်တိုင်ပြုလုပ်ရန် ခက်ခဲမည်မဟုတ်ပါ။
ထို့အပြင် ကျွန်ုပ်အနေဖြင့် သင့်အတွက် အမေးအများဆုံး MQL မေးခွန်းများစွာကို အထူးရွေးချယ်ပေးထားပြီး အဆိုပါမေးခွန်းများကို လိုရင်းတိုရှင်းဖြင့် စေ့စေ့စပ်စပ် ဖြေဆိုပေးထားပါသည်။
MQL4 နှင့် MQL5 ၏ အမေးများသော မေးခွန်းများ
MetaQuotes Language သည် ၎င်း၏ ယခင် ပရိုဂရမ် မှ ဆင်းသက်သော C++ နှင့် များစွာဆင်တူသော syntax ဖြင့် static weak ပရိုဂရမ်ရေးသားခြင်းဖြင့် MetaTrader ကုန်သွယ်မှုပလပ်ဖောင်းသို့ အက်ပ်လီကေးရှင်းများ ရေးသားရန် အသုံးပြုသည့် အဆင့်မြင့် ပရိုဂရမ်းမင်းဘာသာ (language) တစ်ခုဖြစ်သည်။ MetaQuotes Language သည် multi-paradigm သဘောတရားကို အကောင်အထည်ဖော်ထားသည်။ ကုဒ်ရေးနေစဉ်တွင်၊ သင်သည် အရာဝတ္ထု-ဆန်သော၊ လုပ်ဆောင်နိုင်သော၊ လုပ်ထုံးလုပ်နည်း သို့မဟုတ် ရောစပ်ထားသော နည်းလမ်းကို အသုံးပြုနိုင်သည်။ OOP သည် encapsulation၊ inheritance နှင့် polymorphism ကိုပံ့ပိုးသည်။ Function နှင့် class template များကို ရရှိနိုင်ပါသည်။ သို့သော်ကံမကောင်းစွာဖြင့်၊ compile-time တွက်ချက်မှု ဖြင့် metaprogramming ကို အသုံးပြု၍မရပါ။
သင်သည် MQL တွင်ပရိုဂရမ်များရေးရန် MetaTrader Client Terminal ကိုထည့်သွင်းရန် လိုအပ်သည်။ ၎င်း၏ delivery package ရှိ MetaEditor ဟုခေါ်သော MQL တွင် အက်ပလီကေးရှင်းမျာ ဖွံ့ဖြိုးတိုးတက်မှုအတွက် environment တစ်ခုပါဝင်သည်။ ၎င်းကို ပင်မမီနူး Tools -> MetaQuotes Language Editor (F4) ကိုအသုံးပြု၍ စတင်ပါ။ ယခု ကျွန်ုပ်တို့၏ပထမဆုံး MQL ပရိုဂရမ်ကိုရေးရန် အဆင်သင့်ဖြစ်နေပါပြီ။
ကုန်သွယ်မှုတာမင်နယ်တွင် ထိုကဲ့သို့သောပရိုဂရမ်ကို လည်ပတ်ခြင်း၏ရလဒ်သည် အောက်ပါရလဒ်ဖြစ်သည်။
Mq4 သည်ရိုးရှင်းသော text file တစ်ခုဖြစ်သည်။ ဤတိုးချဲ့မှုသည် MetaEditor development environment နှင့်အတူ အဆိုပါ ဖိုင်အပါအဝင် လည်ပတ်မှုစနစ်ကို အလိုအလျောက် ချိတ်ဆက်နိုင်စေပါသည်။ ex4 ဖိုင်သည် စာသားအဖြစ် ဖတ်၍မရသော executable file တစ်ခုဖြစ်ပြီး binary code တွင် အချက်အလက်များ ပါရှိသည်။
mq4 ပရိုဂရမ်ကုဒ်ကို executable ex4 ကုဒ်အဖြစ်သို့ ဒေတာစုစည်းမှုဖြစ်ပေါ်စဉ်အတွင်းတွင် ပြောင်းလဲသည်။ ဤအသွင်ပြောင်းခြင်းသည်ရိုးရှင်းပြီး ပရိုဂရမ်များဖန်တီးသောအခါတွင် မကြာခဏဖြစ်ပေါ်သည်။ ၎င်းသည် compiler မှ မည်သို့လုပ်ဆောင်သည်ဆိုသည်ကို အတိအကျဖော်ပြသည်။
ပြောင်းပြန်လုပ်ငန်းစဉ်မှာ executable ex4 ကုဒ်၏ decompilation (disassembly) မှ mq4 စာသားကုဒ် ဖြစ်ပေါ်ခြင်းဖြစ်ပြီး ၎င်းဖြစ်စဉ်မှာ ကြုံတောင့်ကြုံခဲ့ဖြစ်၍ မကြာခဏဆိုသလို အခြေခံကျသော တရားဝင်မှုမရှိပါ။ Open source ပရောဂျက်များသည် ယေဘူယျအားဖြင့် ၎င်းတို့၏ ဖြန့်ဖြူးမှု၊ အသွင်ပြောင်းမှုနှင့် အသုံးပြုမှုအတွက် စည်းမျဉ်းများကို သဘောတူသူတိုင်းအား အရင်းအမြစ်ကုဒ်ကို ပေးအပ်သည်။ ကျန်ပရောဂျက်များသည် ၎င်းတို့၏ တိုးတက်မှုအားလုံးကို မူပိုင်ခွင့်ဥပဒေဖြင့် ကာကွယ်ထားသည်။ Decompilation လုပ်ဆောင်ရန် standard tools များ မရှိပါ။
အကယ်၍ ex4 ဖိုင်၏ executable code ကို ပရိုဂရမ်ကုဒ်အဖြစ်သို့ အမှန်တကယ် ပြောင်းလဲရန် လိုအပ်ပါသလား? ဤမေးခွန်းအတွက် အဖြေများစွာကို အကောင်အထည်ဖော်ရာတွင် complexity တိုးလာစေရန် အစီအစဉ်ထားရှိပါသည်-
- ပရိုဂရမ်ရေးသားသူထံ ဆက်သွယ်ပြီး ကုဒ်ရယူရန် အခြေအနေများကို ရှာဖွေပါ။
- သင်၏ ex4 ပရိုဂရမ်ရှိ သဘောတရားကို အကောင်အထည်ဖော်နိုင်သော ပရိုဂရမ်မာတစ်ဦးကို ရှာဖွေပြီး သူနှင့် ညှိနှိုင်းပါ။
- MQL ကိုလေ့လာပြီး ex4 ပုံစံနှင့်ညီမျှသည့် ပရိုဂရမ်တစ်ခုကို သင်ကိုယ်တိုင်ရေးပါ။ အဆိုပါလမ်းကြောင်းသည် မလွယ်ကူသော်လည်း တခြားနှင့်မတူဘဲ သင့်၏ဖြစ်နိုင်ချေများကို တိုးချဲ့နိုင်ပါလိမ့်မည်။
- သင်ကိုယ်တိုင် (သို့မဟုတ်) တစ်စုံတစ်ဦး၏ အကူအညီဖြင့် decompilation လုပ်ဆောင်ပါ။ ကျေးဇူးပြု၍ မူပိုင်ခွင့်ဥပဒေက ပေးအပ်သော တာဝန်ယူမှုကို သတိထားပါ။
Mq4 နှင့် mq5 ဖိုင်များသည် စာသားပုံစံဖြင့် MQL ကုဒ်ပါရှိသော ရိုးရှင်းသော text file များဖြစ်သည်။ ဤအခြေအနေတွင် သင့်ကိုယ်ပိုင် အရင်းအမြစ်ကုဒ်ကို မမျှဝေလိုပါက လုပ်ဆောင်ရန် အလွယ်ကူဆုံးအရာမှာ ဤသတ်မှတ်ချက်ဖြင့် ဖိုင်များကို မဖြန့်ဝေရန်ဖြစ်သည်။
သင့်ကုဒ်ကိုကာကွယ်ရန် ရိုးရှင်းသောနည်းလမ်းမှာ ၎င်းကို ex4 (ex5) formatဖြင့် ဖြန့်ဝေခြင်းဖြစ်သည်။ ဤ format ရှိ mq4 (mq5) ကုဒ်ကို ပြုစုသောအခါ ဖိုင်များကို MetaEditor မှ ထုတ်ပေးပါသည်။ language စည်းမျဉ်းများနှင့်အညီ ဇယားတွင် advisor၊ script (သို့မဟုတ်) indicator ထည့်သွင်းသည့်အခါ တာမင်နယ်မှလုပ်ဆောင်သည့် စာသားပါရှိသည့် ညွှန်ကြားချက်များကို executable binary ကုဒ်အဖြစ် ပြောင်းလဲပါသည်။
သင့်အရင်းအမြစ်ကုဒ်ကို ကာကွယ်ရန်ကူညီပေးသည့် executable code ကို မူရင်းသို့ ကူးပြောင်းခြင်းသည် လွယ်ကူသောအလုပ်မဟုတ်ပါ။ မည်သို့ပင်ဆိုစေ အရင်းအမြစ်ကုဒ်အဖြစ်သို့ ခွဲထုတ်သည့်အခါ သင့်ကုဒ်၏ အဓိပ္ပါယ်ရှိသည့် ပြောင်းလဲနိုင်သောကုဒ်အမည်များ ဆုံးရှုံးသွားမည်ဖြစ်ပြီး ပရိုဂရမ်သဘောတရားကို နားလည်ရန် ပိုမိုခက်ခဲမည်ဖြစ်သည်။
MetaQuotes Language သည် C++ မှ ဆင်းသက်သော weak statically typing အမျိုးအစား အဆင့်မြင့် OOP ပရိုဂရမ်းမင်းဘာသာစကားဖြစ်သည်။ MQL5 သည် MetaTrader 5 ပလပ်ဖောင်းနှင့်အတူ ထုတ်လုပ်ခဲ့သည့် MQL4 language ၏ ကျိုးကြောင်းဆီလျော်သော ဖွံ့ဖြိုးတိုးတက်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည်နောက်ပိုင်းတွင် MQL4 ၏ ဖွံ့ဖြိုးတိုးတက်မှုအပေါ် သိသာထင်ရှားသော သက်ရောက်မှုရှိခဲ့ပြီး မွမ်းမံပြင်ဆင်မှုတွင် ပါဝင်ခဲ့သည်။
MQL5 တွင် ပုံမှန်အတိုင်း ကုဒ်ရေးရန် အခြားလိုအပ်ချက် မပါဝင်နိုင်စေသည့် Expert Advisors များကို ဖန်တီးရန် ကိရိယာတစ်ခုရှိပါသည်။ သင်သည်ကလစ်အချက်အနည်းငယ်ဖြင့် အရင်းအမြစ်ကုဒ်နှင့်အတူ ကုန်သွယ်ရေး robot ကို လက်ခံရရှိမည်ဖြစ်သည်။ ကုန်သွယ်မှုအတွက် သတ်မှတ်ခြင်းသည် အချက်ပြမှုများကို အသုံးပြု၍ လုပ်ဆောင်ခြင်းဖြစ်သည်။ ကုန်သွယ်မှုအကောင့်၏ အခြေအနေကို ထိန်းချုပ်ခြင်းသည် ကုန်သွယ်မှုတာမင်နယ်မှ ပံ့ပိုးပေးထားသော စွန့်စားရမှုနှင့် ငွေစီမံခန့်ခွဲမှုဗျူဟာများအပေါ် အခြေခံသည်။
အချက်ပြကိရိယာတစ်ခုကို ဒေါင်းလုဒ်လုပ်ခြင်းသည် သင့်ကွန်ပျူတာသို့ အခြားဖိုင်တစ်ခုခုအား ဒေါင်းလုဒ်ဆွဲခြင်းနှင့် မတူညီပါ။ MQL ကို MetaTrader Client Terminal ၏ desktop ဗားရှင်းဖြင့်သာ အသုံးပြုနိုင်မည်ဖြစ်သောကြောင့် ၎င်းကိုကွန်ပျူတာပေါ်တွင် လုပ်ဆောင်ရပါမည်။ Terminal (File -> Open Data Folder) ၏ working directory ကိုဖွင့်ပါ။ ထို့နောက် MQL/indicators directory သို့သွားပြီး loaded indicator ကို ဤနေရာတွင်ကူးထည့်ပါ။ သင်သည် တာမင်နယ်ကို ပြန်လည်စတင်ပြီးနောက် ညွှန်ပြချက်ကိရိယာကို Navigator တွင် ရနိုင်မည်ဖြစ်သည်။ သင်လုပ်ရမည်မှာ ၎င်းကိုဇယားသို့ရွှေ့ပြီး parameters များကိုချိန်ညှိပါ။
လက်တွေ့တွင် MQL4 (သို့မဟုတ်) MQL5 ပရိုဂရမ်အားလုံးကို MetaQuotes Language Editor ၏ ပဉ္စမဗားရှင်းကို အသုံးပြု၍ဖန်တီးထားသည်။ Language ၏ ပင်မ နှင့် အသေးစားဗားရှင်းများကြားတွင် လိုက်လျောညီထွေမှုရှိသည်။ ဤအခြေအနေတွင် တစ်ခုတည်းသောကန့်သတ်ချက်မှာ MetaQuotes Server ကိုယ်တိုင်ဖြစ်သည်။ ပလက်ဖောင်း ၏ စတုတ္ထဗားရှင်းတွင် အချို့သောလုပ်ဆောင်ချက်များနှင့် ဖွဲ့စည်းပုံများ ပျောက်ဆုံးနေပါသည်။ ဆာဗာ၏ ပဉ္စမဗားရှင်းတွင် ကုန်သွယ်မှုလုပ်ငန်းများ လုပ်ဆောင်ခြင်း၏ သဘောကို တစ်စိတ်တစ်ပိုင်း ပြောင်းလဲထားသည်။ အချက်ပြကိရိယာများ၏ အတွင်းပိုင်းဖွဲ့စည်းပုံတွင်လည်း ကွဲပြားမှုများရှိပါသည်။ စတုတ္ထဗားရှင်းတွင် indicator buffers ရှစ်ခုထက်မပိုစေရပါ။ MetaTrader 5 တွင် buffers အရေအတွက် ၂၁ ခုအထိတိုးလာခဲ့သည်။
Built-in iCustom လုပ်ဆောင်ချက်သည် EA အတွင်းရှိ ကုန်သွယ်မှုသဘောကို အကောင်အထည်ဖေါ်ရန်အတွက် အချက်ပြကိရိယာများမှ အချက်ပြများကို အသုံးပြုနိုင်သည်။ အကယ်၍သင့်တွင် ကိုယ်ပိုင် အချက်ပြကိရိယာ - indicator တစ်ခုရှိပြီး အရောင်းအ၀ယ်လုပ်ဆောင်ရန်အတွက် advisor တွင် ကုန်သွယ်ရေးအချက်ပြမှုများကို ဖန်တီးလိုပါက ၎င်းအတွက် iCustom ကိုအသုံးပြုရန်လိုအပ်သည်။ အချက်အလက်များကို ကြည့်ရအောင်။ ဤနေရာတွင် MQL4 ၏ အဓိပ္ပါယ်ဖွင့်ဆိုချက်ကို အောက်ပါအတိုင်း တွေ့မြင်နိုင်သည်-
အခြေခံအားဖြင့် ၎င်း၏အမှတ်အသားသည် ကွဲပြားသော်လည်း language ၏ စတုတ္ထနှင့် ပဉ္စမဗားရှင်းများ တွင် လုပ်ဆောင်ချက်သည် အတူတူပင်ဖြစ်ပါသည်။ Parameters တစ်ခုစီကို အသေးစိတ်လေ့လာကြည့်ရအောင်။
- String symbol line - ၎င်းသည် တွက်ချက်ရမည့် သင်္ကေတဖြစ်သည်။
- Timeframe - MQL4 တွင် ၎င်းသည် ကိန်းပြည့်အမျိုးအစား int ဖြစ်သည်၊ MQL5 တွင် ၎င်းသည် ကိန်းပြည့်တစ်ခုသာမက အချိန်အပိုင်းအခြားများ စာရင်းကောက်မှုများပါရှိသော enum ဖြစ်သည်။
- String parameter name - ၎င်း indicator ထံသို့ လမ်းကြောင်းကို ဖြတ်သန်းရန်လိုအပ်ပြီး ( ဥပမာ၊ ၎င်းသည် အခြားလမ်းညွှန်တွင် တည်ရှိနေပါက) ကျွန်ုပ်တို့တွက်ချက်လိုသော တိုးချဲ့မှုနှင့်အတူ indicator အမည်ကိုလည်း ပေးရပါမည်။ ထို့နောက်၊ ကျွန်ုပ်တို့အသုံးပြုလိုသော indicator အတွက် လိုအပ်သော parameters များကို ထည့်သွင်းသွားပါသည်။
iCustom လုပ်ဆောင်ချက်ဖြင့် စတင်မည့် indicator အတွက် parameters များစာရင်း။ ၎င်းတို့၏နံပါတ်သည် သင့် indicator မှ လိုအပ်သောတန်ဖိုးကိုရရှိရန် အကြောင်းပြချက်မည်မျှ လိုအပ်သည်ပေါ်တွင်မူတည်သည်။ လုပ်ဆောင်ချက်သည် ပြောင်းလဲနိုင်သော parameters အရေအတွက်ကို ယူဆောင်သည်ဟု အဓိပ္ပါယ်ရသည်။ ဥပမာအားဖြင့် Alligator အတွက် ။ (၎င်းသည် MetaTrader Client Terminal တပ်ဆင်မှုပက်ကေ့ချ်တွင် ပါ၀င်သည်)
![LiteFinance: MQL4 နှင့် MQL5 ၏ အမေးများသော မေးခွန်းများ]()
(သို့မဟုတ်) ဥပမာအားဖြင့် ၎င်းသည် Ichimoku အတွက် အခြားသော ပရိုဂရမ်ဒေတာ အချို့ဖြစ်မည်ဖြစ်သည်-
ထို့ကြောင့်ပထမ အခြေအနေတွင် မှန်ကန်သောတန်ဖိုးကိုရရန် လုပ်ဆောင်ချက်ထဲ သို့ ကန့်သတ်ချက် ၆ ခုကို ထည့်သွင်းရန် လိုအပ်ပြီး ဒုတိယတွင် ၃ ခု ဖြစ်သည်။
- MQL4 ၏ စတုတ္ထဗားရှင်းတွင် နောက်ထပ် ကန့်သတ်ချက်နှစ်ခုရှိသည်။ ပထမတစ်ခုသည် indicator line index ကိုဖော်ပြသည့် integer mode ဖြစ်ပြီး data buffers အတွင်း အညွှန်းကိန်းပြုလုပ်ရန်အတွက် runtime တွင်အသုံးပြုသည်။
- နောက်ကိန်းပြည့်ပြောင်းမှုသည် အချိန်ဇယားတစ်လျှောက် indicator ၏ ရှေ့ (သို့မဟုတ်) နောက်ပြန် ပြောင်းခြင်းကို ညွှန်ပြသည်။
MQL သည် MetaTrader ကုန်သွယ်မှုဆာဗာနှင့် Client Terminal နှင့် Language Editor အပါအဝင် ဆက်စပ်အက်ပလီကေးရှင်းများ အားလုံးသည် C++ language ၏ ဆက်ခံသူဖြစ်သည်။ ကံမကောင်းစွာဖြင့် အကယ်၍ ကျွန်ုပ်တို့ MQL ကို ၎င်း၏ ယခင်ပရိုဂရမ်များနှင့် နှိုင်းယှဉ်ပါက language သည် တိုးတက်နေသည်မှာ ထင်ရှားပါသည်။ လက်ရှိတွင် MQL စွမ်းရည်များသည် 2003 C++ စံနှုန်းများနှင့်ကိုက်ညီပါသည်။ MQL သည် အလွန်စွမ်းဆောင်ရည်မြင့်သော language ဖြစ်ပြီး ၎င်းသည် programmers များနှင့် developer များ၏ လက်ရှိလိုအပ်ချက်များကို 99% လွှမ်းခြုံပေးနိုင်ကြောင်း သတိပြုသင့်သည်။
ပထမတစ်ချက်မှာ ဗားရှင်း 4 နှင့် 5 ရှိ ပရိုဂရမ်များ၏ ကုဒ်များသည် အနည်းငယ်ကွဲပြားသော်လည်း ထိုနေရာတွင် ကိုယ်ပိုင်ဂုဏ်သတ္တိများရှိနေဆဲဖြစ်သည်။ ပဉ္စမဗားရှင်းတွင် စတုတ္ထဗားရှင်းမှ macros အားလုံးကို စာရင်းကောက်ယူမှုများဖြင့် အစားထိုးထားသည်။
စိတ်ကြိုက်အက်ပလီကေးရှင်းများ စတင်ရန်အတွက် event model ကို တိုးချဲ့ထားသည်။ OnTrade၊ OnTradeTransaction၊ OnTesterInit၊ OnTesterDeinit၊ OnTesterPass ကဲ့သို့သော event handlers လိုင်းတစ်ခုပေါ်လာပြီဖြစ်သည်။ Strategy tester mode တွင် OnTick နှင့် OnTimer ၏ မှားယွင်းသောအချက်အလက်ကို ပြင်ဆင်ပြီးဖြစ်သည်။ OnTimer လုပ်ဆောင်ချက်သည် MQL4 ထက် အဆ 1000 ပိုများသော timer sampling rate ဖြင့်လုပ်ဆောင်နိုင်ပါပြီ။ မီလီစက္ကန့်နှင့် နှိုင်းယှဉ်လျှင် မိုက်ခရိုစက္ကန့် တစ်ကြိမ်ဖြစ်သည်။
MQL5 သည် ကုန်သွယ်မှုအမှာစာများ ပေးပို့ခြင်းနှင့် ၎င်းတို့ကိုတုံ့ပြန်သည့် ယန္တရားကို ပြောင်းလဲခဲ့သည်။ MQL4 တွင် ကုန်သွယ်မှုလုပ်ဆောင်ချက်အများအပြားကို OrderSend ဟုခေါ်သော မတူညီသောလည်ပတ်မှု ပုံစံများဖြင့်ပေါင်းစပ်ထားသည်။ MetaTrader 5 ရှိ ကုန်သွယ်မှုလုပ်ငန်းစဉ်သည် စတုတ္ထပလပ်ဖောင်းရှိ ကုန်သွယ်မှုနှင့်ကွဲပြားစပြုလာသည်။ ထို့အပြင် position netting mode လုပ်ဆောင်ချက်အပြင် အရောင်းအဝယ်ကို hedge transactions ခွင့်ပြုသည့် လုပ်ဆောင်ချက်ကိုလည်း မိတ်ဆက်ခဲ့သည်။ MT4 အမှာစာများအပြင် အရောင်းအ၀ယ်များနှင့် ကုန်သွယ်မှုများလည်း ပေါ်လာသည်။ ယခုအခါ language ၏ asynchronous mode တွင် ကုန်သွယ်မှုဆာဗာထံ တောင်းဆိုမှုများကို ပေးပို့ရန်အတွက် OrderSendAsync လုပ်ဆောင်ချက်ပါရှိသည်။
MQL5 ရှိ MQL4 macros အားလုံးကို စာရင်းကောက်ယူမှုများဖြင့် အစားထိုးထားသည်။ ထို့ကြောင့် compiler သည် developer အား implicit အမျိုးအစားသို့ ပြောင်းလဲမှုများကို ညွှန်ပြပါသည်။
MetaTrader 5 သည် MetaTrader 4 ရှိ timeframes 9 ခုနှင့် နှိုင်းယှဉ်ပါက standard timeframes 21 ခုဖြင့် အလုပ်လုပ်နိုင်စေပါသည်။ MQL5 ရှိ Indicators များသည် ဇယားတွင် buffers အရေအတွက်အများအပြားကို ရရှိခဲ့ပါသည်။
MQL4 မှ MQL5 သို့ပြောင်းလဲခြင်းသည် စတင်သူ ပရိုဂရမ်မာ အတွက် အသေးအဖွဲအလုပ်ဖြစ်သော်လည်း အာရုံစိုက်မှုနှင့် စိတ်ရှည်မှုလိုအပ်မည်ဖြစ်သည်။ Compiler သည် MQL5 နှင့် ကိုက်ညီမှုမရှိသော အရာအများစုကို ၎င်းကိုယ်တိုင် ပြသပေးမည်ဖြစ်သည်။
ကုန်သွယ်မှုအမှာစာများ လုပ်ဆောင်ပြီး ဆာဗာသို့ပေးပို့ခြင်းအတွက် အထူးအာရုံစိုက်သင့်သည်။
အရောင်းအဝယ်တောင်းဆိုချက်ကို MQL4 တွင် OrderSend လုပ်ဆောင်ချက်နှင့် ၎င်းအတွက် parameters အစုံကိုအသုံးပြု၍ လုပ်ဆောင်သည်။ အမှာစာကို Modification နှင့် pending order အားဖျက်ခြင်းတို့ကို သီးခြားလုပ်ဆောင်မှုများဖြင့် လုပ်ဆောင်ပါသည်။ Query ၏ရလဒ်ကို လုပ်ဆောင်ချက်၏အဆုံးတွင် ပြန်ပေးသော Boolean တန်ဖိုးဖြင့်ဆုံးဖြတ်သည်။ GetLastError လုပ်ဆောင်ချက်ကိုအသုံးပြုပြီး server return code ကိုဆုံးဖြတ်ရန်အတွက် ရလဒ်၏ခွဲခြမ်းစိတ်ဖြာမှုကို လျှော့ချထားသည်။
MQL5 တွင်ဆာဗာသို့ ကုန်သွယ်မှုအမှာစာများပေးပို့ရန်အတွက် special MqlTradeRequest ဖွဲ့စည်းပုံ ရှိသည်။ ၎င်းကိုသင့်လျော်သော လုပ်ငန်းအမျိုးအစားနှင့် အမှာစာအမျိုးအစား ဖြည့်စွက်ရန် လိုအပ်သည်။ ရလဒ်ရရှိရန် OrderSend ကိုခေါ်ဆိုသည့်အခါ ဆာဗာမှတုံ့ပြန်မှုရရှိရန် ရည်ညွှန်းချက်ဖြင့် MqlTradeResult တည်ဆောက်ပုံကိုကြေညာပြီး ကျော်ဖြတ်ရန်လိုအပ်သည်၊ OrderSend ကိုခေါ်ဆိုသောအခါတွင် ယခင်ကရရှိခဲ့သော disparate parameters များကို MqlTradeRequest တည်ဆောက်ပုံသို့ပေါင်းစပ်ပြီး ဆာဗာသို့ပေးပို့သည်။ ကျွန်ုပ်တို့သည်တုံ့ပြန်မှုမှ ရရှိထားသော MqlTradeResult ဖွဲ့စည်းပုံကို ပိုင်းခြားစိတ်ဖြာပါသည်။ လိုအပ်သောအချက်အလက်အားလုံးကို ဆာဗာမှတုံ့ပြန်မှုတွင် ရရှိနိုင်ပါသည်။
သင်၏ ပရိုဂရမ်ကုဒ်ရှိ event handlers များကိုအထူးဂရုပြုပါ။ MQL5 တွင် OnTesterTick၊ OnTesterTimer၊ OnBookEvent အပြင် ကုန်သွယ်မှုတာမင်နယ်မှ ဖြစ်ရပ်များအပေါ်တုံ့ပြန်မှုအနေဖြင့် အမျိုးမျိုးသော အက်ပ်လီကေးရှင်းများကို စတင်လိုက်ပါသည်။
Experts အတွက် -
- OnInit, OnDeinit, OnTimer, OnTick, OnChartEvent, OnTester
Indicators အတွက် -
- OnInit, OnDeinit, OnTimer, OnCalculate, OnChartEvent, OnTester
Scripts အတွက် -
- OnStart (ဤ handler ကို indicators များနှင့် scripts များတွင် အသုံးမပြုနိုင်ပါ)
အခြားပိုကြီးသော ပရောဂျက်များအတွင်း သီးသန့်အသုံးပြုထားသောကြောင့် ပါဝင်သော library များအတွက် စတင်အသုံးပြုနိုင်သည့် အထောက်အကူပစ္စည်းမရှိပါ။
နောက်ထက်ကွာခြားချက်မှာ ကြိုတင်သတ်မှတ်ထားသော variables Ask, Bid နှင့် arrays များသည် Open [], High [], Low [], Close [], Volume [], Time [] တို့သည် MQL5 တွင် မရှိပါ။ ထို့ကြောင့် time series CopyRates၊ CopyOpen၊ CopyHigh စသည်တို့ကို ဝင်ရောက်ကြည့်ရှုရန်အတွက် built-in လုပ်ဆောင်ချက်များကိုအသုံးပြု၍ ဤဒေတာကို လွတ်လပ်စွာရယူနိုင်ရန် ပရိုဂရမ် ကုဒ်ကိုပြုပြင်ရပါမည်။ Dynamic Array တစ်ခုကို ဖော်ပြပြီး ဒေတာရယူပါ။ ရလဒ်ကိုပေးဆောင်သည့် လုပ်ဆောင်ချက်သည် array ၏ အရွယ်အစားကို သူ့ဘာသာသူ ထိန်းပေးမည်ဖြစ်ပါသည်။
P.S. ကျွန်ုပ်ဆောင်းပါးကို နှစ်သက်ပါသလား ? လူမှုကွန်ရက်များတွင် မျှဝေလိုက်ပါ- ကျွန်ုပ်အနေဖြင့် အထူးပင် "ကျေးဇူးတင်ရှိပါသည်" :)
အသုံးဝင်သောလင့်ခ်များ
- ကျွန်ုပ်အနေဖြင့် ယုံကြည်စိတ်ချရသော ကုန်သွယ်ရေးအကျိုးဆောင်နှင့် ကုန်သွယ်မှုပြုလုပ်ရန် ဤနေရာ ကို အကြံပြုအပ်ပါသည်။ ကုန်သွယ်ရေးစနစ်သည် သင့်အား ကိုယ်တိုင်ကိုယ်ကျ ကုန်သွယ်မှုပြုလုပ်ခြင်း သို့မဟုတ် ကမ္ဘာတစ်ဝှမ်းမှ အောင်မြင်သောကုန်သည်များ၏ ကုန်သွယ်မှုကို ကူးယူခွင့်ပြုထားပါသည်။
- LiteFinance ပလပ်ဖောင်းပေါ်တွင် အပ်ငွေဘောနပ်စ် 50% ကို ရယူရန်အတွက် ကျွန်ုပ်၏ ပရိုမိုကုဒ် BLOG ကို အသုံးပြုပါ။ သင့်ကုန်သွယ်မှုအကောင့်ကို ငွေအပ်နှံခြင်း ပြုလုပ်သည့်အခါ ဤကုဒ်ကို ပရိုမိုကုဒ်ဖြည့်ရမည့်အကွက်တွင် ထည့်သွင်းပါ။
- ကုန်သည်များအတွက် တယ်လီဂရမ်ချက် - https://t.me/litefinance။ ကျွန်ုပ်တို့၏ ကုန်သွယ်မှုအတွေ့အကြုံ နှင့် ကုန်သွယ်ရေးအချက်ပြမှုများကို မျှဝေထားပါသည်။
- အရည်အသွေးမြင့် ခွဲခြမ်းစိတ်ဖြာမှု၊ Forex သုံးသပ်ချက်များ၊ လေ့ကျင့်ရေးဆောင်းပါးများနှင့် ကုန်သည်များအတွက် အခြားအသုံးဝင်သည့် အကြောင်းအရာများပါရှိသော တယ်လီဂရမ်ချန်နယ် https://t.me/litefinance

ဤဆောင်းပါး၏ အကြောင်းအရာသည် စာရေးသူ၏ ထင်မြင်ယူဆချက်ကို ကိုယ်စားပြုပြီး၊ LiteFinance အကျိုးဆောင်ကုမ္ပဏီ၏ တရားဝင်ရပ်တည်ချက်ကို ကိုယ်စားပြုခြင်းမရှိပါ။ ဤစာမျက်နှာပေါ်တွင် ထုတ်ဝေဖော်ပြသော စာပေအကြောင်းအရာသည် သတင်းအချက်အလက်ရည်ရွယ်ချက်အတွက်သာဖြစ်ပြီး၊ ညွှန်ကြားချက် 2014/65/EU ၏ ရည်ရွယ်ချက်အလို့ငှာ ရင်းနှီးမြှုပ်နှံမှုအကြံဉာဏ်ပေးအပ်ခြင်းဟု မယူဆသင့်ပါ။
မူပိုင်ခွင့်ဥပဒေနှင့်အညီ၊ ဤဆောင်းပါးကို ၎င်းအား ခွင့်ပြုချက်မရှိပဲ ကူးယူခြင်းနှင့် ဖြန့်ဝေခြင်းအပေါ် တားမြစ်ပိတ်ပင်ပိုင်မှုပါဝင်သော ကိုယ်ပိုင်ဖန်တီးထားသည့်ပိုင်ဆိုင်မှုအဖြစ် သတ်မှတ်ပါသည်။
























































