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