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

tradingaverage ea.mq4

Вы автор или правообладатель?

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

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

О программе

Данный исходный код представляет собой торгового советника для платформы MetaTrader 4, написанный на языке MQL4. Советник использует библиотеки из пакета sovetnikovGUI для работы с ордерами, отображения интерфейса и проверки времени. Он управляет позициями по направлениям BUY и SELL, поддерживает фиксированный стоп-лосс, тейк-профит и увеличение объёма позиции по заданному множителю при достижении определённого уровня убытка. Также реализована временная фильтрация для открытия сделок и графический интерфейс с кнопками управления на графике.

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

НастройкаОписание
slippage Проскальзывание — Допустимое проскальзывание при исполнении ордеров в пунктах; 0 означает отключение проверки.
Magic Магический номер — Идентификатор ордеров, открытых данным советником, для их последующей фильтрации и управления.
Start Lot (fix_lot) Начальный лот — Начальный объём позиции при открытии новой сделки.
Lot Multiplicator (LotMultiplicator) Множитель лота — Коэффициент, на который умножается текущий объём лота при увеличении позиции.
TP (takeprofit) Тейк-профит — Уровень фиксации прибыли в пунктах; автоматически адаптируется для 5-знаковых инструментов.
Step (step) Шаг увеличения — Пороговое значение убытка в пунктах, при достижении которого происходит увеличение объёма позиции.
Time Use (Time_Use) Использовать время — Включает или отключает фильтрацию сделок по времени открытия.
Time Open (Time_Open) Время открытия — Время, в которое советник проверяет возможность открытия новых позиций (формат ЧЧ:ММ).
Получить полный код

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

#property version   "1.00"
#property strict
#include <sovetnikovGUI\Orders.mqh>
#include <sovetnikovGUI\Time.mqh>
#include <sovetnikovGUI\Button.mqh>

I slippage=0;

I Magic=0;

D fix_lot=0.02; //Start Lot

D LotMultiplicator=1.6; //Lot Multiplicator

D takeprofit=14; //TP

D step=8.5; //Step

B Time_Use=true; //Time Use

S Time_Open="18:00"; //Time Open

class CMyOrders: public COrders
  {
public:

  };

class CMain: public CMainDefault
  {
protected:
   CMyOrders         m_main;
   CTime             m_time;
   SNButton          m_buy,m_sell,m_closeall;
public:
   virtual int OnInit()
     {
      // код доступен только после оплаты
   }

   virtual void OnDeinit(const int reason)
     {

      m_main.OnDeinit();
      m_buy.Destroy();
      m_sell.Destroy();
      m_closeall.Destroy();
     }

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

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

      m_main.OnTick();
      m_main.Update(); //получим кол-во ордеров в структуре orders

      if(m_main.m_all==0 && Time_Use){

         if(m_time.time_checking(Time_Open)){
            OnOpen(OP_BUY);
            OnOpen(OP_SELL);
         }

      }

      CreateInterface();

      TESTER_EVENT_CLICK(m_buy,OnOpen(OP_BUY));
      TESTER_EVENT_CLICK(m_sell,OnOpen(OP_SELL));
      TESTER_EVENT_CLICK(m_closeall,OnCloseAll());

      long t;

      t=m_main.getLastOrderTicket(OP_BUY,ORDER_DN);

      if(m_main.OrderSelect(t))
        {

         double dopen=m_main.OrderOpenPrice();
         double dtake=m_main.OrderTakeProfit();
         double dpt=m_main.OrderStep();

         if(dpt<=-step)
           {
            double dnextlot=NLot(m_main.OrderLots()*LotMultiplicator);

            long tt=m_main.OrderSend(OP_BUY,dnextlot,-1,0,0);

            if(m_main.OrderSelect(tt))
              {

               dopen=m_main.OrderOpenPrice();
               dtake=m_main.OrderTakeProfit();
              }

           }

         if(dtake==0.0 && takeprofit>0)
           {
            dtake=nd(dopen+takeprofit*m_main.p);
           }

         if(dtake>0) m_main.SetAll(OP_BUY,-1,dtake,false,true);
        }

      t=m_main.getLastOrderTicket(OP_SELL,ORDER_UP);

      if(m_main.OrderSelect(t))
        {

         double dopen=m_main.OrderOpenPrice();
         double dtake=m_main.OrderTakeProfit();
         double dpt=m_main.OrderStep();

         if(dpt<=-step)
           {
            double dnextlot=NLot(m_main.OrderLots()*LotMultiplicator);

            long tt=m_main.OrderSend(OP_SELL,dnextlot,-1,0,0);

            if(m_main.OrderSelect(tt))
              {

               dopen=m_main.OrderOpenPrice();
               dtake=m_main.OrderTakeProfit();
              }

           }

         if(dtake==0.0 && takepr

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

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

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

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

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

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

Стоимость полного кода
381,20₽ ≈ $4.66