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

crypto amazing analysis 2.6.0.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 общих теговrisk reward ratio.mq4MQL4 / MetaTrader 4 · 3 общих тегов
Вы автор или правообладатель?

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

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

О программе

Торговый советник для MetaTrader 4, который анализирует ценовые данные с помощью набора технических индикаторов — RSI, Momentum, MACD, скользящие средние и полосы Боллинджера — и на основании их сигналов открывает сделки. При формировании торгового сигнала проверяется несколько условий одновременно: пересечение скользящих средних, положение цены относительно полос Боллинджера, уровень RSI и показатель Momentum, что обеспечивает многокомпонентную фильтрацию входов в позицию.

Советник включает несколько механизмов управления рисками. Функция stop() закрывает позиции при смене направления скользящих средних. Trail1() реализует трейлинг-стоп, перемещая уровень стоп-лосса по мере движения цены в нужную сторону. MOVETOBREAKEVEN() переводит убыточные ордера в безубыток при достижении заданного числа пунктов прибыли. Функция LotsOptimized() рассчитывает размер лота с учётом риска на маржу и коэффициента уменьшения после серии убытков.

Советник работает на разных таймфреймах, автоматически подбирая расчётные периоды для старших и младших таймфреймов. Перед открытием ордера проверяются минимальное количество баров и минимальное значение TakeProfit, а при модификации уровней учитываются стоп-уровень и заморозка ценовых уровней символа. Торговые операции выполняются через стандартный API OrderSend с нормализацией цен и контролем ошибок.

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

НастройкаОписание
Enable "no loss" (USEMOVETOBREAKEVEN) Включить перевод в безубыток — Переключатель, включающий или отключающий автоматический перевод убыточных ордеров в безубыток.
When to move break even (WHENTOMOVETOBE) Пункты прибыли для перевода в безубыток — Количество пунктов прибыли от цены открытия, при достижении которых ордер перемещается в безубыток.
How much pips to move sl (PIPSTOMOVESL) Пункты для перемещения стоп-лосса — Количество пунктов, на которое перемещается стоп-лосс при переводе ордера в безубыток.
Lots size (Lots) Размер лота — Начальный размер лота, используемый при расчёте оптимального объёма торговой позиции.
MaximumRisk Максимальный риск — Максимальный риск в процентах от свободной маржи, используемый для расчёта размера лота при открытии позиции.
DecreaseFactor Коэффициент уменьшения лота — Коэффициент уменьшения лота при наличии серии убыточных ордеров. Чем больше значение, тем сильнее лот сокращается при последовательных убытках.
TrailingStop (TrailingStop) Трейлинг-стоп в пунктах — Расстояние в пунктах для трейлинг-стопа. При достижении цены заданного отступа от цены открытия стоп-лосс перемещается вслед за ценой.
Stop Loss (Stop_Loss) Стоп-лосс в пунктах — Расстояние в пунктах от цены открытия до уровня стоп-лосса при открытии ордера.
MagicNumber (MagicNumber) Магический номер — Уникальный идентификатор ордеров, позволяющий советнику отличать свои сделки от сделок других советников на счёте.
TakeProfit (TakeProfit) Тейк-профит в пунктах — Расстояние в пунктах от цены открытия до уровня тейк-профита при открытии ордера.
FastMA (FastMA) Период быстрой скользящей средней — Период быстрой скользящей средней, используемой для определения краткосрочного тренда и генерации торговых сигналов.
SlowMA (SlowMA) Период медленной скользящей средней — Период медленной скользящей средней, используемой совместно с быстрой для определения направления тренда.
Momentum_Sell (Mom_Sell) Порог Momentum для продажи — Пороговое значение индикатора Momentum для подтверждения сигнала на продажу (SELL).
Momentum_Buy (Mom_Buy) Порог Momentum для покупки — Пороговое значение индикатора 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       Mom_Sell=0.3;           //Momentum_Sell 
extern double       Mom_Buy=0.3;            //Momentum_Buy   

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,L;

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

void OnDeinit(const int reason)
  {
  }

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

int stop()
  {
    total=0;
 double  MA_1_t=iMA(NULL,0,FastMA,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_1
 double  MA_2_t=iMA(NULL,0,SlowMA,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_2

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==MagicNumber)
           {
            if(OrderType()==OP_BUY)
              {

               if(MA_1_t<MA_2_t)
                  if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                     Print(" CLOSE BY STOP STRATEGY ");

              }
            else // go to short position
              {

               if(MA_1_t>MA_2_t)
                  if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                     Print(" CLOSE BY STOP STRATEGY ");

              }
           }
        }
     }
   return(0);
  }

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);
                     takeprofit=OrderTakeProfit() ;
                     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))
                    {

                     Refr

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

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

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

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

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

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

Стоимость полного кода
1 212,90₽ ≈ $14.83