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