37_exp-timeopenbuy.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «37_exp-timeopenbuy.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программа представляет собой торгового советника для MetaTrader 4, написанный на языке MQL4. Она предназначена для автоматической работы с отложенными ордерами типа Buy Stop и Sell Stop в соответствии с заданным временем открытия и закрытия.
Советник размещает указанное количество отложенных ордеров в заданном временном окне, контролируя количество активных позиций каждого типа. При необходимости он корректирует уровни стоп-лосса и тейк-профита существующих отложенных ордеров.
Также продукт поддерживает автоматическое закрытие открытых позиций и удаление отложенных ордеров по расписанию. Доступна функция увеличения объёма сделок с каждым последующим ордером с помощью множителя лота. Для идентификации своих ордеров используется магический номер.
Настройки программы
| Настройка | Описание |
|---|---|
| BuyStopOpen | Открытие Buy Stop — Включает или отключает размещение отложенных ордеров Buy Stop |
| SellStopOpen | Открытие Sell Stop — Включает или отключает размещение отложенных ордеров Sell Stop |
| BuyStop_Number | Количество Buy Stop — Количество отложенных ордеров Buy Stop, которые необходимо поддерживать |
| SellStop_Number | Количество Sell Stop — Количество отложенных ордеров Sell Stop, которые необходимо поддерживать |
| Distance | Расстояние — Расстояние в пунктах от текущей цены для размещения отложенных ордеров |
| TPBuyStop | Тейк-профит Buy Stop — Уровень тейк-профита для отложенных ордеров Buy Stop |
| SLBuyStop | Стоп-лосс Buy Stop — Уровень стоп-лосса для отложенных ордеров Buy Stop |
| TPSellStop | Тейк-профит Sell Stop — Уровень тейк-профита для отложенных ордеров Sell Stop |
| SLSellStop | Стоп-лосс Sell Stop — Уровень стоп-лосса для отложенных ордеров Sell Stop |
| CloseAfterOpen | Закрытие после открытия — При активации удаляет противоположные отложенные ордера после открытия позиции |
| Lots | Объём лота — Размер лота для торговых операций |
| Lot_Multiplier | Множитель лота — Множитель для увеличения объёма лота с каждым последующим ордером |
| Slippage | Проскальзывание — Максимально допустимое проскальзывание при исполнении ордеров |
| Magic | Магический номер — Магический номер для идентификации ордеров советника |
| CloseIfNotOpen | Удаление если не открыто — При активации удаляет отложенные ордера, если позиции не были открыты к заданному времени |
| OpenAtTime | Открытие по времени — Включает или отключает размещение ордеров по расписанию |
| TimetoOpen | Время открытия — Время для размещения отложенных ордеров (формат ЧЧ:ММ) |
| CloseAtTime | Закрытие по времени — Включает или отключает автоматическое закрытие по расписанию |
| TimetoClose | Время закрытия — Время для автоматического закрытия позиций и удаления ордеров (формат ЧЧ:ММ) |
Поиск по коду файла
/*
G e n e r a t e d by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
Website: H Tt P : // W w W. meTaQ Uo T es. n E T
E-mail : SU P p Ort@m E t aqUo Te s. Net
*/
#property strict
extern bool BuyStopOpen = true;
extern bool SellStopOpen = true;
extern int BuyStop_Number = 5;
extern int SellStop_Number = 5;
extern int Distance = 20;
extern int TPBuyStop = 0;
extern int SLBuyStop = 0;
extern int TPSellStop = 0;
extern int SLSellStop = 0;
extern bool CloseAfterOpen = false;
extern double Lots = 0.1;
extern double Lot_Multiplier = 1.5;
extern int Slippage = 10;
extern int Magic = 1;
extern bool CloseIfNotOpen = false;
extern bool OpenAtTime = true;
extern string TimetoOpen = "12:30";
extern bool CloseAtTime = true;
extern string TimetoClose = "15:30";
double Gd_152,Gd_1521;
double Gd_160,Gd_1601;
int G_ticket_168;
int G_ticket_172;
int start() {
// код доступен только после оплаты
}
int SetOrder(string A_symbol_0, int A_cmd_8, double A_lots_12, double A_price_20, double A_price_28 = 0.0, double A_price_36 = 0.0, int A_magic_44 = 0, int A_datetime_48 = 0, string A_comment_52 = "") {
color color_60;
int datetime_64;
double ask_68;
double bid_76;
double point_84;
int error_92;
int ticket_100;
if (A_symbol_0 == "" || A_symbol_0 == "0") A_symbol_0 = Symbol();
int stoplevel_104 = MarketInfo(A_symbol_0, MODE_STOPLEVEL);
if (A_datetime_48 > 0 && A_datetime_48 < TimeCurrent()) A_datetime_48 = 0;
for (int Li_96 = 1; Li_96 <= 1; Li_96++) {
if ((!IsTesting()) && (!IsExpertEnabled()) || IsStopped()) {
Print("SetOrder(): Остановка работы функции");
break;
}
RefreshRates();
datetime_64 = TimeCurrent();
ticket_100 = OrderSend(A_symbol_0, A_cmd_8, A_lots_12, A_price_20, Slippage, A_price_28, A_price_36, A_comment_52, A_magic_44, A_datetime_48, color_60);
if (ticket_100 > 0) return (ticket_100);
error_92 = GetLastError();
if (ExistOrders(A_symbol_0, A_cmd_8, A_magic_44, datetime_64)) break;
else {
point_84 = MarketInfo(A_symbol_0, MODE_POINT);
ask_68 = MarketInfo(A_symbol_0, MODE_ASK);
bid_76 = MarketInfo(A_symbol_0, MODE_BID);
if (ask_68 == 0.0 && bid_76 == 0.0) Comment("SetOrder(): Проверьте в обзоре рынка наличие символа " + A_symbol_0);
if (error_92 == 130/* INVALID_STOPS */) {
switch (A_cmd_8) {
case OP_BUYLIMIT:
if (A_price_20 > ask_68 - stoplevel_104 * point_84) A_price_20 = ask_68 - stoplevel_104 * point_84;
if (A_price_28 > A_price_20 - (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 - (stoplevel_104 + 1) * point_84;
if (!(A_price_36 > 0.0 && A_price_36 < A_price_20 + (stoplevel_104 + 1) * point_84)) break;
A_price_36 = A_price_20 + (stoplevel_104 + 1) * point_84;
break;
case OP_BUYSTOP:
if (A_price_20 < ask_68 + (stoplevel_104 + 1) * point_84) A_price_20 = ask_68 + (stoplevel_104 + 1) * point_84;
if (A_price_28 > A_price_20 - (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 - (stoplevel_104 + 1) * point_84;
if (!(A_price_36 > 0.0 && A_price_36 < A_price_20 + (stoplevel_104 + 1) * point_84)) break;
A_price_36 = A_price_20 + (stoplevel_104 + 1) * point_84;
break;
case OP_SELLLIMIT:
if (A_price_20 < bid_76 + stoplevel_104 * point_84) A_price_20 = bid_76 + stoplevel_104 * point_84;
if (A_price_28 > 0.0 && A_price_28 < A_price_20 + (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 + (stoplevel_104 + 1) * point_84;
if (A_price_36 <= A_price_20 - (stoplevel_104 + 1) * point_84) break;
A_price_36 = A_price_20 - (stoplevel_104 + 1) * point_84;
break;
case OP_SELLSTOP:
if (A_price_20 > bid_76 - stoplevel_104 * point_84) A_price_20 = bid_76 - stoplevel_104 * point_84;
if (A_price_28 > 0.0 && A_price_28 < A_price_20 + (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 + (stoplevel_104 + 1) * point_84;
if (A_price_36 <= A_price_20 - (stoplevel_104 + 1) * point_84) break;
A_price_36 = A_price_20 - (stoplevel_104 + 1) * point_84;
}
Print("SetOrder(): Скорректированы ценовые уровни");
}
if (error_92 == 2/* COMMON_ERROR */ || error_92 == 64/* ACCOUNT_DISABLED */ || error_92 == 65/* INVALID_ACCOUNT */ || error_92 == 133/* TRADE_DISABLED */) break;
if (error_92 == 4/* SERVER_BUSY */ || error_92 == 131/* INVALID_TRADE_VOLUME */ || error_92 == 132/* MARKET_CLOSED */) {
Sleep(300000);
break;
}
if (error_92 == 8/* TOO_FREQUENT_REQUESTS */ || error_92 == 141/* TOO_MANY_REQUESTS */) Sleep(100000);
if (error_92 == 139/* ORDER_LOCKED */ || error_92 == 140/* LONG_POSITIONS_ONLY_ALLOWED */ || error_92 == 148/* TRADE_TOO_MANY_ORDERS */) break;
if (error_92 == 146/* TRADE_CONTEXT_BUSY */) while (IsTradeContextBusy()) Sleep(11000);
if (error_92 == 147/* TRADE_EXPIRATION_DENIED */) A_datetime_48 = 0;
else
if (error_92 != 135/* PRICE_CHANGED */ && error_92 != 138/* REQUOTE */) Sleep(7700.0);
}
}
return (0);
}
void CPBS() {
bool is_closed_0;
color color_4;
double order_lots_8;
double price_16;
double price_24;
double price_32;
int error_40;
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
for (int Li_44 = 1; Li_44 <= 1; Li_44++) {
if (!IsTesting() && (!IsExpertEnabled()) || IsStopped()) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
price_16 = MarketInfo(OrderSymbol(), MODE_ASK);
price_24 = MarketInfo(OrderSymbol(), MODE_BID);
if (OrderType() == OP_BUY) price_32 = price_24;
else price_32 = price_16;
order_lots_8 = OrderLots();
is_closed_0 = OrderClose(OrderTicket(), order_lots_8, price_32, SlippagПоказано первые 50% кода (символов: 11267)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.