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

NinaEA v.03

ninaea v03.mq4
Вы автор или правообладатель?

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

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

О программе

NinaEA v.03 — торговый советник для MetaTrader 4, написанный на языке MQL4. Советник автоматически открывает и закрывает позиции на основе пересечения скользящей средней (SMA) с ценой, дополнительно используя значения пользовательского индикатора «NINA» для фильтрации торговых сигналов.

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

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

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

НастройкаОписание
Lots Lots — Базовый фиксированный размер лота
MaximumRisk MaximumRisk — Доля свободных средств (в процентах), используемая для расчёта размера позиции
DecreaseFactor DecreaseFactor — Коэффициент снижения размера лота при наличии убыточных ордеров в истории
MovingPeriod MovingPeriod — Период скользящей средней SMA
MovingShift MovingShift — Сдвиг скользящей средней SMA
PeriodWATR PeriodWATR — Период параметра WATR пользовательского индикатора NINA
Kwatr Kwatr — Множитель параметра WATR пользовательского индикатора NINA
highlow highlow — Режим работы индикатора NINA (выбор типа экстремумов)
cbars cbars — Количество баров, используемых при расчёте индикатора NINA
from from — Начальный сдвиг бара для расчёта индикатора NINA
maP maP — Параметр периода для расчёта индикатора NINA
lots lots — Дополнительный параметр размера лота (объявлен отдельно от Lots)
SMAspread SMAspread — Параметр спреда SMA (объявлен, не используется в логике торговых функций)
StopLoss StopLoss — Уровень стоп-лосса в пунктах (объявлен, не используется в логике торговых функций)
Slippage Slippage — Допустимое проскальзывание в пунктах для исполнения ордеров
Получить полный код

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

#define MAGICMA  20050610

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern double MovingPeriod       = 12;
extern double MovingShift        = 6;
extern int       PeriodWATR=10;
extern double    Kwatr=1;
extern int       highlow=0;
extern int       cbars = 1000;
extern int       from  = 0;
extern int       maP  = 50;
extern double    lots=0.1;
extern int       SMAspread=0;
extern int       StopLoss=0;
extern int       Slippage=4;
double   nina, SL=0;
int      i, buys, sells;

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();     // history orders total
   int    losses=0;                  // number of losses orders without a break

   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;
   return(lot);
  }

void CheckForOpen

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

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

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

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

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

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

Стоимость полного кода
250,70₽ ≈ $3.06