smc ma xover.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smc ma xover.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SMC — это торговый советник для MetaTrader 4 на языке MQL4, реализующий стратегию на основе пересечения скользящих средних и индикатора огибающих. Советник анализирует краткосрочную EMA и долгосрочную LWMA в сочетании с верхней и нижней полосой огибающих для формирования сигналов на открытие и закрытие позиций.
При открытии длинной позиции короткосрочная EMA пересекает LWMA снизу вверх, а цена находится выше верхней полосы огибающих. Для короткой позиции условия зеркальны: EMA пересекает LWMA сверху вниз, а цена — ниже нижней полосы. Советник рассчитывает уровень риска на основе свободного маржинального баланса счета.
В советнике реализованы управление позициями, ограничение количества открытых ордеров на символ (до 2), уведомления через Alert и SendMail, а также логика фиксации прибыли и трейлинг-стопа. Часть функциональных блоков (трейлинг-стоп, проверка истории) в текущей версии отключены условной конструкцией и не активны при запуске.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Размер лота — Размер лота для открытия ордеров (double). |
| RiskPercent | Процент риска — Процент свободного маржинального баланса, используемый для расчёта риска (double). |
| TakeProfit | Тейк-профит — Уровень тейк-профита для ордеров (double). В текущих ордерах не используется. |
| LockProfit | Фиксация прибыли — Уровень фиксации прибыли (double). Функциональный блок в текущей версии отключён. |
| InitialStop | Начальный стоп-лосс — Начальный уровень стоп-лосса для ордеров (double). |
| TrailingStop | Трейлинг-стоп — Расстояние трейлинг-стопа (int, в пунктах). Функциональный блок в текущей версии отключён. |
| daily in minutes (TrendTimescale) | Таймфрейм тренда — Таймфрейм анализа тренда в минутах (int). По умолчанию 1440 — дневной. |
| TrendLongMA | Период долгой трендовой СС — Период долгосрочной скользящей средней для определения тренда (int). |
| TrendMediumMA | Период средней трендовой СС — Период средней скользящей средней для определения тренда (int). |
| PP1 | Уровень защиты 1 — Первый уровень ценовой защиты для фиксации прибыли (int, в пунктах). Блок отключён. |
| PP2 | Уровень защиты 2 — Второй уровень ценовой защиты для фиксации прибыли (int, в пунктах). Блок отключён. |
| PP3 | Уровень защиты 3 — Третий уровень ценовой защиты для фиксации прибыли (int, в пунктах). Блок отключён. |
| PP4 | Уровень защиты 4 — Четвёртый уровень ценовой защиты для фиксации прибыли (int, в пунктах). Блок отключён. |
| PV1 | Параметр фиксации 1 — Первый параметр фиксации прибыли после достижения уровня PP1 (int, в пунктах). Блок отключён. |
| PV2 | Параметр фиксации 2 — Второй параметр фиксации прибыли после достижения уровня PP2 (int, в пунктах). Блок отключён. |
| SignalSMA | Период краткой СС — Период краткосрочной скользящей средней для сигнальной логики (int). |
| SignalMMA | Период средней СС — Период средней скользящей средней для сигнальной логики (int). |
| SignalLMA | Период долгой СС — Период долгосрочной скользящей средней для сигнальной логики (int). |
Поиск по коду файла
extern double Lots = 0.1;
extern double RiskPercent = 1;
extern double TakeProfit = 50;
extern double LockProfit = 2;
extern double InitialStop = 30;
extern double TrailingStop = 25;
extern int TrendTimescale= 1440; // daily in minutes
extern int TrendLongMA = 70;
extern int TrendMediumMA = 45;
extern int PP1=15;
extern int PP2=25;
extern int PP3=55;
extern int PP4=75;
extern int PV1=15;
extern int PV2=45;
extern int SignalSMA=12;
extern int SignalMMA=45;
extern int SignalLMA=70;
datetime BarTime;
int cnt,tmp;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
double SL;
double Spread, ATR, MinDist;
double MaxRisk;
double HighVal, LowVal; //Breakout Prices
bool CloseLongs,CloseShorts;
bool Buy,Sell;
bool BuyZone, SellZone;
int total,ticket,err,tmp;
int NumberofPositions;
string MaxRiskStr;
datetime tmpstring;
double LMAP1,LMAP2,MMAP1,MMAP2,SMAP1,SMAP2;
double EnvHighP1,EnvHighP2,EnvLowP1,EnvLowP2;
if(Bars<100){Print("bars less than 100"); return(0); }
if(BarTime == Time[0]) {return(0);}
BarTime = Time[0];
MinDist=(MarketInfo(Symbol(),MODE_STOPLEVEL)*Point);
Spread=(Ask-Bid);
MaxRisk=(AccountFreeMargin()*RiskPercent/100)*Point();
MaxRiskStr=DoubleToStr(MaxRisk,4);
LMAP1= iMA(NULL,0,60,0,MODE_LWMA,PRICE_CLOSE,1);
LMAP2= iMA(NULL,0,60,0,MODE_LWMA,PRICE_CLOSE,2);
SMAP1= iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,1);
SMAP2= iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,2);
EnvHighP1=iEnvelopes(NULL,0,40,MODE_LWMA,0,PRICE_CLOSE,0.05,MODE_UPPER,1);
EnvHighP2=iEnvelopes(NULL,0,40,MODE_LWMA,0,PRICE_CLOSE,0.05,MODE_UPPER,2);
EnvLowP1 =iEnvelopes(NULL,0,40,MODE_LWMA,0,PRICE_CLOSE,0.05,MODE_LOWER,1);
EnvLowP2 =iEnvelopes(NULL,0,40,MODE_LWMA,0,PRICE_CLOSE,0.05,MODE_LOWER,2);
/*
string Trend="None";
if(MMAP1 > LMAP1) Trend="UP";
if(MMAP1 < LMAP1) Trend="DOWN";
*/
Buy=false;
if(SMAP2 < LMAP2 && SMAP1 > LMAP1 && SMAP1 > EnvHighP1)
{
Buy=true;
Alert(SMAP1," ",LMAP1," ",SMAP2," ",LMAP2," ",EnvHighP1);
SL=LMAP1-MaxRisk;
SL=0;
}
Sell =false;
if(SMAP2 > LMAP2 && SMAP1 < LMAP1 && SMAP1 < EnvLowP1)
{
Sell=true;
SL=LMAP1+MaxRisk;
SL=0;
}
CloseLongs = false;
CloseShorts = false;
if(SMAP1<LMAP1) CloseLongs = true;
if(SMAP1>LMAP1) CloseShorts= true;
if(0==1) // CHECK THIS IS OFF
{
CloseLongs = true;
CloseShorts = true;
}
if(CloseLongs == true)
{
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{CloseLongs=false;
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close LONG position
SendMail(Symbol()+" BUY Order Closed @ "+Bid," ");
}}}}
if(CloseShorts == true)
{
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{CloseShorts=false;
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) // check for symbol
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close SHORT position
SendMailПоказано первые 50% кода (символов: 5020)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.