SMC
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smc ma.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SMC — торговый советник для MetaTrader 4, использующий скользящие средние для определения тренда и генерации торговых сигналов. Советник рассчитывает три простые скользящие средние (SMA) с периодами 120, 100 и 2 на текущем таймфрейме и на их основе определяет направление рынка.
Сигнал на покупку формируется, когда средняя периода 100 расположена выше средней периода 120 (восходящий тренд) и короткая средняя пересекает среднюю снизу вверх. Сигнал на продажу — при обратных условиях (нисходящий тренд и пересечение вниз). При отсутствии нового бара советник не выполняет действий.
Реализованы правила закрытия позиций по ценовым уровням относительно долгой скользящей средней, управление ордерами через торговые функции MetaTrader (открытие, закрытие, модификация), а также уведомления (Alert, SendMail) при открытии и закрытии сделок. Функции фиксации прибыли по уровням и проверка торговой истории в текущей версии отключены.
Перед открытием позиции советник проверяет достаточность свободного маржа. Параметры стоп-лосса, тейк-профита и трейлинг-стопа задаются пользователем, хотя часть из них в текущем коде не активирована.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Размер лота для открытия торговой позиции. |
| RiskPercent | Процент свободного маржа, используемый для расчёта максимального риска на позицию. |
| TakeProfit | Уровень тейк-профита для позиции в пунктах. |
| LockProfit | Уровень фиксации прибыли для перевода ордера в безубыточный (функция отключена в текущей версии). |
| InitialStop | Начальный стоп-лосс для позиции в пунктах. |
| TrailingStop | Расстояние трейлинг-стопа в пунктах. |
| PP1 | Первый пороговый уровень в пунктах для корректировки стоп-лосса (функция отключена). |
| PP2 | Второй пороговый уровень в пунктах для корректировки стоп-лосса (функция отключена). |
| PP3 | Третий пороговый уровень в пунктах для корректировки стоп-лосса (функция отключена). |
| PP4 | Четвёртый пороговый уровень в пунктах для корректировки стоп-лосса (функция отключена). |
| PV1 | Первое значение смещения в пунктах для фиксации прибыли (функция отключена). |
| PV2 | Второе значение смещения в пунктах для фиксации прибыли (функция отключена). |
| TrendTimescale | Временной масштаб для расчёта трендовых скользящих средних (в минутах; по умолчанию 1440 — дневной интервал). |
| TrendLongMA | Период долгой скользящей средней для определения тренда. |
| TrendMediumMA | Период средней скользящей средней для определения тренда. |
| SignalSMA | Период быстрой простой скользящей средней для формирования торговых сигналов. |
| SignalMMA | Период средней скользящей средней для формирования торговых сигналов. |
| SignalLMA | Период долгой скользящей средней для формирования торговых сигналов. |
Поиск по коду файла
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 PP1=50;
extern int PP2=100;
extern int PP3=150;
extern int PP4=200;
extern int PV1=50;
extern int PV2=100;
extern int TrendTimescale= 1440; // daily in minutes
extern int TrendLongMA = 70;
extern int TrendMediumMA = 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 DLMAP1,DLMAP2,DMMAP1,DMMAP2;
double LMAP1,LMAP2,MMAP1,MMAP2,SMAP1,SMAP2;
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,120,0,MODE_SMA,PRICE_CLOSE,1);
LMAP2= iMA(NULL,0,120,0,MODE_SMA,PRICE_CLOSE,2);
MMAP1= iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,1);
MMAP2= iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,2);
SMAP1= iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,1);
SMAP2= iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,2);
SL=0;
if(MMAP1 > LMAP1)// Trend
{
if(SMAP2 < MMAP2 && SMAP1 > MMAP1)
{
Buy=true;
SL=0;//LMAP1+MinDist;
}}
Sell =false;
if(MMAP1 < LMAP1)// Trend
{
if(SMAP2 > MMAP2 && SMAP1 < MMAP1)
{
Sell=true;
SL=0;//LMAP1-MinDist;
}}
CloseLongs = false;
CloseShorts = false;
if(Close[0]<LMAP1) CloseLongs = true;
if(Close[0]>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(Symbol()+" SELL Order Closed @ "+ Ask," ");
}}}}
if(0==1)
{
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_Показано первые 50% кода (символов: 4698)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.