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

Aouto Adjusting

aouto adjusting ea.mq4

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Aouto Adjusting — торговый советник для MetaTrader 4, анализирующий ценовые данные с помощью индикаторов Momentum (период 14) и EMA (периоды 6, 14, 26). Советник определяет точки входа на каждом новом свече, проверяя соотношение скользящих средних и уровни моментума.

При выполнении условий для покупки (MA6 < MA14 < MA26, цена касается или пробивает MA14, моментум выше порога Mom_Buy) открывается длинная позиция. При выполнении условий для продажи (MA6 > MA14 > MA26, цена касается или пробивает MA14, моментум выше порога Mom_Sell) открывается короткая позиция. Размер лота рассчитывается на основе процента риска от собственного капитала.

Советник также реализует trailing stop — отслеживает открытые позиции и модифицирует стоп-лоссы и тейк-профиты по мере движения цены. Перед модификацией выполняется проверка допустимости уровней с учётом стоп-уровня брокера. Открытие позиций и модификация ордеров осуществляются через стандартные торговые функции MetaTrader 4.

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

НастройкаОписание
PADAMOUNT Пипсы за пределом свечи для стоп-цены — Количество пипсов за пределами свечи для установки стоп-цены входа.
RISKPRESENT Процент риска от капитала — Процент собственного капитала, рискуемый при открытии одной позиции.
REWARD_RATIO Соотношение тейк-профита к стоп-лоссу — Соотношение тейк-профита к стоп-лоссу при открытии позиции.
CANDELSBACK Количество свечей для мин/макс — Количество свечей для определения минимума и максимума при расчёте стоп-цен входа в позицию.
Mom_Sell Порог моментума для продажи — Пороговое значение моментума для открытия продавательских позиций.
Mom_Buy Порог моментума для покупки — Пороговое значение моментума для открытия покупательских позиций.
MAGICNUMBER Магический номер — Магический номер, идентифицирующий ордера, открытые данным советником.
Получить полный код

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

#property version   "1.00"
#property strict
extern int PADAMOUNT=3;//pips Beyond candle to stop
extern double RISKPRESENT=0.1;//Risk Present 
extern double REWARD_RATIO=2;//Rward_Ratio
extern int CANDELSBACK=3;//How much candles for min\max
extern double       Mom_Sell=0.3;           //Momentum_Sell 
extern double       Mom_Buy=0.3;            //Momentum_Buy 
extern int MAGICNUMBER=1234;

double pips;
double bsl;
double ssl;
double btp;
double stp;
int buyticket;
int selticket;
int BUYSTOPCANDLE;
int SELSTOPCANDLE;
int orderentry;
double Riskedamount;
double Rewadamount;
double LOTSIZE;

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

void OnDeinit(const int reason)
  {

  }

void OnTick()

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

int openorderthispair(string pair)// 
  {
   int total=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))Print("eror");
      if(OrderSymbol()==pair) total++;// 
     }
   return(total);
  }

bool isnewcandle()
  {
   static int  barsonchart=0;
   if(Bars==barsonchart)
      return(false);
   barsonchart=Bars;
   return(true);
  }

void checkformatrade()
  {

   if(isnewcandle())
     {

      double   MomLevel=MathAbs(100-iMomentum(NULL,0,14,PRICE_CLOSE,1));
      double   MomLevel1=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,2));
      double   MomLevel2=MathAbs(100 - iMomentum(NULL,0,14,PRICE_CLOSE,3));

      double    MA6=iMA(Symbol(),0,6,0,MODE_EMA,PRICE_MEDIAN,2);
      double    MA14= iMA(Symbol(),0,14,0,MODE_EMA,PRICE_MEDIAN,1);
      double    MA26= iMA(Symbol(),0,26,0,MODE_EMA,PRICE_MEDIAN,2);

      if(MA6<MA14 && MA14<MA26)
         if(Low[1]<=MA14)
            if(MomLevel>Mom_Buy || MomLevel1>Mom_Buy || MomLevel2>Mom_Buy)
               trade(0);

      if(MA6>MA14 && MA14>MA26)
         if(High[1]>=MA14)
            if(MomLevel>Mom_Sell || MomLevel1>Mom_Sell || MomLevel2>Mom_Sell)
               trade(1);
     }
  }

void  trade(int type)
  {
   int total=OrdersTotal();
   LOTSIZE=0;
   double Equity=AccountEquity();
   Riskedamount=Equity*RISKPRESENT*0.01;
   BUYSTOPCANDLE=iLowest(NULL,0,1,CANDELSBACK,1);
   SELSTOPCANDLE=iHighest(NULL,0,2,CANDELSBACK,1);
   double BUY_STOP_PRICE=Low[BUYSTOPCANDLE]-PADAMOUNT*pips;
   double PIPS_TO_BSL=Ask-BUY_STOP_PRICE;
   double BUY_TAKEPROFIT_PRICE=Ask+PIPS_TO_BSL*REWARD_RATIO;
   double SELL_STOP_PRICE=High[SELSTOPCANDLE]+PADAMOUNT*pips;
   double PIPS_TO_SSL=SELL_STOP_PRICE-Bid;
   double SELL_TAKEPROFIT_PRICE=Bid-PIPS_TO_SSL*REWARD_RATIO;

   if(type==0)
     {
        if(AccountFreeMargin()<(1000*LOTSIZE))
     {
      Print("We have no money. Free Margin = ",AccountFreeMargin());
      return;
     }
      LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
      if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_BUY))
      if(openorderthispair(Symbol())==0)buyticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(LOTSIZE),ND(Ask),3,0,0,NULL,MAGICNUMBER,0,Green);
     }

   if(type==1)
     {
        if(AccountFreeMargin()<(1000*LOTSIZE))
     {
      Print("We have no money. Free Margin = ",AccountFreeMargin());
      return;
     }
      LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
      if( CheckMoneyForTrade(Symbol(), LotsOptimized(LOTSIZE),OP_SELL))
      if(openorderthispair(Symbol())==0) selticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(LOTSIZE),ND(Bid),3,0,0,NULL,MAGICNUMBER,0,Red);
     }

   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)
           {
            bsl=BUY_STOP_PRICE;
            btp=BUY_TAKEPROFIT_PRICE;
            LOTSIZE=(Riskedamount/(PIPS_TO_BSL/pips))/10;
            RefreshRates();
            double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
            if(bsl<StopLevel*pips) bsl=StopLevel*pips;
            if(btp<StopLevel*pips) btp=StopLevel*pips;
            string symbol=OrderSymbol();
            double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
            if(MathAbs(OrderStopLoss()-bsl)>point)
               if((pips*PIPS_TO_BSL)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)

                  if(CheckStopLoss_Takeprofit(OP_BUY,bsl,btp))
                     if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),bsl,btp))
                        if(buyticket>0)if(!OrderModify(OrderTicket(),OrderOpenPrice(),NDTP(bsl),NDTP(btp),0,CLR_NONE))Print("eror");
            return;
           }
         else // go to short position
           {

            ssl=SELL_STOP_PRICE;
            stp=SELL_TAKEPROFIT_PRICE;
            LOTSIZE=(Riskedamount/(PIPS_TO_SSL/pips))/10;
            RefreshRates();
            double StopLevel=Mar

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

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

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

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

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

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

Стоимость полного кода
794,80₽ ≈ $9.71