secure profit.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «secure profit.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник выполняет торговые операции на валютном рынке в среде MetaTrader 4. Он анализирует ценовые данные с помощью скользящих средних и полос envelopes, а также применяет фильтр по времени торговой сессии. Советник открывает позиции на покупку и продажу, устанавливает стоп-лосс и тейк-профит, а также модифицирует открытые ордера при достижении заданного уровня прибыли для фиксации результата.
Настройки программы
| Настройка | Описание |
|---|---|
| Lot | Объём лота — Размер торгового объёма для открытия позиции. |
| Envelope_period | Период полос — Период расчёта индикатора envelopes, используемого для анализа ценового диапазона. |
| Envelope_deviation | Отклонение полос — Стандартное отклонение для расчёта верхней и нижней границы полос envelopes. |
| Hours_from | Час начала — Начальный час торговой сессии, в разрешённый период которого советник может открывать позиции. |
| Hours_to | Час окончания — Конечный час торговой сессии, в разрешённый период которого советник может открывать позиции. |
| Enter_minute | Минута входа — Минута часа, в которую советник проверяет возможность открытия новой позиции. |
| Exit_level | Уровень выхода — Параметр скользящей средней, используемый для определения условий закрытия позиций. |
| Stoploss | Стоп-лосс — Размер стоп-лосса в пунктах для вновь открытых ордеров. |
| Takeprofit | Тейк-профит — Размер тейк-профита в пунктах для вновь открытых ордеров. |
| Secure_depth | Глубина фиксации — Минимальный уровень прибыли в пунктах, при достижении которого советник начинает модификацию открытых ордеров для защиты результата. |
| Secure_stoploss | Защитный стоп-лосс — Смещение стоп-лосса в пунктах при модификации ордера для фиксации прибыли. |
| Secure_takeprofit | Защитный тейк-профит — Смещение тейк-профита в пунктах при модификации ордера для фиксации прибыли. |
Поиск по коду файла
#include <stdlib.mqh>
#include <WinUser32.mqh>
extern double Lot = 0.1;
extern double Envelope_period = 15;
extern double Envelope_deviation = 0.49;
extern int Hours_from = 2;
extern int Hours_to = 23;
extern int Enter_minute = 13;
extern double Exit_level = 26;
extern int Stoploss = 90;
extern int Takeprofit = 50;
extern double Secure_depth = 29;
extern int Secure_stoploss = 15;
extern int Secure_takeprofit = 15;
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;
int Hour25 = 1;
int Hour30 = 1;
datetime BarTime40 = 0;
datetime BarTime33 = 0;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
void OnEveryTick19()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
TechnicalAnalysis2x38();
TechnicalAnalysis2x35();
TechnicalAnalysis3x22();
TechnicalAnalysis3x27();
CheckOpenOrders39();
CheckOpenOrders34();
}
void TechnicalAnalysis2x38()
{
if ((Open[1] < iMA(NULL, NULL,Exit_level,0,MODE_SMA,PRICE_CLOSE,1)) && (High[0] > iMA(NULL, NULL,Exit_level,0,MODE_SMA,PRICE_CLOSE,0)))
{
CloseOrder37();
}
}
void CloseOrder37()
{
int orderstotal = OrdersTotal();
int orders = 0;
int ordticket[30][2];
for (int i = 0; i < orderstotal; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != 21)
{
continue;
}
ordticket[orders][0] = OrderOpenTime();
ordticket[orders][1] = OrderTicket();
orders++;
}
if (orders > 1)
{
ArrayResize(ordticket,orders);
ArraySort(ordticket);
}
for (i = 0; i < orders; i++)
{
if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)
{
bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 4, Red);
if (ret == false)
Print("OrderClose() error - ", ErrorDescription(GetLastError()));
}
}
}
void TechnicalAnalysis2x35()
{
if ((Open[1] > iMA(NULL, NULL,Exit_level,0,MODE_SMA,PRICE_CLOSE,1)) && (Low[0] < iMA(NULL, NULL,Exit_level,0,MODE_SMA,PRICE_CLOSE,0)))
{
CloseOrder36();
}
}
void CloseOrder36()
{
int orderstotal = OrdersTotal();
int orders = 0;
int ordticket[30][2];
for (int i = 0; i < orderstotal; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() != OP_BUY || OrderSymbol() != Symbol() || OrderMagicNumber() != 22)
{
continue;
}
ordticket[orders][0] = OrderOpenTime();
ordticket[orders][1] = OrderTicket();
orders++;
}
if (orders > 1)
{
ArrayResize(ordticket,orders);
ArraySort(ordticket);
}
for (i = 0; i < orders; i++)
{
if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)
{
bool ret = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 4, Red);
if (ret == false)
Print("OrderClose() error - ", ErrorDescription(GetLastError()));
}
}
}
void TechnicalAnalysis3x22()
{
if ((Close[1] < iEnvelopes(NULL, NULL,Envelope_period,MODE_SMA,0,PRICE_CLOSE,Envelope_deviation,MODE_LOWER,1)) && (Close[1] < iMA(NULL, NULL,2,0,MODE_EMA,PRICE_LOW,1)) && (iMA(NULL, NULL,2,0,MODE_EMA,PRICE_LOW,1) < iEnvelopes(NULL, NULL,Envelope_period,MODE_SMA,0,PRICE_CLOSE,Envelope_deviation,MODE_LOWER,1)))
{
LimitOpenOrders23();
}
}
void LimitOpenOrders23()
{
int count = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
if (OrderMagicNumber() == 21)
{
count++;
}
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
if (count < 1)
{
HoursFilter24();
}
}
void HoursFilter24()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
if ((Hours_from < Hours_to && hour0 >= Hours_from && hour0 < Hours_to) ||
(Hours_from > Hours_to && (hour0 < Hours_to || hour0 >= Hours_from)))
{
OnceAnHour25();
}
}
void OnceAnHour25()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
int minute0 = TimeMinute(datetime800);
if (hour0 != Hour25 && minute0 == Enter_minute)
{
Hour25 = hour0;
SellOrder26();
}
}
void SellOrder26()
{
double SL = Bid + Stoploss*PipValue*Point;
if (Stoploss == 0) SL = 0;
double TP = Bid - Takeprofit*PipValue*Point;
if (Takeprofit == 0) TP = 0;
int ticket = -1;
if (true)
ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, 4, 0, 0, "My Expert", 21, 0, Red);
else
tПоказано первые 50% кода (символов: 7741)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.