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

silvertrendtrader_v7.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный код представляет собой торгового советника (эксперта) для платформы MetaTrader 4 на языке MQL4. Советник использует пользовательские индикаторы SilverTrend_Signal, а также вспомогательные расчёты углов EMA и CCI для формирования сигналов на вход в длинную или короткую позицию. Советник управляет открытыми ордерами: закрывает позиции по сигналу разворота, устанавливает и модифицирует трейлинг-стоп, а также выставляет начальный стоп-лосс и тейк-прифит при открытии новой сделки. Торговля блокируется в пятничную ночь и при недостаточном свободном марже.

Настройки программы

НастройкаОписание
MAPeriod Период MA — Период используемого скользящего среднего для расчёта углов EMA и CCI.
1 = SilverTrend / 2 = (PrimaryType) Тип первичного сигнала — Выбор источника первичного сигнала: 1 — SilverTrend, 2 — альтернативный метод.
0 = nothing / 1 = EMAAngle / 2 = CCIAngle (SecondaryType) Тип вторичного фильтра — Выбор дополнительного подтверждения сигнала: 0 — без фильтра, 1 — угол EMA, 2 — угол CCI.
1 - yes / 0 - no (SignalOfFullCandle) Сигнал по полной свече — Если 1, сигнал формируется по закрытой свече со сдвигом на 1 бар; если 0 — по текущему бару.
AngleTreshold Порог угла — Пороговое значение угла для подтверждения сигнала при использовании вторичного фильтра.
TrailingStop Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах от текущей цены; 0 означает отключение.
TakeProfit Тейк-прифит — Расстояние тейк-прифита в пунктах от цены входа; 0 означает отсутствие.
InitialStopLoss Начальный стоп-лосс — Расстояние начального стоп-лосса в пунктах от цены входа; 0 означает отсутствие.
Lots Объём сделки — Размер лота для открытия позиции.
FridayNightHour Час пятничной ночи — Час начала блокировки новых сделок в пятницу; 0 означает отключение блокировки.
Получить полный код

Поиск по коду файла

#include <stdlib.mqh>

#property stacksize   1024

extern int     MAPeriod=120;
extern int     PrimaryType=1;      // 1 = SilverTrend / 2 = 
extern int     SecondaryType=2; // 0 = nothing / 1 = EMAAngle / 2 = CCIAngle
extern int     SignalOfFullCandle=1; // 1 - yes / 0 - no

extern double  AngleTreshold=0.3;

extern int     TrailingStop =0;
extern int     TakeProfit = 10;
extern int     InitialStopLoss=25;

extern double  Lots = 1;

extern double  FridayNightHour=16;

datetime       bartime;
double         Slippage=3;
int            Signal=0, OldSignal=0;

int start()
   {
      // код доступен только после оплаты
   }
   int cnt, ticket, err, result, total, shift;
   int has_a_short_trade=0, has_a_long_trade=0;
   int MagicNumber;
   double ts, tp, Min_OrderPrice;
   bool LongSignal, ShortSignal, ExitLong, ExitShort;
   double dummy1[], dummy2[], dummy3[], dummy4[];
   string setup;

	MagicNumber = 3500 + func_Symbol2Val(Symbol())*100 + func_TimeFrame_Const2Val(Period()); 

   setup="STv7_" + Symbol() + "_" + func_TimeFrame_Val2String(func_TimeFrame_Const2Val(Period()));

   if (SignalOfFullCandle==1) {
      shift=1;
   } else {
      shift=0;
   }

   if(PrimaryType==1) {
      double Plus=iCustom(NULL, 0, "SilverTrend_Signal", 0, shift);
      double Minus=iCustom(NULL, 0, "SilverTrend_Signal", 1, shift);

      if (Plus>0) {
         Signal=1;
      } else if (Minus>0) {
         Signal=-1;
      } else {
         Signal=0;
      }   
   } else if(PrimaryType==2) {

   }   

   if (SecondaryType==0) {
      if (OldSignal!=Signal && Signal>0) {
         Print("EnterLong");
         LongSignal=true;
         ShortSignal=false;
      } else if (OldSignal!=Signal && Signal<0) {
         Print("EnterShort");
         LongSignal=false;
         ShortSignal=true;
      } else {
         LongSignal=false;
         ShortSignal=false;
      }   
      OldSignal=Signal;
   } else if (SecondaryType==1) { // EMAAngle
      double EMA_Angle=EMAAngle(MAPeriod, 0, shift);
      if (OldSignal!=Signal && Signal>0 && EMA_Angle>AngleTreshold) {
         Print("EnterLong");
         LongSignal=true;
         ShortSignal=false;
      } else if (OldSignal!=Signal && Signal<0  && EMA_Angle<-AngleTreshold) {
         Print("EnterShort");
         LongSignal=false;
         ShortSignal=true;
      } else {
         LongSignal=false;
         ShortSignal=false;
      }   
      OldSignal=Signal;
   } else if (SecondaryType==2) { // CCIANgle
      double CCI_Angle=CCIAngle(MAPeriod, 0, shift);
      if (OldSignal!=Signal && Signal>0 && CCI_Angle>AngleTreshold) {
         Print("EnterLong");
         LongSignal=true;
         ShortSignal=false;
      } else if (OldSignal!=Signal && Signal<0  && CCI_Angle<-AngleTreshold){
         Print("EnterShort");
         LongSignal=false;
         ShortSignal=true;
      } else {
         LongSignal=false;
         ShortSignal=false;
      }   
      OldSignal=Signal;
   } 

   if (Signal>0) {
         Print("ExitShort");
      ExitLong=false;
      ExitShort=true;
   } else if (Signal<0) {
         Print("ExitLong");
      ExitLong=true;
      ExitShort=false;
   } else {
      ExitLong=false;
      ExitShort=false;
   }   

   Comment(Signal + " " + OldSignal + " " + CCI_Angle);

   total = OrdersTotal();

   for(cnt=total;cnt>=0;cnt--)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      OrderPrint();

      if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber) {
      Print("Identified");
         if(ExitLong) {	
            Print("Close Long");
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); // close position
            err = GetLastError();

   			if (err>1) {
               Print("Error closing BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup); 
				}
				return(0);

         } else if(TrailingStop>0) {
            if(Bid-OrderOpenPrice()>Point*TrailingStop) {
               ts = Bid-Point*TrailingStop;
            } 

				if((OrderStopLoss()<ts) || (OrderStopLoss()==0)) {
			      result=OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
					err = GetLastError();

					if (err>1) {
                  Print("Error modifying BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup); 
					}
				} 
			}
      } else if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber) {
      Print("Identified");
   		if (ExitShort) {
            Print("Close Short");
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet); // close position
            err = GetLastError();

   			if (err>1) {
               Print("Error closing SELL order [" + setup + "]: (" + err + ") " + ErrorDescription(err) + " " + setup); 
				}
				return(0);

         } else if(TrailingStop>0) {                 
            if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) {
               ts=Ask+Point*TrailingStop;
            }

	         if((ts!=0) && ((OrderStopLos

Показано первые 50% кода (символов: 7087)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
708,70₽ ≈ $8.66