← К каталогу
Исходный код · ID 589

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 и перейдите к оплате.

Стоимость полного кода
862,30₽ ≈ $10.54