secure profit_v1.1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «secure profit_v1.1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник выполняет автоматический анализ ценовых данных с использованием технических индикаторов и осуществляет торговые операции через встроенные API торговой системы MetaTrader. Советник работает в заданном временном окне, ограниченном днями недели и часами торговли. Он открывает позиции на покупку и продажу с установленными уровнями стоп-лосса и тейк-профита, а также контролирует количество одновременно открытых ордеров по каждому направлению. При достижении определённого уровня накопленной прибыли советник модифицирует открытые ордера, перемещая стоп-лосс и тейк-профит для фиксации результатов. Вход в сделки осуществляется один раз в час в заданную минуту, при условии нахождения в разрешённом временном интервале.
Настройки программы
| Настройка | Описание |
|---|---|
| comm | Комментарий — Текстовый параметр для отображения метки или пояснения в настройках советника |
| MondayStartHour | Час начала в понедельник — Целочисленный час, с которого разрешается торговля в понедельник |
| FridayLastTradeHour | Последний час торговли в пятницу — Целочисленный час, до которого разрешается торговля в пятницу |
| comm2 | Комментарий 2 — Текстовый параметр для дополнительной метки в настройках советника |
| Lot | Лот — Размер торгового лота для открытия позиций |
| comm3 | Комментарий 3 — Текстовый параметр для дополнительной метки в настройках советника |
| 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 string comm = "????????-???????? (??.-??.):";
extern int MondayStartHour = 6;
extern int FridayLastTradeHour = 18;
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 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;
Показано первые 50% кода (символов: 8011)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.