← Назад к списку файлов

psar.mq4

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

#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 и нажмите кнопку, чтобы перейти к оплате.