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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.