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

SN Simple Swing

sn simple swing.mq4
Вы автор или правообладатель?

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

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

О программе

SN Simple Swing — торговый советник для MetaTrader 4, предназначенный для ручного валютного трейдинга. Он отображает на графике кнопки BUY, SELL и CLOSE, через которые трейдер открывает и закрывает позиции. Размер лота рассчитывается на основе заданного риска и динамически вычисляемого расстояния стоп-лосса. При неблагоприятном движении открытой позиции на величину стоп-лосса советник автоматически открывает противоположную позицию с увеличенным лотом.

Советник выводит на график текущую информацию: дневной и месячный профит, текущий спред, уровень вариантного стоп-лосса, стартовый лот, значение Risk Manager Stop и кредитное плечо. Функция Equity Stop позволяет закрыть все ордера при достижении эквити заданного уровня.

Встроена проверка доступа к счёту с возможностью ограничения по списку разрешённых аккаунтов. Также в коде предусмотрены отключённые по умолчанию механизмы защиты по времени и ключу.

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

НастройкаОписание
comment Комментарий, присваиваемый к ордерам советника.
order_magic Магический номер для идентификации ордеров советника. 0 означает ручной режим.
risk Процент риска. Допустимые значения: 1, 2, 4, 8, 16, 32, 64, 128.
order_sl Процент стоп-лосса, используемый для расчёта размера лота и проверки спреда.
FONT_SIZE Размер текста кнопок в пунктах.
text_size Размер текста информационного блока в пунктах.
background_width Ширина фона информационного блока в пикселях.
RiskManager_Stop Уровень эквити для остановки торговли и закрытия всех ордеров при достижении указанного значения. Если равен 0 — функция отключена.
Получить полный код

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

/*
*/

/*
13.12
проверить работу с сериями ордеров  несколкьо по одной паре, гдето идет сбой с комментарием и последующим открытием следующего в серии. 
обрывает серию.

*/
#define MarketVersion

string serror="Invalid account! For purchase please write to 'd**n*@ya.ru'";

string _access[]=
  {
   "Gavrilin",
   "Koval",
   "Гратковский"
  };

#property version   "3.10"
#property description "This EA need for manual forex trading. The entry point you choose yourself on the work entrust adviser."
#property strict
#include <SovetnikovGUI\Button.mqh>
#include <SovetnikovGUI\Orders.mqh>

#ifdef AutoButton
#resource "\\Indicators\\SN ZZag.ex4"
#endif
/*
Правила торговли, торгует в течении дня пока не получит стоп. 
*/
S comment=""; //Comments

extern int   order_magic=0; //Magic (0-manual)

D  risk=1; //Risk (%)

D  order_sl=0.5; //SL %

I   FONT_SIZE=10; //Button Text Size (points)
I   text_size=10; //Text Size (points)

C   text_color=clrWhite; //Text Color
C   background_color=clrBlack; //Background Color
I   background_width=200; //Backgroud Width (pixels)

D  RiskManager_Stop=0; //Equity Stop (level equity $)

int     slippage=0;

#include <Controls\Button.mqh>

#define IDENT_LEFT1 (90)
#define IDENT_TOP1 (20)
#define BUTTON_SIZE (80)

#define COLOR_GREEN (clrLawnGreen)
#define NO_COLOR (clrGainsboro)

SNButton           m_buy,m_sell,m_close,m_auto;
double g_lot=0;
datetime tm=0;

int maxOrders=50;

class CMain: public COrders
  {

public:
   void Tick(int op,bool bPress=false)
     {
      string smb=_Symbol;
      m_name=smb;
      Update();
      double spread=GetSpread(_Symbol);
      double sl=getStop();
      double dlot=0;
      double drisk=risk;
      if(sl>0) dlot=getLotBySL(drisk,sl); 

      if(bPress)
        {

         if(dlot>0 && sl>0)
           {
            if(spread>=sl)
              {
               Alert("The spread is larger than stoploss, trade can not be continued.");
               return;
              }

            if(op==1)
              {
               OrderSend(OP_BUY,dlot,-1,0,0,comment);
              }
            if(op==-1)
              {
               OrderSend(OP_SELL,dlot,-1,0,0,comment);
              }

           }
        }

      ulong it=getOrderTicket(BUY|SELL);

      if(OrderSelect(it))
        {

         int itype=OrderType();

         if(itype==OP_BUY)
           {

            double pt=OrderStep();

            if(pt<=-sl)
              {
               double dnextlot=NLot(OrderLots()+dlot);
               OrderSend(OP_SELL,dnextlot,-1,0,0,comment);
              }

           }
         else if(itype==OP_SELL)
           {

            double pt=OrderStep();

            if(pt<=-sl)
              {
               double dnextlot=NLot(OrderLots()+dlot);
               OrderSend(OP_BUY,dnextlot,-1,0,0,comment);
              }

           }

        }

     }

  };

CMain main();
CDraw draw;

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

void OnDeinit(const int reason)
  {

   Destroy();
   draw.DeleteAll();

   CDrawMini::DeleteAllObjects(0,"buy");
   CDrawMini::DeleteAllObjects(0,"sell");
   CDrawMini::DeleteAllObjects(0,"closeall");
   CDrawMini::DeleteAllObjects(0,"auto");

  }

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

#ifndef MarketVersion
   static bool balert=false;
   if(!checkAccount())
     {
      if(!balert){ Alert(serror); balert=true;}
      ExpertRemove();
      return;
     }
#endif

   CreateElements();

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

   int all=main.Update(); //получим кол-во ордеров в структуре orders

   double p=main.p;
   string n=main.m_name;

   if(AccountEquity()<=RiskManager_Stop && RiskManager_Stop>0 && all>0)
     {
      Print("Equity RiskManager_Stop: ",DoubleToString(AccountEquity(),2)," EA is Stop");
      main.OrderCloseAll(ALL);
      return;
     }

   main.Tick(0,false);

   if(IsTesting() && IsVisualMode())
     {
      OnTimer();

      if(m_buy.Pressed())
        {
         Print("Press button BUY");
         main.Tick(1,true);
      

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

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

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

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

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

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

Стоимость полного кода
632,60₽ ≈ $7.73