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

titan no loss ultimate.mq5

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

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

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

О программе

TITAN NO LOSS ULTIMATE — торговый советник для MetaTrader 5, реализующий сеточную торговлю с управлением рисками. Советник открывает серии покупок и продаж с постепенным увеличением лотов, применяя механизм хедж-лока для фиксации убыточных направлений. Работа может ограничиваться временным фильтром и фильтром тренда на высшем таймфрейме.

В основе лежит динамическая сетка: расстояние между позициями рассчитывается на основе индикатора ATR с ограничением минимального и максимального диапазона. Лот увеличивается поэтапно через заданное количество шагов. Советник отслеживает дневную прибыль и при достижении целевого значения активирует управление корзиной позиций.

Система риск-менеджмента включает ограничение максимального убытка от депозита (equity stop), трейлинг-стоп для бегущих позиций и гибкие настройки тейк-профита корзины с динамическим trailing. При достижении дневного лимита убытка все позиции закрываются.

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

НастройкаОписание
InpUseHedgeLock Хедж-лок — Включает или отключает механизм хедж-лока для фиксации убыточных направлений сетки
InpHedgeTrigger Триггер хедж-лока — Количество позиций в направлении, при котором срабатывает хедж-лок
InpHedgeMultiplier Множитель хедж-лота — Множитель для расчёта лота хедж-позиции от общего лота направления
InpUseTimeFilter Временной фильтр — Включает или отключает ограничение торговли по часам
InpStartHour Начальный час — Час начала торговой сессии
InpEndHour Конечный час — Час окончания торговой сессии
InpTradeFriday Торговля в пятницу — Разрешает или запрещает торговлю в пятницу
InpUseHtfFilter Фильтр высшего таймфрейма — Включает или отключает фильтр тренда на высшем таймфрейме
InpHtfPeriod Таймфрейм фильтра — Таймфрейм для расчёта фильтра тренда
InpHtfMaPeriod Период MA фильтра — Период скользящей средней на высшем таймфрейме
InpUseATR Динамическое расстояние (ATR) — Включает или отключает расчёт расстояния между позициями через ATR
InpAtrPeriod Период ATR — Период индикатора ATR
InpAtrMultiplier Множитель ATR — Множитель ATR для расчёта базового расстояния между позициями
InpMinDistance Минимальное расстояние — Минимальное расстояние между позициями в пунктах
InpMaxDistance Максимальное расстояние — Максимальное расстояние между позициями в пунктах
InpLotInitial Начальный лот — Лот первой позиции в сетке
InpStaticDistance Статическое расстояние — Базовое расстояние между позициями в пунктах при отключённом ATR
InpDistMultiplier Множитель расстояния — Множитель экспоненциального увеличения расстояния между позициями
InpTakeProfit Тейк-профит — Тейк-профит позиций сетки в пунктах
InpLotAddStep Шаг увеличения лота — Приращение лота при добавлении каждой новой позиции
InpGridStepCount Шагов сетки — Количество позиций, после которого увеличивается лот на один шаг
InpDailyTarget Дневной таргет — Целевая дневная прибыль в долларах для продолжения открытия новых сеток
InpUseBasketTP Тейк-профит корзины — Включает или отключает управление корзиной позиций по целевой прибыли
Shu summaga yetganda Trail boshlanadi (InpBasketTarget) Цель корзины — Целевая прибыль корзины в долларах для активации трейлинга
Foydani surib borishni yoqish (InpUseTrailBasket) Трейлинг корзины — Включает или отключает динамический трейлинг корзины с фиксацией прибыли
Minimal orqaga qaytish ($) (Kichik foydalar uchun) (InpBasketTrailStep) Шаг трейлинга корзины — Минимальный шаг отката для трейлинга корзины в долларах
YANGI: Maks foydaning necha foizi tushganda yopilsin? (Dinamik) (InpBasketTrailPercent) Процент трейлинга — Процент от максимальной прибыли корзины для динамического отката трейлинга
InpLeaveRunner Оставлять бегущую — Оставляет ли одну позицию с трейлинг-стопом при закрытии корзины
InpRunnerTrailStop Трейлинг-стоп бегущей — Расстояние трейлинг-стопа для бегущей позиции в пунктах
InpMaxLossPercent Макс. убыток от депозита — Процент максимального убытка от депозита для аварийного закрытия всех позиций
Получить полный код

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

#property strict
#property description "TITAN NO LOSS ULTIMATE - Professional Grid EA"
#property description "Telegram: "
#property description "Dasturchi: xxj"
#include <Trade\Trade.mqh>

CTrade trade;

const datetime Internal_Expiry = D'2027.04.15 23:59';

input group "=== HEDGE LOCK (ZARARNI QULFLASH) ==="
input bool     InpUseHedgeLock   = true;      
input int      InpHedgeTrigger   = 5;         
input double   InpHedgeMultiplier= 1.5;       

input group "=== VAQT FILTRI (TIME FILTER) ==="
input bool     InpUseTimeFilter  = true;      
input int      InpStartHour      = 2;         
input int      InpEndHour        = 21;        
input bool     InpTradeFriday    = false;     

input group "=== KATTA TREND FILTRI (HTF) ==="
input bool     InpUseHtfFilter   = true;      
input ENUM_TIMEFRAMES InpHtfPeriod = PERIOD_H4; 
input int      InpHtfMaPeriod    = 50;        

input group "=== DINAMIK GRID (ATR) ==="
input bool     InpUseATR         = true;      
input int      InpAtrPeriod      = 14;        
input double   InpAtrMultiplier  = 1.0;       
input int      InpMinDistance    = 500;       
input int      InpMaxDistance    = 3000;      

input group "=== GRID SOZLAMALARI ==="
input double   InpLotInitial     = 0.01;      
input int      InpStaticDistance = 1500;      
input double   InpDistMultiplier = 1.3;       
input int      InpTakeProfit     = 1000;      

input group "=== SEKIN O'SUVCHI LOT ==="
input double   InpLotAddStep     = 0.01;      
input int      InpGridStepCount  = 10;        

input group "=== KUNLIK TARGET VA BASKET TP ==="
input double   InpDailyTarget    = 20.0;      
input bool     InpUseBasketTP    = true;      
input double   InpBasketTarget   = 5.0;       // Shu summaga yetganda Trail boshlanadi
input bool     InpUseTrailBasket = true;      // Foydani surib borishni yoqish
input double   InpBasketTrailStep= 1.0;       // Minimal orqaga qaytish ($) (Kichik foydalar uchun)
input double   InpBasketTrailPercent= 20.0;   // YANGI: Maks foydaning necha foizi tushganda yopilsin? (Dinamik)
input bool     InpLeaveRunner    = true;      
input int      InpRunnerTrailStop= 400;       

input group "=== RISK BOSHQARUVI ==="
input double   InpMaxLossPercent = 10.0;      
input int      InpMagic          = 5658;

ulong RunnerTickets[]; 
ENUM_POSITION_TYPE NextTradeDirection = POSITION_TYPE_BUY; 
int atrHandle; 
int htfMaHandle; 
ulong HedgeMagic; 
double MaxBasketProfit = 0; 

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

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

bool IsTradingAllowedByTime() {
    if(!InpUseTimeFilter) return true;
    MqlDateTime tm;
    TimeToStruct(TimeCurrent(), tm);
    if(!InpTradeFriday && tm.day_of_week == 5) return false;
    if(tm.hour < InpStartHour || tm.hour >= InpEndHour) return false;
    return true;
}

ENUM_POSITION_TYPE GetHTFTrend() {
    double maVal[1], closeVal[1];
    if(CopyBuffer(htfMaHandle, 0, 1, 1, maVal) > 0 && CopyClose(_Symbol, InpHtfPeriod, 1, 1, closeVal) > 0) {
        if(closeVal[0] > maVal[0]) return POSITION_TYPE_BUY;
        if(closeVal[0] < maVal[0]) return POSITION_TYPE_SELL;
    }
    return WRONG_VALUE;
}

double GetDailyProfit() {
    datetime startOfDay = iTime(_Symbol, PERIOD_D1, 0); 
    HistorySelect(startOfDay, TimeCurrent());
    double profit = 0;
    for(int i=0; i<HistoryDealsTotal(); i++) {
        ulong ticket = HistoryDealGetTicket(i);
        long m = HistoryDealGetInteger(ticket, DEAL_MAGIC);
        if(m == InpMagic || m == HedgeMagic) {
            profit += HistoryDealGetDouble(ticket, DEAL_PROFIT) + HistoryDealGetDouble(ticket, DEAL_COMMISSION) + HistoryDealGetDouble(ticket, DEAL_SWAP);
        }
    }
    return profit;
}

bool IsRunner(ulong ticket) {
    for(int i=0; i<ArraySize(RunnerTickets); i++) {
        if(RunnerTickets[i] == ticket) return true;
    }
    return false;
}

void ManageGrid(ENUM_POSITION_TYPE type, bool canStartNew) {
    int count = 0;
    double totalLot = 0, weightPrice = 0, lastPrice = 0;

    for(int i=PositionsTotal()-1; i>=0; i--) {
        ulong t = PositionGetTicket(i);
        if(PositionSelectByTicket(t) && PositionGetInteger(POSITION_MAGIC)==InpMagic && PositionGetInteger(POSITION_TYPE)==type && !IsRunner(t)) {
            count++;
            double lot = PositionGetDouble(POSITION_VOLUME);
            double open = PositionGetDouble(POSITION_PRICE_OPEN);
            totalLot += lot;
            weightPrice += open * lot;

            if(type==POSITION_TYPE_BUY) { 
                if(lastPrice==0 || open < lastPrice) lastPrice = open; 
            } else { 
                if(lastPrice==0 || open > lastPrice) lastPrice = open; 
            }
        }
    }

    double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    if(InpUseHedgeLock && count >= InpHedgeTrigger) {
        bool hedgeFound = false;
        ENUM_POSITION_TYPE hType = (type==POSITION_TYPE_BUY) ? POSITION_TYPE_SELL : POSITION_TYPE_BUY;

        for(int j=PositionsTotal()-1; j>=0; j--) {
            ulong t = PositionGetTicket(j);
            if(PositionSelectByTicket(t) && PositionGetInteger(POSITION_MAGIC)==HedgeMagic && PositionGetInteger(POSITION_TYPE)==hType) {
                hedgeFound = true; break;
            }
        }

        if(!hedgeFound) {
            double hedgeLot = NormalizeDouble(totalLot * InpHe

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

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

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

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

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

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

Стоимость полного кода
1 012,60₽ ≈ $12.38