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

ilan dynamic new.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

Советник поддерживает работу в двух направлениях — покупку и продажу — и позволяет ограничивать количество одновременно открытых позиций для каждого направления. Встроена система управления размером лотов с возможностью их увеличения при открытии последующих позиций в рамках одной серии.

Для фильтрации входов в позиции используется индикатор RSI с настраиваемыми верхней и нижней границами. Советник предоставляет несколько средств защиты: трейлинг-стоп, стоп по эквити и таймаут для зависших ордеров. Также реализована возможность ограничения торговли по заданному временному диапазону и на определённом таймфрейме.

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

НастройкаОписание
TradeMode (TradeMode) TradeMode — Режим работы советника (торговля лонг, шорт или оба направления)
Close and Stop (close_all_and_stop) close_all_and_stop — Логический переключатель для немедленного закрытия всех ордеров и остановки советника
cmt (cmt) cmt — Имя советника, отображаемое в комментарии к ордерам
Magic (MagicNumber) MagicNumber — Волшебное число для идентификации ордеров, открытых данным советником
Trade Time (work_time) work_time — Торговый временной диапазон, в пределах которого разрешено открытие позиций
LotExponent (LotExponent) LotExponent — Степень, на которую возводится множитель при увеличении лота для каждого следующего колена серии
DefaultPips (DefaultPips) DefaultPips — Шаг между выставлением новых колен при выключенном динамическом расчёте
DinamicPips (DynamicPips) DynamicPips — Переключатель динамического расчёта шага на основе ценового диапазона
Glubina Glubina — Количество баров, используемых для расчёта ценового диапазона
DEL DEL — Делитель, используемый при расчёте шага между коленами серии позиций
Lot (Lots) Lots — Начальный лот для открытия первой позиции
TakeProfit (TakeProfit) TakeProfit — Уровень прибыли в пунктах для закрытия сделки
StopLoss Maximum (Stoploss) Stoploss — Максимальный стоп-лосс от точки безубытства
Open NewBar Use (NewBarUse) NewBarUse — Переключатель открытия сделок только на открытии нового бара
Equity Stop Use (UseEquityStop) UseEquityStop — Переключатель стопа по эквити
Total Equity Risk (TotalEquityRisk) TotalEquityRisk — Процент эквити, при превышении убытка которого срабатывает стоп по эквити
Trailing Use (UseTrailingStop) UseTrailingStop — Переключатель трейлинг-стопа
Trailing Start (TrailStart) TrailStart — Уровень прибыли в пунктах, при достижении которого включается трейлинг-стоп
Trailing Stop (TrailStop) TrailStop — Отступ трейлинг-стопа в пунктах от текущей цены
Timeout order use (UseTimeOut) UseTimeOut — Переключатель таймаута для закрытия зависших ордеров
Max Trade Open Hours (MaxTradeOpenHours) MaxTradeOpenHours — Максимальное время нахождения сделки в открытом состоянии в часах до принудительного закрытия
TF (tf) tf — Рабочий временной период для анализа ценовых данных
RSI Signal Use (UseSignals) UseSignals — Переключатель использования сигналов RSI для фильтрации входов
RSI TF (rsi_tf) rsi_tf — Таймфрейм для расчёта индикатора RSI
RSI Period (rsi_period) rsi_period — Период расчёта индикатора RSI
RSI Minimum (RsiMinimum) RsiMinimum — Нижняя граница RSI для допустимых сигналов на покупку
RSI Maximum (RsiMaximum) RsiMaximum — Верхняя граница RSI для допустимых сигналов на продажу
Max Trades (MaxTrades) MaxTrades — Максимальное количество одновременно открытых ордеров в каждом направлении
Получить полный код

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

#property version   "2.00"
#property strict
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Time.mqh>
input ENUM_TRADEMODE  TradeMode=TRADEMODE_ALL; //TradeMode

B close_all_and_stop=false; //Close and Stop

S cmt="Ilan New";//cmt

input int MagicNumber=2019; //Magic

S work_time="00:00-24:00"; //Trade Time

D LotExponent=1.56;//LotExponent

I DefaultPips=12;//DefaultPips

B DynamicPips=true; //DinamicPips

I Glubina=24;

I DEL=3;

D Lots=0.01; //Lot

D TakeProfit=10.0; //TakeProfit

D Stoploss=0.0; //StopLoss Maximum

B NewBarUse=true; //Open NewBar Use

B UseEquityStop=false; //Equity Stop Use

D TotalEquityRisk=20.0; //Total Equity Risk

B UseTrailingStop=true; //Trailing Use

D TrailStart=10.0; //Trailing Start

D TrailStop=10.0; //Trailing Stop

B UseTimeOut=false; //Timeout order use

I MaxTradeOpenHours=48; //Max Trade Open Hours

TF tf=PERIOD_M15; //TF

B UseSignals=true; //RSI Signal Use

TF rsi_tf=PERIOD_M15; //RSI TF

I rsi_period=14; //RSI Period
D RsiMinimum=0.0;    //RSI Minimum

D RsiMaximum= 100.0;    //RSI Maximum

I MaxTrades=10; //Max Trades

datetime tm_bar=0;
double AccountEquityHighAmt=0,PrevEquity=0;
double last_avg=0;

class CMyOrders: public COrders
  {
public:

  };

class CMain: public CMainDefault
  {
protected:
   CMyOrders         m_main;
   CNewBar           m_bar;
   CDraw             m_draw;
   CTime             m_time;

public:
   virtual int       OnInit()
     {
      // код доступен только после оплаты
   }

   virtual void      OnDeinit(const int reason)
     {
      m_main.OnDeinit();
      m_draw.OnDeinit();
      HideTestIndicators(false);
     }

   virtual void      OnTick()
     {
      // код доступен только после оплаты
   }

      if(!m_main.IsWork())
         return; //торговля не разрешена

      m_main.OnTick();

      if(close_all_and_stop)
        {
         if(m_main.m_all>0)
            m_main.OrderCloseAll(ALL);

         return;
        }

      double dPipStep=0;
      double _Ask=m_main._Ask;
      double _Bid=m_main._Bid;

      if(DynamicPips)
        {
         double hival=iHigh(_Symbol,tf,iHighest(_Symbol,tf,MODE_HIGH,Glubina,1));    // calculate highest and lowest price from last bar to 24 bars ago
         double loval=iLow(_Symbol,tf,iLowest(_Symbol,tf,MODE_LOW,Glubina,1));       // chart used for symbol and m_time period

         dPipStep=NormalizeDouble((hival-loval)/DEL/m_main.p,1);         // calculate pips for spread between orders

         if(dPipStep<DefaultPips)
            dPipStep=NormalizeDouble(DefaultPips,1);
        }
      else
        {

         dPipStep=DefaultPips;
        }

      if(UseEquityStop && TotalEquityRisk>0)
        {
         double CurrentPairProfit=m_main.getProfit(ALL);

         if(CurrentPairProfit<0.0 && MathAbs(CurrentPairProfit)>TotalEquityRisk/100.0*AccountEquityHigh())
           {
            Print("Closed All due to StopOut Total Equity Risk");
            m_main.OrderCloseAll(ALL);
            return;
           }
        }

      if(UseTimeOut && MaxTradeOpenHours>0)
        {
         for(int i=::OrdersTotal()-1; i>=0; i--)
           {

            if(!::OrderSelect(i,SELECT_BY_POS))
               continue;
            if(::OrderMagicNumber()==MagicNumber && ::OrderSymbol()==_Symbol)
              {
               if((int)((TimeCurrent()-::OrderOpenTime())/3600)>=MaxTradeOpenHours)
                 {
                  m_main.OrderClose(::OrderTicket());
                 }
              }
           }
        }

      if(m_main.m_all==0)
         last_avg=0;

      int direct=0;
      ulong t=0;
      double avg=0;

      if(UseTrailingStop && TrailStop>0)
        {
         if(m_main.orders[OP_BUY]>0)
           {
            m_main.SetAll_AverageTrailing(OP_BUY,TakeProfit,TrailStart,TrailStop,0,true);
           }

         if(m_main.orders[OP_SELL]>0)
           {
            m_main.SetAll_AverageTrailing(OP_SELL,TakeProfit,TrailStart,TrailStop,0,true);
           }
        }//tral

      bool bNew=(tm_bar!=iTime(_Symbol,tf,0) && tm_bar!=0);
      if(tm_bar==0)
         tm_bar=iTime(_Symbol,tf,0);

      double drsi=iRSI(_Symbol,rsi_tf,rsi_period,PRICE_CLOSE,0);

      bool bLong=((drsi<=RsiMaximum && UseSignals) || !UseSignals);
     

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

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

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

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

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

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

Стоимость полного кода
594,40₽ ≈ $7.26