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

kci_embeded_ea_sniper_ver_1.mq5

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

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

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

О программе

Данный продукт представляет собой торговый советник для MetaTrader 5, объединяющий собственный алгоритм KCI с индикатором WPR, фильтром тренда старшего таймфрейма и функцией управления стоп-лоссом. Советник анализирует ценовые и объёмные данные, формируя торговые сигналы для открытия позиций.

Основная логика работы основана на пользовательском индикаторе KCI, рассчитываемом через Z-Score анализ ценовых и объёмных рядов. Торговые решения принимаются только по появлению нового бара, при условии отсутствия открытых позиций и соблюдения ограничения по спреду.

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

Торговые операции выполняются через стандартный класс CTrade с указанием лота, цен входа, стоп-лосса и тейк-профита.

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

НастройкаОписание
InpLotSize Размер лота для открытия торговой позиции.
InpMaxSpread Максимально допустимый спред в пунктах для открытия сделки.
InpMagicNumber Идентификатор советника для маркировки управляемых позиций.
InpSlippage Допустимое отклонение цены при исполнении ордера в пунктах.
InpEDMultiplierSL Множитель для расчёта уровня стоп-лосса на основе энергии движения цены.
InpEDMultiplierTP Множитель для расчёта уровня тейк-профита на основе энергии движения цены.
InpUseTrailing Включение или отключение функции трейлинг-стопа.
InpTrailingStart Прибыль в пунктах, необходимая для активации трейлинг-стопа.
InpTrailingStep Шаг перемещения стоп-лосса при активном трейлинге в пунктах.
InpUseTrendFilter Включение или отключение фильтра тренда старшего таймфрейма.
InpTrendTF Таймфрейм для фильтра тренда старшего таймфрейма.
InpTrendPeriod Период скользящей средней для фильтра тренда старшего таймфрейма.
InpWPRPeriod Период расчёта индикатора WPR.
InpWPRBuyLevel Уровень WPR, при достижении которого разрешается открытие покупок.
InpWPRSellLevel Уровень WPR, при достижении которого разрешается открытие продаж.
ZScorePeriod Период для расчёта Z-Score при формировании сигналов KCI.
CompressionThreshold Пороговое значение для определения экстремума индикатора KCI.
BasePeriod Базовый период для расчёта ценовых параметров в алгоритме KCI.
Получить полный код

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

#property version     "1.0"
#property description "EA Standalone: Embedded KCI + WPR + Trend Filter + Trailing Stop"

#include <Trade\Trade.mqh>

input group "=== Trade & Execution Filter ==="
input double InpLotSize = 0.01;            
input int    InpMaxSpread = 200;           // Maximum allowed spread in points
input ulong  InpMagicNumber = 77720262;    
input int    InpSlippage = 10;             // Slippage tolerance

input group "=== Risk Management ==="
input double InpEDMultiplierSL = 1.5;      
input double InpEDMultiplierTP = 3.0;      
input bool   InpUseTrailing = true;        // Enable Trailing Stop
input int    InpTrailingStart = 500;        // Points in profit to start trailing
input int    InpTrailingStep = 200;         // Step to move SL

input group "=== Trend Filter (MTF) ==="
input bool   InpUseTrendFilter = false;     // Enable Higher Timeframe Trend Filter
input ENUM_TIMEFRAMES InpTrendTF = PERIOD_H4;
input int    InpTrendPeriod = 200;         // Moving Average Period

input group "=== WPR & KCI Settings ==="
input int    InpWPRPeriod = 14;            
input double InpWPRBuyLevel = -80.0;       
input double InpWPRSellLevel = -20.0;      
input int    ZScorePeriod = 50;         
input double CompressionThreshold = 2.0; 
input int    BasePeriod = 14;           

CTrade         trade;
int            handle_wpr, handle_trend;
datetime       last_bar_time = 0;
double         buf_wpr[], buf_trend[];

double         vq[], kd[], ed[], pv[], Raw_KCI[];

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

bool IsNewBar()
{
    datetime current_time = (datetime)SeriesInfoInteger(_Symbol, _Period, SERIES_LASTBAR_DATE);
    if(current_time != last_bar_time) { last_bar_time = current_time; return true; }
    return false;
}

double GetZScoreCustom(const double &data_array[], int start_index, int period)
{
    if(period < 2) return 0.0;
    double sum = 0.0, mean = 0.0, variance = 0.0, std_dev = 0.0;
    for(int i = 0; i < period; i++) sum += data_array[start_index + i];
    mean = sum / period;
    for(int i = 0; i < period; i++) variance += MathPow(data_array[start_index + i] - mean, 2);
    variance = variance / period;
    std_dev = MathSqrt(variance);
    if(std_dev == 0) return 0.0;
    return (data_array[start_index] - mean) / std_dev;
}

int GetEmbeddedKCISignal(double &out_ed)
{
    int total_bars = ZScorePeriod + BasePeriod + 10;
    double close[]; long tick_vol[];
    ArraySetAsSeries(close, true); ArraySetAsSeries(tick_vol, true);

    if(CopyClose(_Symbol, _Period, 0, total_bars, close) < total_bars) return 0;
    if(CopyTickVolume(_Symbol, _Period, 0, total_bars, tick_vol) < total_bars) return 0;

    for(int i = total_bars - BasePeriod - 1; i >= 1; i--)
    {
        double sum_price = 0, path_length = 0.000001;
        double net_dist = close[i] - close[i + BasePeriod];
        for(int j = 0; j < BasePeriod; j++) {
            sum_price += close[i + j];
            path_length += MathAbs(close[i + j] - c

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

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

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

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

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

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

Стоимость полного кода
558,60₽ ≈ $6.83