ma_crossover_closeexit_ea_v1.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ma_crossover_closeexit_ea_v1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализующий стратегию на основе пересечения двух скользящих средних. Советник автоматически анализирует ценовые данные, определяет точки входа при пересечении быстрой и медленной скользящих средних, а также контролирует выход из позиций при обратном пересечении цены с быстрой средней. Работает на выбранном таймфрейме и поддерживает несколько типов скользящих средних.
Продукт включает встроенное управление размером позиции, систему трейлинг-стопа с несколькими типами поведения и фильтр торговых сессий по часовым поясам (азиатская, европейская и нью-йоркская). Также предусмотрены стоп-лосс и тейк-профит для управления рисками. Советник допускает одновременную работу только с одной позицией на символ.
Советник написан на языке MQL4 и предназначен для работы в среде MetaTrader 4. Все торговые операции выполняются через стандартные API платформы. Настройки параметров доступны пользователю непосредственно в интерфейсе терминала.
Настройки программы
| Настройка | Описание |
|---|---|
| Expert_Name | Имя советника — Имя экспертного советника, отображаемое в комментариях к ордерам. |
| MagicNumberBase | Базовый магический номер — Базовое значение магического номера для идентификации ордеров советника. |
| UserComment | Комментарий к ордерам — Текстовый комментарий к ордерам советника. |
| stf0 | Заголовок таймфрейма — Заголовок раздела выбора таймфрейма. |
| stf1 | Месяц — Название таймфрейма — месяц. |
| stf2 | Неделя — Название таймфрейма — неделя. |
| stf3 | День — Название таймфрейма — день. |
| stf4 | 4 часа — Название таймфрейма — 4 часа. |
| stf5 | 1 час — Название таймфрейма — 1 час. |
| stf6 | 30 минут — Название таймфрейма — 30 минут. |
| stf7 | 15 минут — Название таймфрейма — 15 минут. |
| stf8 | 5 минут — Название таймфрейма — 5 минут. |
| stf9 | 1 минута — Название таймфрейма — 1 минута. |
| TradeTimeFrame | Таймфрейм торговли — Номер таймфрейма для торговли (1 — M1, 2 — M5, 3 — M15, 4 — M30, 5 — H1, 6 — H4, 7 — D1, 8 — W1, 9 — MN). |
| ma0 | Режимы скользящих средних — Текстовое описание режимов скользящих средних. |
| ma1 | Типы скользящих средних — Описание типов скользящих средних (SMA, EMA, SMMA). |
| ma2 | Дополнительные типы СС — Описание дополнительных типов скользящих средних (LWMA, LSMA). |
| 0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (FastMA_Mode) | Тип быстрой скользящей средней — Тип быстрой скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA). |
| FastMA_Period | Период быстрой СС — Период быстрой скользящей средней в барах. |
| p | Типы цен — Текстовое описание типов применяемых цен. |
| p0 | Цена закрытия — Описание цены закрытия. |
| p1 | Цена открытия — Описание цены открытия. |
| p2 | Максимальная цена — Описание максимальной цены. |
| p3 | Минимальная цена — Описание минимальной цены. |
| p4 | Медианная цена — Описание медианной цены. |
| p5 | Типичная цена — Описание типичной цены. |
| p6 | Взвешенная цена — Описание взвешенной цены. |
| 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (FastMA_AppliedPrice) | Применяемая цена быстрой СС — Тип цены для расчёта быстрой скользящей средней (0 — закрытие, 1 — открытие, 2 — максимум, 3 — минимум, 4 — медиана, 5 — типичная, 6 — взвешенная). |
| 0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA (SlowMA_Mode) | Тип медленной скользящей средней — Тип медленной скользящей средней (0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA, 4 — LSMA). |
| SlowMA_Period | Период медленной СС — Период медленной скользящей средней в барах. |
| 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) (SlowMA_AppliedPrice) | Применяемая цена медленной СС — Тип цены для расчёта медленной скользящей средней (0 — закрытие, 1 — открытие, 2 — максимум, 3 — минимум, 4 — медиана, 5 — типичная, 6 — взвешенная). |
| SignalCandle | Сигнальная свеча — Смещение свечи для расчёта сигнального индикатора в барах. |
| mm | Управление денежными средствами — Текстовое описание раздела управления денежными средствами. |
| Lots | Размер лота — Фиксированный размер лота при отключённом управлении денежными средствами. |
| MaxLots | Максимальный лот — Максимально допустимый размер лота. |
| Change to false to shutdown money management controls. (UseMoneyManagement) | Управление денежными средствами — Включение/отключение автоматического управления денежными средствами. |
| BrokerIsIBFX | Брокер IBFX — Переключатель, указывающий, является ли брокер IBFX (влияет на расчёт лотов). |
| m1 | Мини/микро счёт — Настройка мини и микро счёта (текстовое описание). |
| fm | Тип счёта — Настройка стандартного или мини/микро счёта (текстовое описание). |
| UseFreeMargin | Использовать свободный маржинал — Использовать свободный маржинальный баланс вместо баланса счёта для расчёта лотов. |
| Change to whatever percent of equity you wish to risk. (TradeSizePercent) | Процент риска — Процент собственного капитала, готового рисковать на одну позицию (при включённом управлении денежными средствами). |
| BrokerPermitsFractionalLots | Дробные лоты разрешены — Разрешение брокера на дробные лоты. |
| st6 | Контроль прибыли — Текстовое описание раздела контроля прибыли. |
| Maximum pips willing to lose per position. (StopLoss) | Стоп-лосс (pip) — Максимальное количество pip'ов готовое потерять на позицию. |
| Maximum profit level achieved. (TakeProfit) | Тейк-профит (pip) — Максимальный уровень прибыли в pip'ах для фиксации. |
| tsp0 | Заголовок трейлинг-стопа — Заголовок раздела типов трейлинг-стопа. |
| tsp1 | Тип 1 описание — Описание типа трейлинг-стопа 1 — немедленное перемещение. |
| tsp2 | Тип 2 описание — Описание типа трейлинг-стопа 2 — ожидание. |
| tsp3 | Тип 3 описание — Описание типа трейлинг-стопа 3 — три уровня. |
| UseTrailingStop | Трейлинг-стоп включён — Включение/отключение функции трейлинг-стопа. |
| Type 1 moves stop immediately, Type 2 waits til value of TS is reached (TrailingStopType) | Тип трейлинг-стопа — Тип трейлинг-стопа (1 — без задержки, 2 — ожидание достижения значения, 3 — три уровня). |
| ts2 | Настройки типа 2 — Настройки для типа трейлинг-стопа 2. |
| Change to whatever number of pips you wish to trail your position with. (TrailingStop) | Трейлинг-стоп (pip) — Количество pip'ов для трейлинг-стопа (тип 2). |
| ts3 | Настройки типа 3 — Настройки для типа трейлинг-стопа 3. |
| Type 3 first level pip gain (FirstMove) | Первое движение (тип 3) — Первый уровень прироста в pip'ах для трейлинг-стопа типа 3. |
| Move Stop to Breakeven (FirstStopLoss) | Первый стоп-лосс (тип 3) — Установка стоп-лосса на уровне безубыточности после первого движения (тип 3). |
| Type 3 second level pip gain (SecondMove) | Второе движение (тип 3) — Второй уровень прироста в pip'ах для трейлинг-стопа типа 3. |
| Move stop to lock is profit (SecondStopLoss) | Второй стоп-лосс (тип 3) — Установка стоп-лосса для фиксации прибыли после второго движения (тип 3). |
| type 3 third level pip gain (ThirdMove) | Третье движение (тип 3) — Третий уровень прироста в pip'ах для трейлинг-стопа типа 3. |
| Move stop and trail from there (TrailingStop3) | Трейлинг-стоп 3 (pip) — Расстояние трейлинга в pip'ах после третьего уровня (тип 3). |
| Possible fix for not getting closed (Slippage) | Проскальгивание — Допустимое проскальгивание в пунктах при выполнении ордеров. |
| sm0 | Фильтр часов — Текстовое описание фильтра торговых часов. |
| sm1 | Часовой пояс — Указание на часовой пояс GMT и летнее время. |
| sm2 | Включение фильтра часов — Описание включения фильтра торговых часов. |
| UseTradingHours | Фильтр торговых часов — Включение/отключение фильтра торговых часов (0 — выкл, 1 — вкл). |
| sm4 | Азиатский рынок описание — Описание торговли на азиатском рынке. |
| TradeAsianMarket | Азиатский рынок — Включение/отключение торговли на азиатском рынке (0 — выкл, 1 — вкл). |
| Start trades after time (AsianStart) | Азиатский старт — Время начала торговли на азиатском рынке (в GMT-часах). |
| Stop trading after time (AsianStop) | Азиатский стоп — Время окончания торговли на азиатском рынке (в GMT-часах). |
| sm5 | Европейский рынок описание — Описание торговли на европейском рынке. |
| TradeEuropeanMarket | Европейский рынок — Включение/отключение торговли на европейском рынке (0 — выкл, 1 — вкл). |
| Start trades after time (EurStart) | Европейский старт — Время начала торговли на европейском рынке (в GMT-часах). |
| Stop trading after time (EurStop) | Европейский стоп — Время окончания торговли на европейском рынке (в GMT-часах). |
| sm6 | Нью-Йоркский рынок описание — Описание торговли на нью-йоркском рынке. |
| TradeNewYorkMarket | Нью-Йоркский рынок — Включение/отключение торговли на нью-йоркском рынке (0 — выкл, 1 — вкл). |
| Start trades after time (NYStart) | Нью-Йорк старт — Время начала торговли на нью-йоркском рынке (в GMT-часах). |
| Stop trading after time (NYStop) | Нью-Йорк стоп — Время окончания торговли на нью-йоркском рынке (в GMT-часах). |
Поиск по коду файла
#include <stdlib.mqh>
extern string Expert_Name = "DMAC_EA";
extern int MagicNumberBase = 200000;
extern string UserComment = "DMAC";
extern string stf0 = "---TimeFrames---";
extern string stf1 = "1. Month";
extern string stf2 = "2. Week";
extern string stf3 = "3. Day";
extern string stf4 = "4. 4 Hour";
extern string stf5 = "5. 1 Hour";
extern string stf6 = "6. 30 minute";
extern string stf7 = "7. 15 minute";
extern string stf8 = "8. 5 minute";
extern string stf9 = "9. 1 minute";
extern int TradeTimeFrame = 5;
extern string ma0 = "Moving Average Modes";
extern string ma1 = " 0=sma, 1=ema, 2=smma";
extern string ma2 = " 3=lwma, 4=LSMA";
extern int FastMA_Mode = 1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int FastMA_Period = 5;
extern string p = "--Applied Price Types--";
extern string p0 = " 0 = close";
extern string p1 = " 1 = open";
extern string p2 = " 2 = high";
extern string p3 = " 3 = low";
extern string p4 = " 4 = median(high+low)/2";
extern string p5 = " 5 = typical(high+low+close)/3";
extern string p6 = " 6 = weighted(high+low+close+close)/4";
extern int FastMA_AppliedPrice = 0; // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SlowMA_Mode = 1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int SlowMA_Period = 12;
extern int SlowMA_AppliedPrice = 0; // 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SignalCandle=1;
extern string mm = "---Money Management---";
extern double Lots=1.0;
extern double MaxLots = 100;
extern bool UseMoneyManagement = true; // Change to false to shutdown money management controls.
extern bool BrokerIsIBFX = false;
extern string m1="Set mini and micro to false for standard account";
extern bool AccountIsMini = false;
extern bool AccountIsMicro = false;
extern string fm="UseFreeMargin = false to use Account Balance";
extern bool UseFreeMargin = false;
extern double TradeSizePercent = 10; // Change to whatever percent of equity you wish to risk.
extern bool BrokerPermitsFractionalLots = true;
extern string st6 = "--Profit Controls--";
extern double StopLoss = 250; // Maximum pips willing to lose per position.
extern int TakeProfit = 0; // Maximum profit level achieved.
extern string tsp0 = "--Trailing Stop Types--";
extern string tsp1 = " 1 = Trail immediately";
extern string tsp2 = " 2 = Wait to trail";
extern string tsp3 = " 3 = Uses 3 levels before trail";
extern bool UseTrailingStop = true;
extern int TrailingStopType = 3; // Type 1 moves stop immediately, Type 2 waits til value of TS is reached
extern string ts2 = "Settings for Type 2";
extern double TrailingStop = 40; // Change to whatever number of pips you wish to trail your position with.
extern string ts3 = "Settings for Type 3";
extern double FirstMove = 20; // Type 3 first level pip gain
extern double FirstStopLoss = 15; // Move Stop to Breakeven
extern double SecondMove = 30; // Type 3 second level pip gain
extern double SecondStopLoss = 20; // Move stop to lock is profit
extern double ThirdMove = 40; // type 3 third level pip gain
extern double TrailingStop3 = 20; // Move stop and trail from there
extern int Slippage = 10; // Possible fix for not getting closed
extern string sm0="--Trading Hours Filter--";
extern string sm1=" Times are GMT when UseDST=false";
extern string sm2="UseTradingHours - Enter 0 for false, 1 for true";
extern int UseTradingHours = 0;
extern string sm4="TradeAsian - Enter 0 for false, 1 for true";
extern int TradeAsianMarket = 1;
extern int AsianStart = 100; // Start trades after time
extern int AsianStop = 300; // Stop trading after time
extern string sm5="Trade Europe - Enter 0 for false, 1 for true";
extern int TradeEuropeanMarket = 1;
extern int EurStart = 900; // Start trades after time
extern int EurStop = 1100; // Stop trading after time
extern string sm6="Trade NY - Enter 0 for false, 1 for true";
extern int TradeNewYorkMarket = 0;
extern int NYStart = 1300; // Start trades after time
extern int NYStop = 1500; // Stop trading after time
bool YesStop;
int MagicNumber=0;
string setup;
double lotMM;
int TradesInThisSymbol;
double myPoint;
int allTF[9]={PERIOD_MN1,PERIOD_W1,PERIOD_D1,PERIOD_H4,PERIOD_H1,PERIOD_M30,PERIOD_M15,PERIOD_M5,PERIOD_M1};
int tf1;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
}
double SetPoint(string mySymbol)
{
double mPoint, myDigits;
myDigits = MarketInfo (mySymbol, MODE_DIGITS);
if (myDigits < 4)
mPoint = 0.01;
else
mPoint = 0.0001;
return(mPoint);
}
double LSMA(int TimeFrame, int LSMAPeriod, int LSMAPrice,int shift)
{
double wt;
double ma1=iMA(NULL,TimeFrame,LSMAPeriod,0,MODE_SMA ,LSMAPrice,shift);
double ma2=iMA(NULL,TimeFrame,LSMAPeriod,0,MODE_LWMA,LSMAPrice,shift);
wt = MathFloor((3.0*ma2-2.0*ma1)/myPoint)*myPoint;
return(wt);
}
bool CheckExitCondition(int TradeType)
{
bool YesClose;
double fMA, myClose;
YesClose = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(tf1,FastMA_Period,FastMA_AppliedPrice,SignalCandle);
}
else
{
fMA = iMA(NULL, tf1, FastMA_Period, 0, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
myClose = iClose(Symbol(), tf1, SignalCandle);
if (TradeType == OP_BUY && myClose < fMA ) YesClose = true;
if (TradeType == OP_SELL && myClose > fMA) YesClose = true;
return (YesClose);
}
bool CheckEntryCondition(int TradeType)
{
bool YesTrade;
double fMA, sMA, myClose;
YesTrade = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(tf1,FastMA_Period,FastMA_AppliedPrice,SignalCandle);
}
else
{
fMA = iMA(NULL, tf1, FastMA_Period, 0, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
if (SlowMA_Mode == 4)
{
sMA = LSMA(tf1,SlowMA_Period,SlowMA_AppliedPrice,SignalCandle);
}
else
{
sMA = iMA(NULL, tf1, SlowMA_Period, 0, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
}
myClose = iClose(Symbol(), tf1, SignalCandle);
if (TradeType == OP_BUY && fMA > sMA && myClose > fMA) YesTrade = true;
if (TradeType == OP_SELL && fMA < sMA && myClose < fMA) YesTrade = true;
return (YesTrade);
}
int start()
{
// код доступен только после оплаты
}
void OpenTrade(int signal, double myLots)
{
int res, ticket, err;
double TPprice,STprice;
RefreshRates();
if (signal==OP_BUY)
{
res=OrderSend(Symbol(), OP_BUY, myLots, Ask, Slippage, 0, 0, UserComment, MagicNumber, 0, Green);
if (res > 0)
{
ticket = res;
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
if (StopLoss != 0 || TakeProfit != 0)
{
TPprice = 0.0;
if (TakeProfit > 0) TPprice=TakeLong(OrderOpenPrice(), TakeProfit, myPoint);
STprice = 0.0;
if (StopLoss > 0)
{
STprice=StopLong(OrderOpenPrice(), StopLoss, myPoint);
STprice = ValidStopLoss(Symbol(), OP_BUY,Bid, STprice, myPoint);
}
if (Digits > 0)
{
STprice = NormalizeDouble( STprice, Digits);
TPprice = NormalizeDouble( TPprice, Digits);
}
ModifyOrder(ticket, OrderOpenPrice(), STprice, TPprice, LightGreen);
}
}
}
else if (signal==OP_SELL)
{
res=OrderSend(Symbol(), OP_SELL, myLots, Bid, Slippage, 0, 0, UserComment, MagicNumber, 0, Red);
if (res > 0)
{
ticket = res;
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
if (StopLoss != 0 || TakeProfit != 0)
{
TPprice = 0.0;
if (TakeProfit > 0) TPprice=TakeShort(OrderOpenPrice(),TakeProfit, myPoint);
STprice = 0.0;
if (StopLoss > 0)
{
STprice=StopShort(OrderOpenPrice(), StopLoss, myPoint);
STprice = ValidStopLoss(Symbol(), OP_SELL,Ask, STprice, myPoint);
}
if (Digits > 0)
{
STprice = NormalizeDouble( STprice, Digits);
TPprice = NormalizeDouble( TPprice, Digits);
}
ModifyOrder(ticket, OrderOpenPrice(), STprice, TPprice, LightGreen);
}
}
}
if(res<0)
{
err = GetLastError();
Print("OrderSend failed with error(" + err + ") " + ErrorDescription(err) + " Lots:" + DoubleToStr(myLots, 2) );
}
return;
}
int CheckOpenPositions()
{
int cnt, NumPositions;
int NumBuyTrades, NumSellTrades; // Number of buy and sell trades in this symbol
NumBuyTrades = 0;
NumSellTrades = 0;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY ) NumBuyTrades++;
if(OrderType() == OP_SELL ) NumSellTrades++;
}
NumPositions = NumBuyTrades + NumSellTrades;
return (NumPositions);
}
int HandleOpenPositions()
{
int cnt;
bool YesClose;
double pt;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)Показано первые 50% кода (символов: 14565)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.