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

AK-47 EA

ak-47 scalper ea - mt5.mq5

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

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

AK-47 EA — торговый советник для MetaTrader 5, предназначенный для автоматической работы на рынке. Советник размещает отложенные ордера типа SellStop с автоматической установкой стоп-лосса и тейк-профита, а также управляет открытыми позициями с помощью трейлинг-стопа.

Советник поддерживает фильтрацию по времени торговли и максимальному спреду, что позволяет ограничивать торговлю в заданных условиях. Расчёт объёма позиции может выполняться на основе процента риска от баланса или фиксированного лота.

Внутри советника используется магический номер для идентификации управляемых позиций и ордеров. Обработка рыночных и торговых событий реализована через стандартные обработчики OnTick, OnInit и OnDeinit платформы MetaTrader 5.

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

НастройкаОписание
<EA Settings> -------- (EASettings) Текстовый разделитель для группы настроек советника.
Magic Number (InpMagicNumber) Магический номер для идентификации ордеров и позиций советника.
<Money Settings> -------- (MoneySettings) Текстовый разделитель для группы настроек управления капиталом.
Allow Volume Percent (isVolume_Percent) Переключатель расчёта объёма позиции в процентах от баланса.
Risk Percentage of Balance (%) (InpRisk) Процент риска от баланса для расчёта объёма позиции.
<Trading Settings> -------- (TradingSettings) Текстовый разделитель для группы торговых настроек.
Lots (Inpuser_lot) Фиксированный размер лота (при отключённом расчёте в процентах).
Stoploss (in Pips) (InpSL_Pips) Стоп-лосс в пунктах.
TP (in Pips) (0 = No TP) (InpTP_Pips) Тейк-профит в пунктах (0 — без тейк-профита).
Maximum slippage allow_Pips. (InpMax_slippage) Допустимое проскальзывание в пунктах.
Maximum allowed spread (in Point) (0 = floating) (InpMax_spread) Максимально допустимый спред в пунктах (0 — плавающий).
<Trading Time Settings> -------- (TimeSettings) Текстовый разделитель для настроек времени торговли.
Trading Time Filter (InpTimeFilter) Переключатель фильтрации по времени торговли.
Start Hour (InpStartHour) Час начала торговой сессии.
Start Minute (InpStartMinute) Минута начала торговой сессии.
End Hour (InpEndHour) Час окончания торговой сессии.
End Minute (InpEndMinute) Минута окончания торговой сессии.
Получить полный код

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

???//+------------------------------------------------------------------+

#property version   "1.00"
#property strict

#define ExtBotName "AK-47 EA" //Bot Name
#define  Version "1.00"

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>

#define Ask    SymbolInfoDouble(_Symbol, SYMBOL_ASK)
#define Bid    SymbolInfoDouble(_Symbol, SYMBOL_BID)

input string  EASettings         = "---------------------------------------------"; //-------- <EA Settings> --------
input int      InpMagicNumber    = 124656;   //Magic Number
input string  MoneySettings      = "---------------------------------------------"; //-------- <Money Settings> --------
input bool     isVolume_Percent  = true;     //Allow Volume Percent
input double   InpRisk           = 3;        //Risk Percentage of Balance (%)
input string  TradingSettings    = "---------------------------------------------"; //-------- <Trading Settings> --------
input double   Inpuser_lot       = 0.01;     //Lots
input double   InpSL_Pips        = 3.5;      //Stoploss (in Pips)
input double   InpTP_Pips        = 7;        //TP (in Pips) (0 = No TP)
input int      InpMax_slippage   = 3;        //Maximum slippage allow_Pips.
input double   InpMax_spread     = 5;        //Maximum allowed spread (in Point) (0 = floating)
input string   TimeSettings      = "---------------------------------------------"; //-------- <Trading Time Settings> --------
input bool     InpTimeFilter     = true;     //Trading Time Filter
input int      InpStartHour      = 2;        //Start Hour
input int      InpStartMinute    = 30;       //Start Minute
input int      InpEndHour        = 21;       //End Hour
input int      InpEndMinute      = 0;        //End Minute

int      Pips2Points;    // slippage  3 pips    3=points    30=points
double   Pips2Double;    // Stoploss 15 pips    0.015      0.0150
bool     isOrder = false;
int      slippage;
long     acSpread;
string   strComment = "";

CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                    // account info wrapper
COrderInfo     m_order;                      // pending orders object

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

void OnDeinit(const int reason) {

}

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

void OpenOrder(){

   ENUM_ORDER_TYPE OrdType = ORDER_TYPE_SELL;//-1;

   double TP = 0;
   double SL = 0;
   string comment = ExtBotName;

   double lot1 = CalculateVolume();

   if(OrdType == ORDER_TYPE_SELL) {
      double OpenPrice = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);

      TP = OpenPrice - NormalizeDouble(InpTP_Pips * Pips2Double, _Digits);
      SL = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);

      if(CheckSpreadAllow()                                             //Check Spread
         && CheckVolumeValue(lot1)                                      //Check volume
         && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice)  //Check Dist from openPrice to Bid
         && CheckStopLoss(OpenPrice,  SL, TP)                           //Check Dist from SL, TP to OpenPrice
         && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL)) //Check Balance khi lenh cho duoc Hit
      {
         if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment))
         Print(__FUNCTION__,"--> OrderSend error ", m_trade.ResultComment());
      }
   }
   else if(OrdType == ORDER_TYPE_BUY) {
      double OpenPrice = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);
      SL = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);

      if(CheckSpreadAllow()                                             //Check Spread
         && CheckVolumeValue(lot1)                                      //Check volume
         && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice)   //Check Dist from openPrice to Bid
         && CheckStopLoss(OpenPrice,  SL, TP)                           //Check Dist from SL, TP to OpenPrice         
         && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY))  //Check Balance khi lenh cho duoc Hit
      {
         if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment))// use "ORDER_TIME_GTC" when expiration date = 0
         Print(__FUNCTION__,"--> OrderSend error ", m_trade.ResultComment());
      }
   }

}

void TrailingStop() {

   double SL_in_Pip = 0;

   for(int i = PositionsTotal() - 1; i >= 0; i--) {
      if(m_position.SelectByIndex(i)) {    // selects the orders by index for further access to its properties        
         if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) {

            if(m_position.PositionType() == POSITION_TYPE_BUY) {

               SL_in_Pip = NormalizeDouble(Bid - m_position.StopLoss(), _Digits) / Pips2Double;
               if(SL_in_Pip > InpSL_Pips) {
                  double newSL = NormalizeDouble(Bid - InpSL_Pips * Pips2Double, _Digits);

                  if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) {
                     Print(__FUNCTION__,"--> OrderModify error ", m_trade.ResultComment());
                     continue;  
                  }
               }
            }

            else if(m_position.PositionType() == POSITION_TYPE_SELL) {

               SL_in_Pip = NormalizeDouble(m_position.StopLoss() - Bid, _Digits) / Pips2Double;
               if(SL_in_Pip > InpSL_Pips){
                  double newSL = NormalizeDouble(Bid + (InpSL_Pips) * Pips2Double, _Digits);
                  if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) {
        

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

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

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

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

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

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

Стоимость полного кода
1 087,10₽ ≈ $13.29