Функция за изчисляване на партиди MT4, MQL за вас
MQL за манекени, програмиране на MQL4, MQL5
Въпрос №8 „Как да изчислим размера на лота в зависимост от размера на стоп загубата?“
Попаднах на проблем и вече трети ден се мъча и не мога да го реша. В готовия експертен съветник реших да въведа % риск вместо много, така че трябва да изчисля партидата до стопа, например, с депо от 10 000 риск от 1% със стоп от 100 пункта, ще бъде около 0,1 лот, но със стоп от 200, партидата вече трябва да бъде 0,05, така че рискът от 1% да остане на същото ниво. Надявам се, че обясних всичко ясно.
За да изчислим партидата в зависимост от стоп загубата, трябва да знаем цената на 1 пипс.
Изчисляване на стойността на пипса
1. За валутни двойки с обратно котиране, стойността на пипса, изразена в долари, се изчислява по формулата PIP = LOT_SIZE * TICK_SIZE, където LOT_SIZE е размерът на лота, TICK_SIZE е размерът на тика.
За валутни двойки с обратна котировка стойността на пипса е постоянна и не зависи от текущата котировка.
Пример: За EURUSD размерът на лота е 100 000 EUR, размерът на тика е 0,0001 PIP = 100 000 * 0,0001 = $10,00
2. За валутни двойки с директна котировка, стойността на пипс, изразена в долари, се изчислява по формулата PIP = LOT_SIZE * TICK_SIZE / CURRENT_QUOTE, където LOT_SIZE е размерът на лота, TICK_SIZE е размерът на тика, CURRENT_QUOTE е текущата котировка на двойката.
За валутни двойки с директна котировка стойността на пипса се променя в зависимост от текущата котировка.
Пример: За USDJPY размерът на лота е $100 000, размерът на тика е 0,01. С котировка USDJPY 114,66 PIP = 100 000 * 0,01 / 114,66 = $8,72
3. За кръстосани курсове цената на точка, изразена в долари, се изчислява по формулата PIP = LOT_SIZE * TICK_SIZE * BASE_QUOTE / CURRENT_QUOTE, където LOT_SIZE елот, TICK_SIZE — тик размер, BASE_QUOTE — текуща котировка на основната (първа) валута спрямо щатския долар, CURRENT_QUOTE — текуща котировка на двойката.
За кръстосаните курсове цената на един пипс варира в зависимост от текущите котировки както на самата двойка, така и на основната валута.
Пример: За GBPJPY размерът на лота е 100 000 паунда, размерът на отметката е 0,01, основната валута е GBPUSD. При котировка от 230,82 GBPJPY и котировка от 2,0107 GBPUSD PIP = 100 000 * 0,01 * 2,0107 / 230,82 = $8,71
Разработчиците на MetaTrader се погрижиха за това и ни предоставиха функцията: MarketInfo ( Symbol (), MODE_TICKVALUE ) — цената на 1 пипс във валутата на депозита за 1 лот. Нека напишем скрипт за изчисляване на партидата:
Език MQL - Урок 9 "Библиотека с функции"
Добър ден, скъпи читатели! Исках да обмисля друг Форекс експертен съветник днес, но осъзнах, че ми е омръзнало да копирам функции от един експертен съветник на друг. Затова днес ще разгледаме какво представляват „MQL функционални библиотеки“ и как да работим с тях.
За да създадете библиотека от MQL4 функции, извикайте съветника за създаване на експертни съветници в Metaeditor на терминала за търговия MT4:
Въведете името на библиотеката с функции (например MyLib):
Копираме нашите функции GetLot (), NewOrder (), DelOrders (), DelOrder (), EditOrder () и CloseOrder () в създадената библиотека. Компилираме и получаваме грешка: (още...)
Език MQL - Урок 6 "Експертно прасе за хеджиране"
Както обещах, днес ще напишем Hedge Hog Expert Advisor в MQL, но първо, нека комбинираме вече натрупаните знания ида напишем наши собствени функции в MQL4.
Веднага възниква въпросът: "Какво ще ни даде това?"
Е, първо, това ще намали броя на редовете в нашия експертен съветник Metatrader 4. Второ, не можете да губите време за писанеследвайки Forex Expert Advisors, но просто използвайте написаните по-рано функции в новия код.
MQL4 функциите са градивни елементи, от които можете лесно да изградите работещ MT4 експертен съветник, без да се разсейвате от една и съща работа всеки път.
Изчисляване на лот в MT4, нека го поставим във функцията —"Функция за изчисление на лот" : double GetLot( int Risk) < двойно Безплатно = Безплатен Марджин за Акаунт(); двоен Един_Лот = Информация за пазара(Символ(), МОДЕ_МАРГИНРЕКУИРЕН); double Min_Lot = MarketInfo (Символ (), MODE_MINLOT); double Max_Lot = MarketInfo (Символ (), MODE_MAXLOT); двойна стъпка = MarketInfo( Symbol(), MODE_LOTSTEP); двоен лот = MathFloor (Безплатно*Риск/100/Един_лот/Стъпка)*Стъпка; ако (Партида, ако (Партида>Max_Lot) Партида=Макс_Лот; ако (Партида*Една_Партида>Безплатно) връщане (0,0); връщане (Партида);>
Обърнете внимание на реда: if (Lot*One_Lot>Free) return (0.0);
В него проверяваме достатъчността на средствата по валутна сметка за търговия. И ако няма достатъчно от тях, връщаме 0.
За да отворите поръчка в Metatrader 4 с помощта на форекс съветник, нека напишем функция —"Функция за отваряне на поръчка" : int NewOrder( int Cmd, double Lot) < двойно TP=0; //вземете печалба double SL=0; //stoploss double PR=0; //Цена докато (! IsTradeAllowed ()) Сън (100); if (Cmd== OP_BUY ) if (TakeProfit>0) TP= Ask +TakeProfit* Point ; if (StopLoss>0) SL= Ask -StopLoss* Point ;> if (Cmd== OP_SELL ) if (TakeProfit>0) TP= Bid -TakeProfit* Point ; ако (StopLoss>0) SL= Bid +StopLoss* Point ;> int tic= OrderSend ( Symbol (),Cmd,Lot,PR,3,SL,TP,"«,0,0, CLR_NONE ); if (tic Print ( "Грешка при отваряне на поръчка: ", GetLastError ()); return (tic);>
В тази функция на езика MQL използвахме команди MQL4, които са нови за нас:
Print() - Отпечатване на съобщение в дневника.
GetLastError() - Номерът на последната грешка.
Никога не боли да знаете за възникването на грешка за бъдещо отстраняване на грешки на експертния съветник. В допълнение, ние инструктирахме нашата функция MQL4 да определя цената по тип поръчка, да изчислява тейк печалба и стоп загуба.
Функцията start() на нашия скрипт ще бъде значително опростена:
двойно Lot=GetLot(MaxRisk); ако (Партида==0) < Alert( "Недостатъчно средства!"); return (0);> RefreshRates (); if (Buy) NewOrder( OP_BUY ,Lot); if (Sell) NewOrder( OP_SELL ,Lot);
Нова функция RefreshRates () —функция за опресняване на данни в предварително дефинирани променливи ( Ask , Bid и др.) Когато стартирате нашия скрипт, прозорец с параметри се появява в прозореца на терминала на Metatrader. Докато ги сменим, цената може да се промени. Тук ще актуализираме стойността му в променливи.
Сега нека се заемем с експертния съветник Hedge Hog.
На пръв поглед всичко е просто. Необходимо е да отваряте всеки ден на Форекс търговия, от понеделник до петък в 00:00 GMT, две пазарни поръчки в противоположни посоки (една за покупка, втора за продажба) без стоп загуби и с тейк печалби от 14 пункта с еднакъв обем за валутната двойка EURUSD.
изберете „Съветник“ и щракнете върху „Напред>“ (Още...)