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

ENGULFING

engulfing.mq4

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

2 to 1 strategy with signals.pineTradingView · 2 общих теговmulti_lot_scalper_a.mq4MQL4 / MetaTrader 4 · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих теговfresh algo v24 tradingview indicator_5918156155804195406.pineTradingView · 2 общих теговlinear regression channel.mq4MQL4 / MetaTrader 4 · 2 общих теговtrading criteria.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

ENGULFING — торговый советник для MetaTrader 4, который анализирует ценовые данные и открывает ордера BUY/SELL на основании совпадения нескольких технических индикаторов: скользящих средних (LWMA), полос Боллинджера, MACD, импульса (Momentum) и фракталов. Советник проверяет наличие новых свечей и корректность параметров перед каждым торговым действием. При недостатке средств или некорректных настройках (например, менее 100 баров на графике или TakeProfit менее 10) работа блокируется.

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

Торговые операции выполняются через стандартные функции MetaTrader 4: OrderSend для открытия позиций, OrderModify для изменения уровней и OrderClose для закрытия. Советник фильтрует ордера по символу и магическому числу, что позволяет использовать несколько экземпляров на одном счёте. Все расчёты уровней нормализуются по точности инструмента.

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

НастройкаОписание
USEMOVETOBREAKEVEN Включает или отключает функцию перевода ордеров в безубыток (move to breakeven).
WHENTOMOVETOBE Прибыль в пипсах, при достижении которой ордер переводится в безубыток.
PIPSTOMOVESL Количество пипсов для сдвига стоп-лосса при переводе ордера в безубыток.
Lots Размер лота по умолчанию, используемый при расчёте оптимального объёма позиции.
MaximumRisk Максимальный риск в процентах от свободного маржинала, используемый для расчёта размера лота.
DecreaseFactor Коэффициент уменьшения лота после серии убыточных сделок. При значении больше нуля лот снижается в зависимости от количества убыточных ордеров в истории.
TrailingStop Расстояние в пипсах для трейлинг-стопа. При значении больше нуля советник автоматически перемещает стоп-лосс вслед за ценой.
Stop_Loss Стоп-лосс в пипсах, задаваемый при открытии ордера.
MagicNumber Магическое число для идентификации ордеров, открытых данным советником.
TakeProfit Тейк-профит в пипсах, задаваемый при открытии ордера. При значении менее 10 советник блокирует работу.
FastMA Период быстрой скользящей средней (LWMA), используемой для определения направления.
SlowMA Период медленной скользящей средней (LWMA), используемой совместно с быстрой для определения направления.
Distance Расстояние в пипсах между скользящими средними для допуска к открытию позиции.
Mom_Sell Пороговое значение импульса (Momentum) для допуска к открытию короткой (SELL) позиции.
Mom_Buy Пороговое значение импульса (Momentum) для допуска к открытию длинной (BUY) позиции.
Получить полный код

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

#property version     "1.00"
#property strict

extern bool        USEMOVETOBREAKEVEN=true;//Enable "no loss"
extern double         WHENTOMOVETOBE=10;      //When to move break even
extern double         PIPSTOMOVESL=5;         //How much pips to move sl
extern double      Lots=0.01;              //Lots size 
input double       MaximumRisk   =0.02;
input double       DecreaseFactor=3;
 extern double         TrailingStop=40;        //TrailingStop 
extern double         Stop_Loss=20;           //Stop Loss  
extern int         MagicNumber=1234;       //MagicNumber 
input double       TakeProfit=50;          //TakeProfit
extern int         FastMA=6;             //FastMA 
extern int         SlowMA=85;            //SlowMA 
extern double      Distance=5;             //Distance 
extern double      Mom_Sell=0.3;           //Momentum_Sell 
extern double      Mom_Buy=0.3;            //Momentum_Buy  
bool               FractalsUp=false;
bool               FractalsDown=false;
double             FractalsUpPrice=0;
double             FractalsDownPrice=0;
int                FractalsLimit=200;
int           err;
int total=0;
double
Lot,Dmax,Dmin,// Amount of lots in a selected order
Lts,                             // Amount of lots in an opened order
Min_Lot,                         // Minimal amount of lots
Step,                            // Step of lot size change
Free,                            // Current free margin
One_Lot,                         // Price of one lot
Price,                           // Price of a selected order,
pips,
MA_1,MA_2,MA_3,MACD_SIGNAL;
int Type,freeze_level,Spread;

double priceopen,stoploss,takeprofit;

int orderticket;

int
Period_MA_2,  Period_MA_3,       // Calculation periods of MA for other timefr.
Period_MA_02, Period_MA_03,      // Calculation periods of supp. MAs
K2,K3,T;

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

void OnDeinit(const int reason)
  {
  }

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

void Trail1()
  {
    total=OrdersTotal();

   for(int cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {

         if(OrderType()==OP_BUY)
           {

            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>pips*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-pips*TrailingStop)
                    {

                     RefreshRates();
                     stoploss=Bid-(pips*TrailingStop);
                     double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
                     if(stoploss<StopLevel*pips) stoploss=StopLevel*pips;
                     string symbol=OrderSymbol();
                     double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
                     if(MathAbs(OrderStopLoss()-stoploss)>point)
                        if((pips*TrailingStop)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)

                           if(CheckStopLoss_Takeprofit(OP_BUY,Bid-pips*TrailingStop,OrderTakeProfit()))
                              if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),Bid-pips*TrailingStop,OrderTakeProfit()))
                                 if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pips*TrailingStop,OrderTakeProfit(),0,Green))
                                    Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }

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

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

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

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

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

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

Стоимость полного кода
1 340,70₽ ≈ $16.39