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

sn simple average.mq4

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

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

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

О программе

Продукт представляет собой торговый советник (Expert Advisor) для MetaTrader 4, написанный на языке MQL4. Он обеспечивает управление ордерами через интерактивные кнопки на графике и реализует стратегию усреднения позиций с автоматическим увеличением лота при удалении цены в сторону убытка.

Советник позволяет открывать позиции BUY и SELL с фиксированным лотом или с расчётом размера по проценту от баланса. Доступна настройка тейк-профита как в пунктах, так и в процентах от баланса счёта. При достижении заданной прибыли все открытые позиции закрываются автоматически.

Визуальный интерфейс включает кнопки BUY, SELL и CLOSE ALL, а также горизонтальные линии уровней тейк-профита на графике. Текущая прибыль в процентах от баланса отображается через комментарий. Продукт использует библиотеку sovetnikovNET для управления ордерами и включает систему защиты лицензии.

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

НастройкаОписание
Dry (Dry) Dry — Логический переключатель режима (Dry).
Risk % (inp_risk) Risk % — Процент риска от баланса для расчёта размера лота при открытии позиций.
Start Lot (inp_fix_lot) Start Lot — Начальный фиксированный размер лота для открытия позиций.
Lot Multiplicator (inp_LotMultiplicator) Lot Multiplicator — Множитель лота для открытия следующего ордера при усреднении.
TakeProfit in point (inp_takeprofit) TakeProfit in point — Уровень тейк-профита в пунктах для закрытия позиций.
Take Profit in % (inp_profit) Take Profit in % — Процент прибыли от баланса, при достижении которого все позиции закрываются.
Step next order (inp_step) Step next order — Расстояние в пунктах, при котором открывается следующий ордер с увеличенным лотом.
Magic (inp_Magic) Magic — Магический номер для идентификации ордеров советника.
Получить полный код

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

#property version   "1.00"
#property strict

#define POINTS_NEW
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Time.mqh>
#include <Controls\Button.mqh>

const int PRODUCT_ID=9938;//AUTO-DRAFT
const string VERSION="1.00";

#include <EA_Protect/Protect.mqh>
SHOW_LICENSE_PARAMS
PROTECT_CREATE

int slippage=0;

B Dry=false; //Dry

D inp_risk=0; //Risk %
D inp_fix_lot=0.01; //Start Lot

D inp_LotMultiplicator=2; //Lot Multiplicator
I inp_takeprofit=100; //TakeProfit in point
D inp_profit=5; //Take Profit in %
D inp_step=200; //Step next order
I inp_Magic=0; //Magic

class CMyOrders: public COrders
  {
public:

  };

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

   virtual void      OnDeinit(const int reason)
     {

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

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

      bool bwork=m_main.IsWork();

      m_main.OnTick();

      CreateInterface();

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

      if(inp_profit>0 && AccountBalance()>0)
        {
         double dprofit=m_main.getProfit(ALL);
         double dproc=NormalizeDouble(dprofit*100/AccountBalance(),3);

         if(dproc>=inp_profit && bwork)
           {
            m_main.OrderCloseAll();
           }

         Comment(StringFormat("Profit (%%): %.3f",dproc));
        }
      else
        {
         if(inp_profit>0)
            Comment("Balance is 0");
        }

      int idirect=0;
      double davg=m_main.get_Average(OP_BUY,idirect);

      if(idirect>0)
        {
         m_main.m_drawvirtual.DrawHLine(0,"buytp",0,iTime(_Symbol,0,1),davg+inp_takeprofit*m_main.p,1,STYLE_SOLID,clrBlue,false,false,"BUY TP",false);
         if(Bid>=davg+inp_takeprofit*m_main.p && bwork)
            m_main.OrderCloseAll(BUY|BUYLIMIT|BUYSTOP);
        }

      if(m_main.orders[OP_BUY]==0)
         m_main.m_drawvirtual.Delete(0,"buytp");

      davg=m_main.get_Average(OP_SELL,idirect);

      if(idirect<0)
        {
         m_main.m_drawvirtual.DrawHLine(0,"selltp",0,iTime(_Symbol,0,1),davg-inp_takeprofit*m_main.p,1,STYLE_SOLID,clrBlue,false,false,"SELL TP",false);
         if(Ask<=davg-inp_takeprofit*m_main.p && bwork)
            m_main.OrderCloseAll(SELL|SELLLIMIT|SELLSTOP);
        }

      if(m_main.orders[OP_SELL]==0)
         m_main.m_drawvirtual.Delete(0,"selltp");

      if(!bwork || !PROTECT_STATUS)
         return;

      ulong t;

      t=m_main.getLastOrderTicket(OP_BUY,ORDER_DN);

      if(m_main.OrderSelect(t))
        {

         double dpt=m_main.OrderStep();

         if(dpt<=-inp_step)
           {
            double dnextlot=NLot(m_main.OrderLots(

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

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

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

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

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

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

Стоимость полного кода
442,10₽ ≈ $5.40