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

truescalperprofitlock.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

TrueScalperProfitLock — торговый советник для платформы MetaTrader 4, предназначенный для автоматической торговли на валютном рынке. Советник анализирует ценовые данные и технические индикаторы для формирования сигналов на открытие и закрытие позиций.

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

Встроенные средства позволяют ограничивать число открытых позиций на торговую пару и задавать индивидуальные параметры для определённых инструментов. Переключатель реальной торговли позволяет контролировать, использовать ли советник в живом торговом режиме.

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

НастройкаОписание
Lots Размер лота для открытия позиции.
TakeProfit Уровень фиксации прибыли для открытых позиций (в пунктах).
StopLoss Уровень стоп-лосса для открытых позиций (в пунктах).
RSIMethodA Метод A проверки RSI: переключатель включает анализ пересечения RSI с заданным пороговым значением.
RSIMethodB Метод B проверки RSI: переключатель включает простой анализ текущего значения RSI относительно порога.
RSIValue Пороговое значение индикатора RSI для определения направления сигнала.
AbandonMethodA Метод A отказа от сделки: принудительное закрытие позиций после заданного количества баров.
AbandonMethodB Метод B отказа от сделки: закрытие позиций с решением о направлении по индикаторам.
Abandon Количество баров после которого срабатывает метод отказа от сделки.
MoneyManagement Переключатель управления денежными средствами, определяющий автоматический расчёт размера лота.
Risk Процент риска от баланса для расчёта размера лота при включённом управлении денежными средствами.
Slippage Допустимое проскальзывание при исполнении ордеров (в пунктах).
UseProfitLock Переключатель системы фиксации безубыточности, переводящий стоп-лосс на уровень открытия позиции при достижении заданной прибыли.
BreakEvenTrigger Уровень в пунктах, при достижении которого активируется перевод стоп-лосса в безубыточную зону.
BreakEven Расстояние в пунктах от цены открытия для установки стоп-лосса на уровне безубыточности.
LiveTrading Переключатель реальной торговли, влияющий на ограничения размера лота.
maxTradesPerPair Максимальное количество одновременных сделок на одну торговую пару.
MagicNumber Идентификатор советника для фильтрации ордеров.
Получить полный код

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

extern double Lots=1.0;
extern int    TakeProfit=44;
extern int    StopLoss=90;
extern bool   RSIMethodA=false;
extern bool   RSIMethodB=true;
extern int    RSIValue=50;
extern bool   AbandonMethodA=true;
extern bool   AbandonMethodB=false;
extern int    Abandon=101;
extern bool   MoneyManagement=true;
extern int    Risk=2;
extern int    Slippage=3;
extern bool   UseProfitLock=true;
extern int    BreakEvenTrigger=25;
extern int    BreakEven=3;
extern bool   LiveTrading=false;
extern bool   AccountIsMini=false;
extern int    maxTradesPerPair=1;
extern int    MagicNumber=5432;

double lotMM;
bool BuySignal=false;
bool SetBuy=false;
bool SellSignal=false;
bool SetSell=false;

datetime bartime=0;
int      bartick=0;
int      TradeBars=0;

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

int deinit()
  {

   return(0);
  }

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

bool SetLotsMM()
  {
   double MarginCutoff;

   if(!AccountIsMini) MarginCutoff=1000;
   if(AccountIsMini) MarginCutoff=100;
   if(AccountFreeMargin() < MarginCutoff) return(false);
   if(MoneyManagement)
     {
      lotMM=MathCeil(AccountBalance() * Risk/10000)/10;

      if(lotMM < 0.1) lotMM=Lots;
      if(lotMM > 1.0) lotMM=MathCeil(lotMM);

      if(LiveTrading)
        {
         if(AccountIsMini)               lotMM=lotMM * 10;
         if(!AccountIsMini && lotMM < 1.0) lotMM=1.0;
        }
      if(lotMM > 100) lotMM=100;
     }
   else
     {
      lotMM=Lots; // Change MoneyManagement to 0 if you want the Lots parameter to be in effect
     }
   return(true);
  }

bool RunOrderTriggerCalculations()
  {
   bool    RSIPOS=false;
   bool    RSINEG=false;

   double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);

   double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);

   double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);
   double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);

   if (RSIMethodA)
     {
      if(RSI>RSIValue && RSI2<RSIValue)
        {
         RSIPOS=true;
         RSINEG=false;
        }
      else RSIPOS=false;
      if(RSI<RSIValue && RSI2>RSIValue)
        {
         RSIPOS=false;
         RSINEG=true;
        }
      else RSINEG=false;
     }
   if (RSIMethodB)
     {
      if(RSI>RSIValue)
        {
         RSIPOS=true;
         RSINEG=false;
        }
      if(RSI<RSIValue)
        {
         RSIPOS=false;
         RSINEG=true;
        }
     }
   if ((bullMA3 > (bearMA7+Point)) && RSINEG)
     {
      BuySignal=true;
     }
   else BuySignal=false;
   if ((bullMA3 < (bearMA7-Point)) && RSIPOS)
     {
      SellSignal=true;
     }
   else SellSignal=false;
   return(true);
  }

int OpenOrdersForThisEA()
  {
   int ofts=0;
   for(int x=0;x<OrdersTotal();x++)
     {
      OrderSelect(x, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         ofts++;
        }
     }
   return(ofts);
  }

bool ProfitLockStop()
  {
   if(OpenOrdersForThisEA() > 0 )
     {
        for( int i=0; i < OrdersTotal(); i++){
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
           {
            if (Bid>=OrderOpenPrice() + BreakEvenTrigger*Point &&
                OrderOpenPric

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

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

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

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

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

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

Стоимость полного кода
478,50₽ ≈ $5.85