titan no loss ultimate.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.