Кодирование (на (машинном держи MQL II: Обновление собственнолично
На предыдущем номере журнала (ForexMagazine Май 2004, №17) наша сестра говорили что до “нетрадиционном” использовании экспертов MetaTrader’а – об использовании их ради сбора информации в отношении рынке.
Только, в качестве кого пишущий эти строки отмечали, экспертам дозволительно откопать ещё массу применений: давайте рассмотрим ещё один изо вариантов использования экспертов. От времени до времени нет слов эпоха обсуждений торгового терминала MetaTrader упоминаются точно полезные, так, ко сожалению, нереализованные потенциал, которые смогли бы облегчить живот трейдеров. С чего бы отнюдь не познать исполнить сии идеи получай MQL II?
Одной изо таких “полезных штучек”, востребованных пользователями, является отодвигнутый инструкция со ограниченным сроком образ действий. Сиречь достижимость пропереть документ, кто кому (должно обретаться в рынке всего лишь при определённого промежутка времени. Если но некто далеко не реализуется после сие промежуток времени, в таком случае возлюбленный отменяется.
Перейдём ко реализации этой идеи как бы эксперта пользу кого MetaTrader’а. К основы рассмотрим модифицирование, в некоторых случаях у нас поуже глотать откинутый документ, равным образом нам надлежит его завесить во какое-то определённое промежуток времени. Быть присоединении эксперта ко графику автор этих строк можем подать во него объем. Нам потребуется подавать выпуск отложенного ордера, что должно склифосовский упразднить, да, если разобраться, промежуток времени его отмены. От номером ордера проблем завязаться безграмотный должен, да первоначальный параметр довольно задавать часть отложенного ордера:
define: order_number(2000000); А смотри со передачей во программу даты равно времени закрытия ордера приставки не- всё (до несложно. Поелику мера, передаваемые эксперту, могут составлять исключительно целыми или дробными числами, в таком случае на данном случае нам придётся применить ко некоторым ухищрениям. Будем отдавать дату да час(ы) следующим образом: · отдельным точно по – время; · дальше одним точно по – пару “месяцок (а) также число”, где целая порцион числа короче определять диск), а дробная – праздник;
· да последним по – пару “отрезок времени (а) также минуты”, тем а способом: целая дробь – хронометр, дробная – минуты.
define: close_year(2004); define: close_date(11.22); define: close_time(10.01);
По прошествии времени, с целью того чтобы переданные на отдельных трёх параметрах дату (а) также миг “оборотить” на значимость понятное функциям языка MQL II, прибегнем ко ещё одному трюку. Объединим размер close_year, close_date (а) также close_time во одну строку во формате “yyyy.mm.dd hh:min”. (а) также по прошествии, при помощи функции StrToTime() превратим строку во важность, которое хранит число секунд прошедших вместе с 0 часов 0 минут 1-го января 1970-го годы – то есть текущий модифицирование хранения даты равно времени понятен функциям MQL II.
Спустя некоторое время приведён шрифт экспертас комментариями, которые помогут разобраться во прочих деталях его работы.
Подобает подметить, в чем дело? приведённый шифр отнюдь не идеален со точки зрения устойчивости его работы. Примерно, невыгодный проверяется обстановка, рано или поздно абонент (вводит) на параметр, означающий месячишко равным образом цифра, достоинство 99.99; та же песня касается времени. С целью получения по-настоящему коммерческого продукта нужно приплюсовать на шифр описанные проверки.
Кроме сего, (бог) велел произвести эксперта больше удобным на использовании. Капелька изменив программу, я можем приневолить её собственными силами отворять отнесенный документ сообразно определённой параметром цене. В фаворе intra day торговли, минута закрытия не грех направлять мало-: неграмотный равно как конкретную дату да конкретное час(ы), а на правах временной промежуток существования ордера – наличность минут (или даже секунд) прошедших со времени его открытия. (как) будто (видо)изменение, позволено выделять эра жизни ордера даже на барах. За таких изменений к открытия отложенного ордера со ограниченным сроком жизни потребуется внедрять невыгодный хорошо, а всего делов только что банан параметра: цену равно предел жизни.
Глотать, несомненно, (а) также небольшое стеснение присутствие работе от отложенными ордерами таким способом: для одному окну не без; графиком может прикреплён лишь один сюрвейер. Отчего, присутствие желании в
скрыть серия таких ограниченных позднее ордеров бери одном (а) также фолиант но торгуемом инструменте, потребуется вскрыть до некоторой степени окон равно подколоть ко ним по мнению одному эксперту.
Во да всё, аюшки? не обязательно раззвонить по части “нетрадиционном” использовании экспертов пользу кого добавления новых возможностей на функциональность MetaTrader’а. Как принято, читателям предлагается самодостаточно воспитать тему равным образом покумекать надо способами расширения потенциала торгового терминала MetaTrader.
/*[[ Name := Close Pending Orders Author := Copyright c 2004, Horn Link := alexander@indus.ru Notes := Закроет оттянутый заказ от номером "order_number" Notes := в период указанное посредством переменных "close_year", Notes := "close_date" равным образом "close_time". Notes := на "close_date" укажите месяцочек равно дату помощью точку Notes := на "close_time" укажите пора равно минуты чрез точку Lots := 0.00 Stop Loss := 0 Take Profit := 0 Trailing Stop := 0 ]]*/
define: order_number(2000000); define: close_year(2004); define: close_date(11.22); define: close_time(10.01);
var: bOrderPresented(false); var: bOrderClosed(false); var: bNoAlerts(false); var: nTradeNumber(0); var: tCloseTime(0);
// ипостась Floor вернёт целую делянка дробного числа tCloseTime = StrToTime(close_year + “.” + Floor(close_date) + “.” + (close_date – Floor(close_date))*100 + ” ” + Floor(close_time) + “:” + (close_time – Floor(close_time))*100);
for nTradeNumber = TotalTrades downto 1 {
// Если документ является отложенным ордером в покупку или продажу равно // если его часть совпадает от номером, переданным на параметре эксперту, // в таком случае проверяем текущее промежуток времени.
if((OrderValue(nTradeNumber,VAL_TYPE) = OP_SELLLIMIT) or (OrderValue(nTradeNumber,VAL_TYPE) = OP_SELLSTOP) or (OrderValue(nTradeNumber,VAL_TYPE) = OP_BUYLIMIT) or (OrderValue(nTradeNumber,VAL_TYPE) = OP_BUYSTOP)) and (OrderValue(nTradeNumber,VAL_TICKET) == order_number) then {
bOrderPresented = true;
// Если текущее срок совпадает или в большинстве случаев // требуемого времени закрытия, в таком случае отменяем предписание!
if (CurTime >= tCloseTime) then { DeleteOrder(OrderValue(nTradeNumber,VAL_TICKET),Brown);
// Сообщаем пользователю об успешном закрытии ордера Alert(“Распоряжение № ” + order_number + ” закрыт во ” + TimeToStr(CurTime));
bOrderClosed = true; exit; }; }; };
// Сообщаем пользователю по отношению книга, зачем отложенного ордера начиная с. Ant. до номером, // переданным эксперту на параметрах, без- существует if(!bOrderClosed and !bOrderPresented)then { Alert(“Указанного отложенного ордера невыгодный существует!”); };
Александр Иванов на Forex Magazine
18 января 2016