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

Risk Reward Ratio

risk reward ratio.mq4

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

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

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

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

О программе

Данный исходный файл представляет собой торгового советника для платформы MetaTrader 4 (MQL4). Советник автоматически открывает и закрывает позиции по сигналам нескольких технических индикаторов, а также управляет уровнями стоп-лосс и тейк-профит, включая перевод в безубыток и трейлинг-стоп. В коде предусмотрены настройки риска, размера лота и магического числа для идентификации ордеров.

Основная логика входа в рынок строится на комбинации показателей Momentum, RSI, скользящих средних и стохастика. Для покупки и продажи используются разные условия, но общий принцип — согласованное движение быстрой и медленной линий, а также уровни моментума. Выход из позиции осуществляется по достижению заданных уровней, сигналам MACD, ATR или касанию границ полос Боллинджера.

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

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

НастройкаОписание
True if you want to use the risk % to calculate the size (UseRiskPercentage) Использовать процент риска — Если включено, размер лота рассчитывается как процент от баланса с учётом стоп-лосса.
Enable "no loss" (USEMOVETOBREAKEVEN) Использовать перевод в безубыток — Включает автоматический перевод позиции в безубыток при достижении заданной прибыли.
When to move break even (WHENTOMOVETOBE) Уровень перевода в безубыток — Прибыль в пунктах, при достижении которой позиция переводится в безубыток.
How much pips to move sl (PIPSTOMOVESL) Пункты для перемещения стоп-лосса — Количество пунктов, на которое перемещается стоп-лосс при переводе позиции в безубыток.
REWARD_RATIO Соотношение риск/прибыль — Соотношение риск/прибыль, определяющее размер тейк-профита относительно стоп-лосса.
Lots size (Lots) Размер лота — Фиксированный размер торгового лота, используемый, если не включён расчёт по проценту риска.
MaximumRisk Максимальный риск — Максимальный процент риска от баланса, используемый для расчёта размера позиции.
DecreaseFactor Коэффициент уменьшения лота — Коэффициент уменьшения размера лота после серии убыточных сделок. Чем больше значение, тем сильнее снижается лот.
TrailingStop (TrailingStop) Трейлинг-стоп — Размер трейлинг-стопа в пунктах, автоматически подтягивающего стоп-лосс за ценой.
Stop Loss (Stop_Loss) Стоп-лосс — Размер стоп-лосса в пунктах, используемый для ограничения убытка по позиции.
MagicNumber (MagicNumber) Магическое число — Уникальный идентификатор ордеров советника, позволяющий отличать их от ордеров других экспертов.
FastMA (FastMA) Период быстрой скользящей средней — Период быстрой скользящей средней, применяемой для анализа тренда.
SlowMA (SlowMA) Период медленной скользящей средней — Период медленной скользящей средней, применяемой для анализа тренда.
Distance (Distance) Расстояние — Расстояние в пунктах, используемое при сравнении скользящих средних для условий входа.
Momentum_Sell (Mom_Sell) Порог моментума для продажи — Пороговое значение моментума для открытия короткой позиции.
Momentum_Buy (Mom_Buy) Порог моментума для покупки — Пороговое значение моментума для открытия длинной позиции.
Получить полный код

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

#property version     "1.00"
#property strict

extern bool           UseRiskPercentage=true;    //True if you want to use the risk % to calculate the size
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         REWARD_RATIO=2;
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 
double              TakeProfit=Stop_Loss*REWARD_RATIO;          //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  
int total=0;
int           err,result;
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;
int    cnt=0;

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 stop()
  {

   double middleBB=iBands(Symbol(),0,20, 2,0,0,MODE_MAIN,1);//middle
   double lowerBB=iBands(Symbol(),0,20, 2,0,0,MODE_LOWER,1);//lower
   double upperBB=iBands(Symbol(),0,20, 2,0,0,MODE_UPPER,1);//upper

   double  MacdMAIN=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   double  MacdSIGNAL=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

   for( 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(((Bid<OrderOpenPrice()-iATR(NULL,0,14,0))
               || ((MacdMAIN>0 && MacdMAIN<MacdSIGNAL) || (MacdMAIN<0 && (MathAbs(MacdMAIN)>MathAbs(MacdSIGNAL))))
               || Close[1]==upperBB))
               exitbuys();

           }
         else // go to short position
           {

            if(((Ask>OrderOpenPrice()+iATR(NULL,0,14,0))
               || ((MacdMAIN>0 && MacdMAIN>MacdSIGNAL) || (MacdMAIN<0 && (MathAbs(MacdMAIN)<MathAbs(MacdSIGNAL)))))
               || Close[1]==lowerBB)
               exitsells();

           }
        }
     }
  }

void Trail1()
  {
   total=OrdersTotal();

   for( 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);
                     takeprofit=OrderTakeProfit()+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,stoploss,takeprofit))
                              if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit))
                                 if(!OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,Green))
                                    Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {

            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(pips*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+pips*TrailingStop)) || (OrderStopLoss()==0))
                    {

                     RefreshRates();
                     stoploss=Ask+(pips*TrailingStop);
                     takeprofit=OrderTakeProfit()-pips*TrailingStop;
                     double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
                     if(stoploss<StopLevel*pips) stoploss=StopLevel*pips;
                     if(takeprofit<StopLevel*pips) takeprofit=StopLevel*pips;
                   

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

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

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

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

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

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

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