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

xau edu.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

XAU EDU — советник для MetaTrader 4, работающий на каждом тике. Он рассчитывает текущий индикатор ATR заданного периода и использует его для управления рисками: устанавливает стоп-лоссы на открытых позициях и определяет уровень фиксации прибыли.

Советник размещает отложенные ордера Buy Stop и Sell Stop на заданном расстоянии в пипсах от текущей цены, формируя микросетку. Перед размещением проверяет минимальное расстояние до стоп-уровня брокера и нормализует цены.

Отложенные ордера, возраст которых превышает заданное время в секундах, автоматически удаляются. Если на символе нет ни открытых позиций, ни отложенных ордеров, советник размещает новую пару сеточных ордеров. Все операции выполняются через торговые функции MetaTrader 4 с использованием магического номера для идентификации ордеров.

Настройки программы

НастройкаОписание
MagicNumber Магический номер для идентификации ордеров и позиций, управляемых данным советником.
LotSize Объём сделки, используемый при открытии и закрытии позиций.
ATR_Period Период индикатора ATR, используемый для расчёта волатильности и определения расстояний стоп-лосса и тейка-профита.
ATR_Multiplier Множитель ATR для определения расстояния фиксации прибыли: при достижении прибыли в ATR_Multiplier * ATR пунктов позиция закрывается.
GridDistancePips Расстояние в пипсах от текущей цены для размещения отложенных ордеров Buy Stop и Sell Stop.
ExpirationSeconds Время в секундах, по истечении которого неисполненные отложенные ордера удаляются.
ATR_SL_Multiplier Множитель ATR для расчёта расстояния стоп-лосса, устанавливаемого на открытых позициях без защитного стопа.
Получить полный код

Поиск по коду файла

#property strict

input int      MagicNumber       = 1001;
input double   LotSize           = 0.01;
input int      ATR_Period        = 200;   
input double   ATR_Multiplier    = 1.5;   
input double   GridDistancePips  = 1.5;   
input int      ExpirationSeconds = 60;     
input double   ATR_SL_Multiplier = 0.5;    

void OnTick() {
      // код доступен только после оплаты
   }

void PlaceMicroGrid() {
    double pipSize = Point;
    if(Digits == 3 || Digits == 5) {
        pipSize *= 10;
    }

    double rawBuyPrice = Ask + (GridDistancePips * pipSize);
    double rawSellPrice = Bid - (GridDistancePips * pipSize);

    double buyStopPrice = NormalizeDouble(rawBuyPrice, Digits);
    double sellStopPrice = NormalizeDouble(rawSellPrice, Digits);

    double stopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL) * Point;
    if((buyStopPrice - Ask) < stopLevel) buyStopPrice = NormalizeDouble(Ask + stopLevel, Digits);
    if((Bid - sellStopPrice) < stopLevel) sellStopPrice = NormalizeDouble(Bid - stopLevel, Digits);

    int ticketBuy = OrderSend(Symbol(), OP_BUYSTOP, LotSize, buyStopPrice, 3, 0, 0, "Glutton_Buy", MagicNumber, 0, clrBlue);
    if (ticketBuy < 0) Print("Erro ao abrir Buy Stop: ", GetLastError());

    int ticketSell = OrderSend(Symbol(), OP_SELLSTOP, LotSize, sellStopPrice, 3, 0, 0, "Glutton_Sell", MagicNumber, 0, clrRed);
    if (ticketSell < 0) Print("Erro ao abrir Sell Stop: ", GetLastError());
}

void InjectImmediateSL(double atrValue) {
    double slDistance = atrValue * ATR_SL_Multiplier;

    for (int i = OrdersTotal() - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

                if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
                    if (OrderStopLoss() == 0.0) {
                        double slPrice = 0.0;

                        if (OrderType() == OP_BUY) {
                            slPrice = NormalizeDouble(OrderOpenPrice() - slDistance, Digits);
                        } 
                        else if (OrderType() == OP_SELL) {
                            slPrice = NormalizeDouble(OrderOpenPrice() + slDistance, Digits);
            

Показано первые 50% кода (символов: 3285)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
328,50₽ ≈ $4.02