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

psar.mq4

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

#__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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника для платформы MetaTrader 4, который использует индикатор Parabolic SAR для генерации сигналов на покупку и продажу. Советник сравнивает цену закрытия бара со значением SAR на текущем и предыдущем баре, определяя направление сделки.

Советник поддерживает два режима управления денежными средствами: расчёт лота на основе процента от баланса или фиксированный лот. Доступны параметры стоп-лосса и тейк-профита, а также тралинг-стоп на основе параболика с заданным отступом от точки SAR.

Реализован режим «Сейф», при котором при достижении первого стоп-лосса закрывается 50% позиции. Также имеется функция закрытия позиции по обратному сигналу SAR и стратегия усреднения с увеличением лота при достижении минимального шага убытка.

Советник обрабатывает события OnTick, OnTimer и OnChartEvent, использует торговые API MetaTrader для отправки ордеров и интегрирован с библиотекой sovetnikovNET для управления ордерами, а также с системой лицензирования EA Protect.

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

НастройкаОписание
InverseSignals Инвертирует сигналы параболика SAR: при покупке становится продажа и наоборот.
MM_Mode Режим управления денежными средствами: расчёт лота по процентному риску от баланса или использование фиксированного лота.
RiskSL Процент риска от баланса, используемый для расчёта размера лота при стоп-лоссе в режиме процентного управления рисками.
FixLot Фиксированный размер лота, используемый при ручном задании объёма позиции.
MaximumLot Верхний предел размера лота, который советник может использовать.
MaxOrders Максимальное количество одновременно открытых ордеров на символе.
TakeProfit Уровень тейк-профита в пунктах для открытых ордеров.
StopLoss Уровень стоп-лосса в пунктах для открытых ордеров.
Tral_SAR Включает тралинг-стоп на основе текущего значения индикатора Parabolic SAR с заданным отступом.
Tral_Offset Отступ от точки параболика SAR, используемый для расчёта уровня тралинг-стопа.
Safe При активации при достижении первого стоп-лосса закрывается 50% открытой позиции.
CloseBySignal При активации позиции автоматически закрываются противоположные ордера при получении обратного сигнала от параболика SAR.
CloseInProfitOnly При закрытии по обратному сигналу противоположные ордера закрываются только если они находятся в профите.
SAR_Step Начальный шаг ускорения индикатора Parabolic SAR.
SAR_Maximum Максимальное значение параметра ускорения индикатора Parabolic SAR.
AverageStrategy Включает стратегию усреднения по параболику: при достижении заданного минимального шага убытка лот увеличивается на множитель, а тейк-профит устанавливается для всех усреднённых ордеров.
StepMinimal Минимальный шаг убытка в пунктах, при достижении которого срабатывает стратегия усреднения.
LotMultiplicator Множитель лота, на который умножается текущий лот при усреднении позиции.
cmt Текстовый комментарий, добавляемый к ордерам советника.
Magic Магический номер для идентификации ордеров, открытых советником. Значение 0 позволяет подхватить ручные ордера.
tf Рабочий таймфрейм, на котором советник анализирует данные и генерирует сигналы.
Получить полный код

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

#property version   "1.11"
#property strict
const string VERSION="1.11"; //номер версии при обновлении меняем тоже, это на будущее когда будет доступна првоерка версий и обновления

/*
1.11
- добавил возможность если указать количество ордеров, то набирать ордер по направлению параболика на каждом баре.
1.10
- добавлена возможность указать направление торговли
*/

#define LICENSE_PANEL

#ifdef LICENSE_PANEL
const int ADMIN_ID=35;
const int PRODUCT_ID=67;//PSAR
#else
const int PRODUCT_ID=5570;//test ID берем из вкладки Дополнительно в товаре, либо EA Protect - > Продукты
#endif

#define POINTS_NEW
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Time.mqh>
#include <Indicators\Trend.mqh>

#include <EA_Protect/Protect.mqh>
SHOW_LICENSE_PARAMS
PROTECT_CREATE

enum mm_modes
  {
   MM_MODE_RISK_SL, //% at balance
   MM_MODE_FIXLOT, //Fix Lot
  };

TRADEMODE TradeMode=TRADEMODE_ALL; //Trade mode / Направление торговли
B InverseSignals=false; //Inverse signals / Инверсия сигналов
input mm_modes MM_Mode=MM_MODE_RISK_SL; //MM Mode / Режим ММ
D RiskSL=2; //% at balance / % от баланса
D FixLot=0.01; //Fix Lot / Фиксированный

D MaximumLot=100; //Maximum Lot / Максимальный лот
I MaxOrders=1; //Count open orders / Количество открытых ордеров
D TakeProfit=0; //Take Profit / Тейк профит
D StopLoss=200; //Stop Loss / Стоп лосс
B Tral_SAR=true; //Tral by SAR / Трал по параболику
D Tral_Offset=10; //Tral offset / Отступ от точки параболика
B Safe=true; //Safe (part close 50% at first SL) / Сейф, закрывает половину
B CloseBySignal=true; //Close by signal / Закрыть по обратному сигналу
B CloseInProfitOnly=false; //Close in profit only / Закрывать только если в профите
D SAR_Step=0.02; //Step / Шаг параболика
D SAR_Maximum=0.2; //Maximum / Максимум параболика

B AverageStrategy=false; //Strategy Avarage / Стратегия усреднения по параболику
D StepMinimal=200; //Minimal step / Минимальный шаг при усреднении по параболику
D LotMultiplicator=1.5; //Multiplicator lot / Множитель лота

S cmt=""; //Comment / Комментарий
I Magic=10000; // Magic / Меджик (0-подхватит ручные)
TF tf=PERIOD_CURRENT; //TF / Рабочий период
SIGNAL_BAR signal_bar=SIGNAL_BAR_OPEN; //Signal Bar / Сигнальный бар

/*
в начале кода подключаем и настраиваем на ID товара. ID берем из вкладки Дополнительно при создании товара, либо в EA Protect - Продукты
const int PRODUCT_ID=3265;//Index Scalper PRO MT4
const string VERSION="3.50"; //номер версии при обновлении меняем тоже, это на будущее когда будет доступна првоерка версий и обновления
#include <EA_Protect/Protect.mqh>
SHOW_LICENSE_PARAMS
PROTECT_CREATE

----
Данные макросы нужно встроить в указаные функции.

PROTECT_INIT - в функцию OnInit, инициализация
PROTECT_DEINIT в функцию OnDeinit, деинициализация
PROTECT_EVENT в функцию OnChartEvent, прием сообщений внутренних и резервный таймер
PROTECT_TIMER в функцию OnTimer, опрос по таймеру данных с сайта
статус защиты в любом месте можно получить через переменную PROTECT_STATUS
возвращает true - если все в порядке или false если проблемы. Статус при опросах пишет в журнал.

После компиляции компилируем дополнительно с помощью защиты от MQL5 Сервис - MQL5 Cloud Protector - это обязательно делать необходимо.

На сайт загружать все в архиве zip
желательно в архиве чтобы было все по папкам
MQL4 / MQL5
Experts
Indicators

*/

CGlobal m_global;

class CMyOrders: public COrders
  {
public:

   CiSAR             m_sar;
   virtual bool      OnInitIndicators()
     {
      m_sar.Create(_Symbol,tf,SAR_Step,SAR_Maximum);
      return true;
     }

   virtual bool      OnDeinitIndicators()
     {
      return true;
     }

   int               Signal(int iMaxOrders)
     {
      m_sar.Refresh();
      if(iMaxOrders==1)
        {
         if(iClose(m_name,tf,0+signal_bar)>m_sar.Main(0+signal_bar) && iClose(m_name,tf,1+signal_bar)<m_sar.Main(1+signal_bar))
            return OP_BUY;
         if(iClose(m_name,tf,1+signal_bar)>m_sar.Main(1+signal_bar) && iClose(m_name,tf,0+signal_bar)<m_sar.Main(0+signal_bar))
            return OP_SELL;
        }
        else{
         if(iClose(m_name,tf,0+signal_bar)>m_sar.Main(0+signal_bar))
            return OP_BUY;
         if(iClose(m_name,tf,0+signal_bar)<m_sar.Main(0+signal_bar))
            return OP_SELL;
        }
      return -1;
     }

   virtual bool      CloseByReverseSignal(int iop)
     {
      if(iop==-1)
         return false;
      if(m_all==0)
         return false;

      double dprofit=0;

      if(iop==OP_BUY)
        {
         if(CloseInProfitOnly)
           {
            dprofit=getProfit(OP_SELL,MODE_TRADES);
            if(dprofit>0)
               OrderCloseAll(OP_SELL);
           }
         else
            return OrderCloseAll(OP_SELL);
        }
      if(iop==OP_SELL)
        {
         if(CloseInProfitOnly)
           {
            dprofit=getProfit(OP_BUY,MODE_TRADES);
            if(dprofit>0)
               OrderCloseAll(OP_BUY);
           }
         else
            return OrderCloseAll(OP_BUY);
   

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

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

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

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

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

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

Стоимость полного кода
699,80₽ ≈ $8.55