secure profit_v1.2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «secure profit_v1.2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, предназначенный для автоматической торговли на валютном рынке. Он анализирует технические индикаторы и ценовые данные для принятия торговых решений, а также управляет открытыми позициями: закрывает их по определённым условиям и модифицирует стоп-лосс и тейк-профит при достижении заданного уровня прибыли. Советник работает в заданном часовом окне и поддерживает автоматический расчёт размера лота на основе риска.
Настройки программы
| Настройка | Описание |
|---|---|
| comm | Комментарий — Текстовый параметр для пояснения или идентификации настроек |
| MondayStartHour | Час начала в понедельник — Час, с которого разрешается начинать торговлю в понедельник |
| FridayLastTradeHour | Час окончания в пятницу — Час, после которого торговля в пятницу прекращается |
| comm1 | Комментарий 1 — Текстовый параметр для пояснения настроек |
| AutoMM | Автоматический расчёт лота — Включает или отключает автоматический расчёт размера лота на основе риска |
| MaxRisk | Максимальный риск — Процент риска, используемый при автоматическом расчёте лота |
| Max_lot | Максимальный лот — Ограничение максимального размера лота |
| comm2 | Комментарий 2 — Текстовый параметр для пояснения настроек |
| Lot | Размер лота — Фиксированный размер лота для ручного режима |
| comm3 | Комментарий 3 — Текстовый параметр для пояснения настроек |
| Envelope_period | Период канала — Период технического индикатора канала |
| Envelope_deviation | Отклонение канала — Параметр отклонения канала |
| Hours_from | Начало торгового окна — Начальный час торгового окна |
| Hours_to | Конец торгового окна — Конечный час торгового окна |
| Enter_minute | Минута входа — Минута внутри часа, в которую выполняется попытка входа в сделку |
| Exit_level | Уровень выхода — Параметр, используемый для определения условий закрытия позиций |
| Stoploss | Стоп-лосс — Размер стоп-лосса в пунктах |
| Takeprofit | Тейк-профит — Размер тейк-профита в пунктах |
| Secure_depth | Глубина защиты — Порог прибыли, при достижении которого срабатывает защита позиции |
| Secure_stoploss | Защитный стоп-лосс — Смещение стоп-лосса при срабатывании защиты |
| Secure_takeprofit | Защитный тейк-профит — Смещение тейк-профита при срабатывании защиты |
Поиск по коду файла
#include <stdlib.mqh>
#include <WinUser32.mqh>
extern string comm = "????????-???????? (??.-??.):";
extern int MondayStartHour = 6;
extern int FridayLastTradeHour = 18;
extern string comm1 = "?????????????? ?????? ???? (???/????):";
extern bool AutoMM = FALSE;
extern double MaxRisk = 10;
extern double Max_lot = 10;
extern string comm2 = "?????????? ???:";
extern double Lot = 0.1;
extern string comm3 = "?????????:";
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 deinit()
{
if (false) ObjectsDeleteAll();
}
int start()
{
// код доступен только после оплаты
}
double AvtoLot(int Risk){
double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
if (Max_lot>0&&Max_Lot>Max_lot)Max_Lot=Max_lot;
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot) Lot=Min_Lot;
if(Lot>Max_Lot) Lot=Max_Lot;
if(Lot*One_Lot>Free) return(0.0);
return(Lot);
}
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();
Показано первые 50% кода (символов: 8623)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.