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

Hans123 Expert Advisor

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

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

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

О программе

Советник Hans123 Expert Advisor для платформы MetaTrader 4 предназначен для автоматической торговли на валютном рынке. Он работает в рамках двух заданных торговых сессий и размещает отложенные ордера типа BUYSTOP и SELLSTOP на основе анализа ценовых уровней за прошедший период сессии. Каждая сессия имеет собственные параметры начала и длительности, задаваемые пользователем.

Советник управляет открытыми позициями: закрывает устаревшие ордера предыдущих дней при активированной соответствующей настройке, модифицирует стоп-лосс по выбранному методу расчёта трейлинг-стопа. Доступны три варианта расчёта трейлинг-стопа — фиксированный отступ в пунктах, на основе индикатора ATR и на основе диапазона баров. Также реализована защита инвестиций с возможностью фиксации цены открытия при достижении определённого уровня прибыли.

Для каждого торгового инструмента советник использует индивидуальные параметры входа в позицию, уровня стоп-лосса и тейк-профита, которые задаются внутренне в зависимости от торговой пары. Ордера идентифицируются уникальными магическими числами, что позволяет советнику различать свои позиции на счёте. Перед размещением новых ордеров проверяется доступный свободный маржинал.

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

НастройкаОписание
BeginSession1 Начало первой сессии — Час начала первой торговой сессии для размещения отложенных ордеров
LengthSession1 Длительность первой сессии — Длительность первой торговой сессии в часах, используемая для определения ценового диапазона
BeginSession2 Начало второй сессии — Час начала второй торговой сессии для размещения отложенных ордеров
LengthSession2 Длительность второй сессии — Длительность второй торговой сессии в часах, используемая для определения ценового диапазона
Lots Объём лотов — Размер позиции в лотах для каждой сделки
LocalTimeZone Локальный часовой пояс — Часовой пояс локального сервера, используемый для расчёта времени валидности ордеров
DestTimeZone Часовой пояс назначения — Часовой пояс целевого рынка, используемый для сдвига времени торговых сессий
ClsOnlUnprTX Закрытие нереализованных ордеров — Флаг автоматического закрытия нереализованных ордеров предыдущих торговых дней
ProtectYourInvestments Защита инвестиций — Флаг включения защиты при модификации стоп-лосса: фиксация цены открытия при достижении прибыли
Type_TS_Calc Тип расчёта трейлинг-стопа — Выбор метода расчёта уровня трейлинг-стопа
FactorTSCalculation Множитель расчёта трейлинг-стопа — Коэффициент, используемый в методах расчёта трейлинг-стопа на основе ATR или диапазона баров
Получить полный код

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

#include <stdlib.mqh>

extern int                       BeginSession1=          5;
extern int                       LengthSession1=         4;
extern int                       BeginSession2=          9;
extern int                       LengthSession2=         4;

extern double                    Lots =                  1;

extern int                       LocalTimeZone=          1;
extern int                       DestTimeZone=           1;

extern int                       ClsOnlUnprTX=1;                                  
extern int                       ProtectYourInvestments= 1;                       
extern int                       Type_TS_Calc=           1;                                  
extern double                    FactorTSCalculation =   0.5;

datetime                         bartime =               0;
double                           Slippage=               3;
int                              OrderInterval =         10000;

int start()
   {
      // код доступен только после оплаты
   }
   int                           cnt, ticket, err, i, j;
   int                           MagicNumber;
   double                        ts, tp, sl, LowestPrice, HighestPrice, Price;
   bool                          Order[5];
   string                        setup;
   datetime                      Validity=0;
   double                        TrailingStop;
   double                        TakeProfit;
   double                        InitialStopLoss;
   int                           PipsForEntry;
   int                           TimeZoneDiff= LocalTimeZone - DestTimeZone;   

	MagicNumber = func_Symbol2Val(Symbol()); 

   setup="H123v8.1_" + Symbol();

   if (Symbol()=="GBPUSD") 
   {
      PipsForEntry= 13;
      TrailingStop = 32;
      TakeProfit = 62;
      InitialStopLoss=52;
   } 

    else    if (Symbol()=="EURUSD") 
    {
      PipsForEntry= 13;
      TrailingStop = 30;
      TakeProfit = 52;
      InitialStopLoss=42;
    } 

    else    if (Symbol()=="USDCHF") 
    {
      PipsForEntry= 13;
      TrailingStop = 30;
      TakeProfit = 62;
      InitialStopLoss=52;
    } 

    else 
    {      
      PipsForEntry= 13;
      TrailingStop = 32;
      TakeProfit = 52;
      InitialStopLoss=42;
    } 

   if (bartime == Time[0]) 
   {
      return(0);
   } 

   else 
   {
      bartime = Time[0]; 
   }

   for(cnt=OrdersTotal();cnt>=0;cnt--)
   {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
      err = GetLastError();
  		if (err>1) { Print("Error selecting order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); }

      if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber()==(MagicNumber+1) || OrderMagicNumber()==(MagicNumber+3))) {
      	if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {
            if (ClsOnlUnprTX==1) {
               if(Bid-OrderOpenPrice()<Point*TrailingStop) {
                  OrderClose(OrderTicket(), Lots, Bid, 3, Red);
               }  
            } else {
         		 OrderClose(OrderTicket(), Lots, Bid, 3, Red);
         	}
            err = GetLastError();
      		if (err>1) { Print("Error closing buy order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); }
			} else if (TrailingStop>0) {
			   if (ProtectYourInvestments==1 && Bid-OrderOpenPrice()>Point*TrailingStop) {
			      ts = OrderOpenPrice();
			   } else {
			      if (Type_TS_Calc==1) {
                  ts = Bid-(Point*TrailingStop);
               } else if (Type_TS_Calc==2) {
                  ts = Low[0] - FactorTSCalculation * iATR(NULL,0,14,0);
               } else if (Type_TS_Calc==3) {
                  ts = Low[0] - (FactorTSCalculation *(High[0]-Low[0]));
               }
				}
				if (OrderStopLoss()<ts && Bid-OrderOpenPrice()>Point*TrailingStop) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
            err = GetLastError();
      		if (err>1) { Print("Error modifying buy order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); }
			}
      } else if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber()==(MagicNumber+2) || OrderMagicNumber()==(MagicNumber+4))) {
      	if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {
            if (ClsOnlUnprTX==1) {
               if((OrderOpenPrice()-Ask)<(Point*TrailingStop)) {
                  OrderClose(OrderTicket(), Lots, Ask, 3, Red);
               }
            } else {
         		 OrderClose(OrderTicket(), Lots, Ask, 3, Red);
         	}
            err = GetLastError();
      		if (err>1) { Print("Error closing Sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); }
			} else if (TrailingStop>0) {	
			   if (ProtectYourInvestments==1 && (OrderOpenPrice()-Ask)>(Point*TrailingStop)) {
			      ts = OrderOpenPrice();
			   } else {
			      if (Type_TS_Calc==1) {
                  ts = Ask+(Point*TrailingStop);
               } else if (Type_TS_Calc==2) {
                  ts = High[0] + FactorTSCalculation * iATR(NULL,0,14,0);
               } else if (Type_TS_Calc==3) {
                  ts = High[0] + (FactorTSCalculation *(High[0]-Low[0]));
               }
				}

				if (OrderStopLoss()>ts && (OrderOpenPrice()-Ask)>(Point*TrailingStop)) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
            err = GetLastError();
      		if (err>1) { Print("Error modifyin sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); }
			}
		}
		}
	}

   if(AccountFreeMargin()<(1000*Lots)) return(0);  

	Validity=StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0]) + "." + TimeDay(Time[0]) + " 23:59")+(TimeZoneDiff*3600);

	for(i=1;i<5;i++) { Order[i]=false; } 

   for(cnt=OrdersTotal();cnt>=0;cnt--)
   {

      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

		err = GetLastError();

      if(OrderSymbol()==Symbol() && OrderMagicNumber()==(MagicNumber+1)) 
      {
      	Order[1]=true;
      } 

      else if (OrderSymbol()==Symbol() && OrderMagicNumber()==(MagicNumber+2)) 
      {
      	Order[2]=true;
      } 

      else if (OrderSymbol()=

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

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

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

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

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

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

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