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

IGNITE v 1.0

ignite v1.0.0 fix.mq5

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

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 5, написанный на MQL5. Советник работает на текущем символе графика и использует объект CTrade и CPositionInfo из стандартной библиотеки Trade для совершения торговых операций. В коде присутствует обработчик OnTick, а также OnInit и OnDeinit. Советник анализирует ценовые данные и показания индикатора RSI, строит уровни на основе инструмента Фибоначчи и выставляет отложенные лимитные ордера.

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

НастройкаОписание
StopTradingTimeonFriday Время остановки торговли в пятницу — Время прекращения торговли в пятницу.
Start_trading Время начала торговли — Время начала торговли в течение дня.
End_trading Время окончания торговли — Время окончания торговли в течение дня.
Volume size (Lots) Объём лота — Начальный объём лота для первой позиции.
Multiplier Множитель лота — Множитель для расчёта объёма последующих позиций.
Initial_TakeProfit Начальный тейк-профит — Начальный размер тейк-профита в пунктах для открываемых позиций.
Min_pip Минимум пунктов — Минимальное расстояние в пунктах для построения уровней Фибоначчи.
Max_pip Максимум пунктов — Максимальное расстояние в пунктах для построения уровней Фибоначчи.
Over_Bought Уровень перекупленности — Уровень перекупленности индикатора RSI.
Over_Sold Уровень перепроданности — Уровень перепроданности индикатора RSI.
Limit_Zero_Profit Уровень нулевой прибыли — Выбор уровня Фибоначчи, при котором прибыль считается нулевой для целей управления позициями.
Fibo_first_tp Первый уровень Фибоначчи для тейк-профита — Значение первого уровня Фибоначчи, используемого для установки начального тейк-профита.
Fibo_1 Уровень Фибоначчи 1 — Значение первого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_2 Уровень Фибоначчи 2 — Значение второго уровня Фибоначчи для расчёта ценовых уровней.
Fibo_3 Уровень Фибоначчи 3 — Значение третьего уровня Фибоначчи для расчёта ценовых уровней.
Fibo_4 Уровень Фибоначчи 4 — Значение четвёртого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_5 Уровень Фибоначчи 5 — Значение пятого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_6 Уровень Фибоначчи 6 — Значение шестого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_7 Уровень Фибоначчи 7 — Значение седьмого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_8 Уровень Фибоначчи 8 — Значение восьмого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_9 Уровень Фибоначчи 9 — Значение девятого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_10 Уровень Фибоначчи 10 — Значение десятого уровня Фибоначчи для расчёта ценовых уровней.
Fibo_11 Уровень Фибоначчи 11 — Значение одиннадцатого уровня Фибоначчи для расчёта ценовых уровней.
TimeFrame Таймфрейм — Таймфрейм, используемый для расчёта индикатора RSI.
Push_Notification Push-уведомления — Включает или отключает отправку push-уведомлений при создании объекта Фибоначчи.
Alert_Message Всплывающее оповещение — Включает или отключает всплывающее окно Alert при создании объекта Фибоначчи.
MagicNumber Магическое число — Уникальный идентификатор (магическое число) для ордеров и позиций советника.
PERIOD Период RSI — Период усреднения индикатора RSI.
Получить полный код

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

/*+--------------------------MTLicense Block1------------------------+*/
/* product code */
string MTlic_ProductCode = "MONEYIST";

/* Title on the information display */
string MTlic_info_caption = "IGNITE v 1.0";

/* footer note on the information display */
string MTlic_info_footer = "Moneyist";

/* Heartbeat delay  (900=15min, 3600=1hour, 21600=6hours, 86400=1day) */
int    MTlic_heartbeat_delay = 7200;

/* Information display */
int    MTLic_DrawLabel_Ygap = 0;
int    MTLic_DrawLabel_Xgap = 0;
int    MTLic_DrawLabel_corner_anchor_right = 0;

#include <Trade\Trade.mqh>
#define MT_WMCMD_EXPERTS   32851
#define WM_COMMAND 0x0111
#define GA_ROOT    2

#property strict

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;

enum Order
  {
   Fibo2,
   Fibo3,
   Fibo4,
   Fibo5,
   Fibo6,
   Fibo7,
   Fibo8,
   Fibo9,
   Fibo10
  };

input string StopTradingTimeonFriday="14:00";
input string Start_trading="02:00";
input string End_trading="23:00";

input double Lots = 0.01; // Volume size
input double Multiplier = 1.8;
input double Initial_TakeProfit = 7;
double StopLoss = 0.0;
input double Min_pip = 1;
input double Max_pip = 35;
input double Over_Bought = 70;
input double Over_Sold = 30;
input Order  Limit_Zero_Profit = Fibo9;
input double Fibo_first_tp = 0.38;
input double Fibo_1 = 1.0;
input double Fibo_2 = 1.5;
input double Fibo_3 = 2.0;
input double Fibo_4 = 2.5;
input double Fibo_5 = 3.0;
input double Fibo_6 = 4.0;
input double Fibo_7 = 5.0;
input double Fibo_8 = 6.0;
input double Fibo_9 = 7.0;
input double Fibo_10 = 8.0;
input double Fibo_11 = 9.0;
input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;

input bool Push_Notification = false;
input  bool Alert_Message = false;

input int MagicNumber = 1551;
double Bid, Ask;

datetime openingTime;
long openingTimeSeconds;

string strs,level[],level_fibo[15];
int    Data, count_level;

ulong lastTicket;
int Numerade;
int NumeradeProfit;
int Slipage = 1;
int LastDeal;
bool Agree;

CTrade trade;

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

void OnDeinit(const int reason)
  {

   /*+--------------------------MTLicense Block4------------------------+*/
   ObjectsDeleteAll(0,"MTlic_");
   Comment("");
   /*+--------------------------MTLicense Block4------------------------+*/

   Comment(" ");

  }

string TimeToPreviousFiveMinutesString(datetime time)
  {
   MqlDateTime mqlTime;
   TimeToStruct(time, mqlTime);
   int minutes = (mqlTime.min / 5) * 5;
   mqlTime.min = minutes;
   datetime roundedTime = StructToTime(mqlTime);
   return TimeToString(roundedTime, TIME_DATE|TIME_MINUTES);
  }

double  target,balance;
static datetime reorder;
int counter = 0;
double point;

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

double TakeBuy, TakeSell;
datetime timex;

void order(int type, int from)
  {
   double LOT;
   if(OpenPos() == 0)
     {
      LOT = Lots;
     }
   else
     {
      LOT = Lot[OpenPos()];
     }

   TakeBuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + Initial_TakeProfit*pips(),_Digits);
   TakeSell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID) - Initial_TakeProfit*pips(),_Digits);
   MqlTradeRequest requestBuy= {};
   requestBuy.action=TRADE_ACTION_DEAL;
   requestBuy.magic=MagicNumber;                  // ORDER_MAGIC
   requestBuy.symbol=_Symbol;
   requestBuy.volume=LOT;
   requestBuy.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   requestBuy.sl=0;                            // Stop Loss
   requestBuy.tp=TakeBuy;
   requestBuy.type=ORDER_TYPE_BUY;
   MqlTradeResult resultBuy= {};

   MqlTradeRequest requestSell= {};
   requestSell.action=TRADE_ACTION_DEAL;
   requestSell.magic=MagicNumber;                  // ORDER_MAGIC
   requestSell.symbol=_Symbol;
   requestSell.volume=LOT;
   requestSell.price = SymbolInfoDouble(_Symbol,SYMBOL_BID); ;
   requestSell.sl=0;                            // Stop Loss
   requestSell.tp=TakeSell;                                // Take Profit
   requestSell.type=ORDER_TYPE_SELL;
   MqlTradeResult resultSell= {};

   if(timex != iTime(_Symbol, 0, 0))
     {
      if(type==1)
        {
         if(!OrderSend(requestSell,resultSell))
            PrintFormat("OrderSend error %d",GetLastError());
         else
           {
            timex = iTime(_Symbol, 0, 0);
            if(cektime2 != iTime(_Symbol, 0, 0))
              {
               cektime2 = iTime(_Symbol, 0, 0);
               tim      = iTime(_Symbol, PERIOD_M1, 0);

              }

            if(from==0)
               fib = true;
           }
        }
      if(type==0)
        {
         if(!OrderSend(requestBuy,resultBuy))
            PrintFormat("OrderSend error %d",GetLastError());
         else
           {
            timex = iTime(_Symbol, 0,0);
            if(cektime1 != iTime(_Symbol, 0, 0))
              {
               cektime1 = iTime(_Symbol, 0, 0);
               tim = iTime(_Symbol, PERIOD_M1, 0);
              }
            if(from==0)
               fib = true;
           }
        }
     }
  }

void order_limit(int type)
  {

   double tp;

   if(type == 0)
      tp = NormalizeDouble(Level[0] - point, _Digits);
   else
      tp = NormalizeDouble(Level[0] + point, _Digits);

   int lou = 1;
   while(lou < 11)
     {
      if(type == 0)
        {

         tp = NormalizeDouble(Level[lou]-point,_Digits);
         if(!trade.OrderOpen(_Symbol,ORDER_TYPE_BUY_LIMIT,Lot[lou], Level[lou+1],Level[lou+1], 0, tp,0,0))
           {
            Sleep(100);
            trade.OrderOpen(_Symbol,ORDER_TYPE_BUY_LIMIT,Lot[lou], Level[lou+1],Level[lou+1], 0, tp,0,0);
           }
        }
      else
        {
         tp = NormalizeDouble(Level[lou]+point,_Digits);
         if(!trade.OrderOpen(_Symbol,ORDER_TYPE_SELL_LIMIT,Lot[lou],Level[lou+1],Level[lou+1], 0, tp,0,0))
           {
            Sleep(100);
            trade.OrderOpen(_Symbol,ORDER_TYPE_SELL_LIMIT,Lot[lou],Level[lou+1],Level[lou+1], 0, tp,0,0);
           }
        }
      lou++;
     }
   Sleep(200);
   modif(tp);

  }

void close_position()
  {

   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
         if(m_position.Symbol()==_Symbol && m_position.Magic()==MagicNumber)
            m_trade.PositionClose(m_position.Ticket()); // close a position by the specified symbol
  }

void close_pos()
  {
   for(int i = PositionsTotal() - 1; i >= 0; i--)
     {
      ResetLastError();
      PositionSelectByTicket(PositionGetTicket(i));
      if(PositionGetInteger(POSITION_MAGIC) == MagicNumber && PositionGetString(POSITION_SYMBOL) == _Symbol)
        {
         if(trade.PositionClose(PositionGetTicket(i)))
           {
            flag = -1;
           }
         else
            close_position();
         Print("Error", GetLastError());
        }
     }
   closepend();
  }

void closepend()
  {
   MqlTradeRequest req = {};
   MqlTradeResult  res = {};

   int orders = OrdersTotal();
   req.action = TRADE_ACTION_REMOVE;

   for(int i = orders - 1; i >= 0 ;i--)
     {
      req.order  = OrderGetTicket(i);
      if(OrderGetString(ORDER_SYMBOL) == _Symbol)
        {
         ResetLastError();
         if(!OrderSend(req,res))
           {
            Print("Fail to delete ticket ",req.order,": Error ",GetLastError(),", retcode = ",res.retcode);
           }
         else
           {
            flag = -1;
           }
        }
     }

  }

void history()
  {
   int deals=HistoryOrdersTotal();
   if(deals>0)
     {
      ulong last_deal_ticket=HistoryOrderGetTicket(deals-1);
      if(last_deal_ticket>0)
        {
         ENUM_ORDER_TYPE deal_type=(ENUM_ORDER_TYPE)HistoryOrderGetInteger(last_deal_ticket, ORDER_TYPE);
         if(deal_type==ORDER_TYPE_BUY)
           {
            LastDeal = 1;
           }
         else
            if(deal_type==ORDER_TYPE_SELL)
              {
               LastDeal = 0;
              }
        }
     }
  }

datetime tim;

input int PERIOD = 14;
int flag;
void signal_RSI()
  {
   double indi [];

   int indicator_handle2 = iRSI(_Symbol, TimeFrame, PERIOD, PRICE_CLOSE);
   flag = -1;

   if(indicator_handle2 == INVALID_HANDLE)
     {
      Print("Error creating indicator handle");
      return;
     }

   int copied_2 = CopyBuffer(indicator_handle2, 0, 0, 2, indi);

   if(indi[1] >= Over_Bought)
     {
      flag = 1;
      info3 = DoubleToString(indi[1],1);

     }
   if(indi[1] <= Over_Sold)
     {
      flag = 0;
      info3 = DoubleToString(indi[1],1);

     }
  }

double RSI()
  {
   double indi [];
   int indicator_handle2 = iRSI(_Symbol, TimeFrame, PERIOD, PRICE_CLOSE);
   if(indicator_handle2 == INVALID_HANDLE)
     {
      Print("Error creating indicator handle");

     }
   else
     {

      int copied_2 = CopyBuffer(indicator_handle2, 0, 0, 2, indi);

     }
   return(indi[1]);

  }

void check_RSI(int type)
  {
   double indi [];
   int indicator_handle2 = iRSI(_Symbol, TimeFrame, 14, PRICE_CLOSE);
   if(indicator_handle2 == INVALID_HANDLE)
     {
      Print("Error creating indicator handle");
      return;
     }

   int copied_2 = CopyBuffer(indicator_handle2, 0, 0, 2, indi);

   if(indi[1] > Over_Bought && flag == 0 && AccountInfoDouble(ACCOUNT_PROFIT) >0)
     {
      flag = -1;
      close_pos();
     }
   if(indi[1] < Over

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

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

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

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

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

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

Стоимость полного кода
1 619₽ ≈ $19.79