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

phoenix_4_contest(2).mq4

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

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

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

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

НастройкаОписание
Lots Размер лота — Начальный размер лота, используемый при ручном режиме управления капиталом.
MaximumRisk Максимальный риск — Доля свободной маржи (в процентах), используемая для расчёта оптимального размера лота.
DecreaseFactor Коэффициент уменьшения лота — Коэффициент уменьшения лота после убыточных сделок в истории.
PrefSettings Предпочтительные настройки — Переключатель автоматической подстройки параметров для конкретной торговой пары (USDJPY).
MM Управление капиталом — Переключатель автоматического управления размером лота на основе риска и истории.
TakeProfit Тейк-профит — Тейк-профит в пунктах для открытых позиций.
StopLoss Стоп-лосс — Стоп-лосс в пунктах для открытых позиций.
TrailingStop Скользящий стоп-лосс — Расстояние для скользящего стоп-лосса в пунктах.
UseSignal1 Сигнал 1 — Включение или отключение первого торгового сигнала (огибающая).
UseSignal2 Сигнал 2 — Включение или отключение второго торгового сигнала (сравнение скользящих).
UseSignal3 Сигнал 3 — Включение или отключение третьего торгового сигнала (OsMA).
UseSignal4 Сигнал 4 — Включение или отключение четвёртого торгового сигнала (дивергенция).
UseSignal5 Сигнал 5 — Включение или отключение пятого торгового сигнала (временной фильтр).
SMAPeriod Период простой скользящей — Период простой скользящей средней (SMA), сравниваемой в сигнале 2.
SMA2Bars Сдвиг второй скользящей — Сдвиг в барах для второй простой скользящей средней, сравниваемой в сигнале 2.
Percent Отклонение огибающей — Отклонение в процентах для индикатора Envelopes, используемого в первом сигнале.
EnvelopePeriod Период огибающей — Период усреднения для индикатора Envelopes, используемого в первом сигнале.
OSMAFast Быстрый период OsMA — Быстрый период индикатора OsMA, используемого в третьем сигнале.
OSMASlow Медленный период OsMA — Медленный период индикатора OsMA, используемого в третьем сигнале.
OSMASignal Период сигнальной линии OsMA — Период сигнальной линии индикатора OsMA.
TradeFrom1 Начало торгового окна 1 — Начало первого разрешённого торгового интервала по часу (0–23).
TradeUntil1 Конец торгового окна 1 — Конец первого разрешённого торгового интервала по часу (0–24).
TradeFrom2 Начало торгового окна 2 — Начало второго разрешённого торгового интервала по часу (0–23).
TradeUntil2 Конец торгового окна 2 — Конец второго разрешённого торгового интервала по часу (0–24).
TradeFrom3 Начало торгового окна 3 — Начало третьего разрешённого торгового интервала по часу (0–23).
TradeUntil3 Конец торгового окна 3 — Конец третьего разрешённого торгового интервала по часу (0–24).
TradeFrom4 Начало торгового окна 4 — Начало четвёртого разрешённого торгового интервала по часу (0–23).
TradeUntil4 Конец торгового окна 4 — Конец четвёртого разрешённого торгового интервала по часу (0–24).
Fast_Period Период быстрой скользящей — Период быстрой скользящей средней, используемой в расчёте дивергенции.
Fast_Price Тип цены быстрой скользящей — Тип цены для быстрой скользящей средней (0 — OPEN, 1 — HIGH и т.д.).
Slow_Period Период медленной скользящей — Период медленной скользящей средней, используемой в расчёте дивергенции.
Slow_Price Тип цены медленной скользящей — Тип цены для медленной скользящей средней (0 — OPEN, 1 — HIGH и т.д.).
DVBuySell Порог дивергенции покупка/продажа — Пороговое значение дивергенции для определения сигнала на покупку.
DVStayOut Порог удержания вне рынка — Второе пороговое значение дивергенции, задающее допустимый диапазон для входа.
Получить полный код

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

#define MAGICMA  20050610

extern double     Lots             = 1;
extern double     MaximumRisk      = 0.3;
extern double     DecreaseFactor   = 1;
extern bool       PrefSettings     = true;
extern bool       MM               = true;
extern bool       AccountIsMicro   = false;
extern int        TakeProfit       = 0;
extern int        StopLoss         = 0;
extern int        TrailingStop     = 0;

extern bool       UseSignal1       = true;
extern bool       UseSignal2       = true;
extern bool       UseSignal3       = true;
extern bool       UseSignal4       = true;
extern bool       UseSignal5       = true;

extern int        SMAPeriod        = 0;
extern int        SMA2Bars         = 0;
extern double     Percent          = 0;
extern int        EnvelopePeriod   = 0;
extern int        OSMAFast         = 0;
extern int        OSMASlow         = 0;
extern double     OSMASignal       = 0;

extern int        TradeFrom1       = 0;
extern int        TradeUntil1      = 24;
extern int        TradeFrom2       = 0;
extern int        TradeUntil2      = 0;
extern int        TradeFrom3       = 0;
extern int        TradeUntil3      = 0;
extern int        TradeFrom4       = 0;
extern int        TradeUntil4      = 0;

extern int        Fast_Period      = 0;
extern int        Fast_Price       = PRICE_OPEN;
extern int        Slow_Period      = 0;
extern int        Slow_Price       = PRICE_OPEN;
extern double     DVBuySell        = 0;
extern double     DVStayOut        = 0;

int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }

   if(buys>0) return(buys);
   else       return(-sells);
  }

double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();    
   int    losses=0;                 

   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);

   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;

         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }

   if(lot<0.1) lot=0.1;
   if(MM==false) lot=Lots;
   if(AccountIsMicro==true) lot=lot/10;

   if(lot > 5) lot=5; 
   return(lot);
  }

void CheckForOpen()
  {

int res;

if(PrefSettings == true)
{
   if(Symbol() == "USDJPY")
      {
      SMAPeriod      = 7;
      SMA2Bars       = 14;
      Percent        = 0.0032;
      TakeProfit     = 42;
      StopLoss       = 84;
      TrailingStop   = 0;
      OSMAFast       = 5;
      OSMASlow       = 30;
      OSMASignal     = 2;
      EnvelopePeriod = 2;
      Fast_Period    = 25;
      Slow_Period    = 15;
      DVBuySell      = 0.003;
      DVStayOut      = 0.024;

      }
}

bool BuySignal1=false, SellSignal1=false;

double HighEnvelope1 = iEnvelopes(NULL,0,EnvelopePeriod,MODE_SMA,0,PRICE_CLOSE,Percent,MODE_UPPER,1);
double LowEnvelope1  = iEnvelopes(NULL,0,EnvelopePeriod,MODE_SMA,0,PRICE_CLOSE,Percent,MODE_LOWER,1);
double CloseBar1     = iClose(NULL,0,1);

if(UseSignal1)
{
   if(CloseBar1 > HighEnvelope1) {SellSignal1 = true;} 
   if(CloseBar1 < LowEnvelope1)   {BuySignal1  = true;}
}
else {SellSignal1=true;BuySignal1=true;}

bool BuySignal2=false, SellSignal2=false;

double SMA1=iMA(NULL,0,SMAPeriod,0,MODE_SMA,5,1);
double SMA2=iMA(NULL,0,SMAPeriod,0,MODE_SMA,5,SMA2Bars);

if(UseSignal2)
{
   if(SMA2-SMA1>0) {BuySignal2  = true;}
   if(SMA2-SMA1<0) {SellSignal2 = true;}
}
else {SellSignal2=true;BuySignal2=true;}

bool BuySignal3=false, SellSignal3=false;

double OsMABar2=iOsMA(NULL,0,OSMASlow,OSMAFast,OSMASignal,PRICE_CLOSE,2);
double OsMABar1=iOsMA(NULL,0,OSMASlow,OSMAFast,OSMASignal,PRICE_CLOSE,1);

if(UseSign

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

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

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

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

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

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

Стоимость полного кода
567,90₽ ≈ $6.94