SMC v2.0
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smcj, fix.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник SMC v2.0 — торговый робот для MetaTrader 5, работающий на основе анализа тренда и скользящих средних. Система использует индикатор ATR для определения границ тренда и две скользящие средней для подтверждения направления рынка. При совпадении сигналов открываются несколько позиций с различными лотами и уровнями тейк-профита.
В советнике реализована система управления рисками: стоп-лосс рассчитывается на основе ATR с заданным множителем, а позиции открываются по нескольким уровням лотов. Доступна информационная панель, отображающая текущую цену, направление тренда, количество открытых позиций и статистику сделок.
Советник содержит встроенный механизм проверки срока действия с автоматическим закрытием всех позиций при истечении лицензии. Торговые операции выполняются через стандартный торговый API MetaTrader 5.
Настройки программы
| Настройка | Описание |
|---|---|
| Lot_P1 | Объём лота для первой торговой позиции. |
| Lot_P2 | Объём лота для второй торговой позиции. |
| Lot_P3 | Объём лота для третьей торговой позиции. |
| Lot_P4 | Объём лота для четвёртой торговой позиции. |
| Sensitivity | Чувствительность расчёта границ тренда, участвующая в формуле множителя ATR. |
| ATR_Period | Период индикатора ATR, используемого для расчёта границ тренда. |
| Factor | Множитель, участвующий в расчёте ширины границ тренда на основе ATR. |
| MA_Fast | Период быстрой простой скользящей средней для определения направления тренда. |
| MA_Slow | Период медленной простой скользящей средней для определения направления тренда. |
| Risk | Множитель риска, определяющий расстояние стоп-лосса от цены входа в долях ATR. |
| ATR_SL | Период индикатора ATR, используемого для расчёта уровня стоп-лосса. |
| TP1 | Множик тейк-профита для первого уровня закрытия позиции. |
| TP2 | Множик тейк-профита для второго уровня закрытия позиции. |
| TP3 | Множик тейк-профита для третьего уровня закрытия позиции. |
| ShowPanel | Переключатель отображения информационной панели с данными о торговле. |
Поиск по коду файла
#property version "2.00"
#property strict
#include <Trade\Trade.mqh>
CTrade trade;
#define MAGIC_NUMBER 200001
#define EXPIRY_DATE D'2026.03.10'
input group "=== POSITIONS ==="
input double Lot_P1 = 0.01;
input double Lot_P2 = 0.01;
input double Lot_P3 = 0.03;
input double Lot_P4 = 0.03;
input group "=== TREND SYSTEM ==="
input double Sensitivity = 1.0;
input int ATR_Period = 10;
input int Factor = 7;
input group "=== MOVING AVERAGES ==="
input int MA_Fast = 8;
input int MA_Slow = 9;
input group "=== RISK ==="
input double Risk = 3.0;
input int ATR_SL = 14;
input double TP1 = 1.0;
input double TP2 = 2.0;
input double TP3 = 3.0;
input group "=== DISPLAY ==="
input bool ShowPanel = true;
double prevTrend = 0, currTrend = 0;
int trendDir = 0;
double ma1 = 0, ma2 = 0;
double prevClose = 0;
datetime lastTime = 0;
int trades = 0, wins = 0, losses = 0;
string action = "Waiting";
bool expired = false;
static double sPrevUpper = 0;
static double sPrevLower = 0;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
Comment("");
Print("SMC Stopped | Trades: ", trades, " | Wins: ", wins, " | Losses: ", losses);
}
void OnTick()
{
// код доступен только после оплаты
}
bool UpdateTrend()
{
double atr[];
ArraySetAsSeries(atr, true);
int h = iATR(_Symbol, PERIOD_CURRENT, ATR_Period);
if(h == INVALID_HANDLE) return false;
if(CopyBuffer(h, 0, 0, 3, atr) < 3) return false;
double atrVal = atr[0];
double mult = Sensitivity * Factor;
MqlRates r[];
ArraySetAsSeries(r, true);
if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 3, r) < 3) return false;
double c = r[0].close;
double pc = r[1].close;
double upper = c + mult * atrVal;
double lower = c - mult * atrVal;
if(sPrevLower == 0) sPrevLower = lower;
if(sPrevUpper == 0) sPrevUpper = upper;
lower = (lower > sPrevLower || pc < sPrevLower) ? lower : sPrevLower;
upper = (upper < sPrevUpper || pc > sPrevUpper) ? upper : sPrevUpper;
prevTrend = currTrend;
if(prevTrend == sPrevUpper)
trendDir = c > upper ? -1 : 1;
else
trendDir = c < lower ? 1 : -1;
currTrend = (trendDir == -1) ? lower : upper;
sPrevUpper = upper;
sPrevLower = lower;
return true;
}
bool UpdateMAs()
{
double m1[], m2[];
ArraySetAsSeries(m1, true);
ArraySetAsSeries(m2, true);
int h1 = iMA(_Symbol, PERIOD_CURRENT, MA_Fast, 0, MODE_SMA, PRICE_CLOSE);
int h2 = iMA(_Symbol, PERIOD_CURRENT, MA_Slow, 0, MODE_SMA, PRICE_CLOSE);
if(h1 == INVALID_HANDLE || h2 == INVALID_HANDLE) return false;
if(CopyBuffer(h1, 0, 0, 1, m1) < 1) return false;
if(CopyBuffer(h2, 0, 0, 1, m2) < 1) reПоказано первые 50% кода (символов: 5420)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.