← К каталогу
Исходный код · ID 554

SMC

smc ma.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

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 и перейдите к оплате.

Стоимость полного кода
469,80₽ ≈ $5.74