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

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

Стоимость полного кода
774,10₽ ≈ $9.46