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

SMC v2.0

smcj, fix.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник 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 и перейдите к оплате.

Стоимость полного кода
542₽ ≈ $6.63