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

Goblin

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

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

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

О программе

Goblin — торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Основан на оригинальной разработке 10Point 3, модифицирован для использования кастомных индикаторов на основе алгоритма Юрика (Turbo_JRSX и Turbo_JVEL) с целью определения направления тренда. Советник анализирует динамику индикаторов на часовом графике H4 и открывает позиции в соответствии с текущим трендом.

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

Goblin использует торговые операции MetaTrader через стандартные функции OrderSend и OrderModify, идентифицирует свои ордера с помощью магического номера. Информация о текущих позициях и состоянии отображается через объект Comment на графике. Все параметры настраиваются пользователем через внешние переменные.

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

НастройкаОписание
Profit Goal for the latest order opened (TakeProfit) Целевая прибыль для последнего открытого ордера (в пипсах)
First order will be for this lot size (Lots) Размер лота для первого ордера
StopLoss (InitialStop) Начальный стоп-лосс
Pips to trail the StopLoss (TrailingStop) Расстояние для трейлинг-стопа (в пипсах)
Maximum number of orders to open (MaxTrades) Максимальное количество открытых ордеров
Distance in Pips from one order to another (Pips) Расстояние в пипсах между ордерами
If profit made is bigger than SecureProfit we close the orders (SecureProfit) Порог прибыли в пипсах, при превышении которого все ордера закрываются
This number subtracted from MaxTrades is the number of open orders to enable the account protection. (OrderstoProtect) Количество ордеров, вычитаемое из MaxTrades, определяющее число открытых позиций для включения защиты аккаунта
If one the decision to go long/short will be reversed (ReverseCondition) Переключатель разворота направления сделки (длинная/короткая позиция)
Year to start (only for backtest) (StartYear) Год начала торговли (для бэктеста)
Month to start (only for backtest) (StartMonth) Месяц начала торговли (для бэктеста)
Year to stop trading (backtest and live) (EndYear) Год окончания торговли (для бэктеста и живой торговли)
Month to stop trading (backtest and live) (EndMonth) Месяц окончания торговли (для бэктеста и живой торговли)
if 1, the lots size will increase based on account size (mm) Включение автоматического расчёта размера лота на основе размера аккаунта (1 — включено)
risk to calculate the lots size (only if mm is enabled) (risk) Процент риска для расчёта размера лота (действует только при включённом mm)
Magic number for the orders placed (Magic) Магический номер для идентификации ордеров советника
Получить полный код

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

extern double    TakeProfit = 40;           // Profit Goal for the latest order opened
extern double    Lots = 0.1;                // First order will be for this lot size
extern double    InitialStop = 0;           // StopLoss
extern double    TrailingStop = 20;         // Pips to trail the StopLoss

extern int       MaxTrades=10;              // Maximum number of orders to open
extern int       Pips=15;                   // Distance in Pips from one order to another
extern int       SecureProfit=10;           // If profit made is bigger than SecureProfit we close the orders
extern int       AccountProtection=1;       // If one the account protection will be enabled, 0 is disabled
extern int       OrderstoProtect=3;         // This number subtracted from MaxTrades is the number of open orders to enable the account protection.

extern int       ReverseCondition=0;        // If one the decision to go long/short will be reversed
extern int       StartYear=2005;            // Year to start (only for backtest)
extern int       StartMonth=1;              // Month to start (only for backtest)
extern int       EndYear=2050;              // Year to stop trading (backtest and live)
extern int       EndMonth=12;               // Month to stop trading (backtest and live)

extern int       mm=0;                      // if 1, the lots size will increase based on account size
extern int       risk=12;                   // risk to calculate the lots size (only if mm is enabled)
extern int       AccountisNormal=0;         // Zero if account is not mini/micro                            
extern int       Magic = 123987;            // Magic number for the orders placed

int  OpenOrders=0, cnt=0;
int  slippage=5;
double sl=0, tp=0;
double BuyPrice=0, SellPrice=0;
double lotsi=0, mylotsi=0;
int mode=0, myOrderType=0;
bool ContinueOpening=True;
double LastPrice=0;
int  PreviousOpenOrders=0;
double Profit=0;
int LastTicket=0, LastType=0;
double LastClosePrice=0, LastLots=0;
double Pivot=0;
double PipValue=0;
string text="", text2="";
double DnTrendVal=0,UpTrendVal=0,TrendVal=0;
string TrendTxt="analyzing...";
int RSX_Period=17;
int trendtype=0;

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {

   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }

   if (AccountisNormal==1)
   {
	  if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000); }
		else { lotsi=Lots; }
   } else {  // then is mini
    if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000)/10; }
		else { lotsi=Lots; }
   }

   if (lotsi>100){ lotsi=100; }

   OpenOrders=0;
   for(cnt=0;cnt<OrdersTotal();cnt++)   
   {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
	  if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
	  {				
	  	  OpenOrders++;
	  }
   }     

   if (OpenOrders<1) 
   {
	  if (TimeYear(CurTime())<StartYear) { return(0);  }
	  if (TimeMonth(CurTime())<StartMonth) { return(0); }
	  if (TimeYear(CurTime())>EndYear) { return(0); }
	  if (TimeMonth(CurTime())>EndMonth ) { return(0); }
   }

   double PipValue = MarketInfo(Symbol(),MODE_TICKVALUE);
   if (PipValue==0) { PipValue=5; }

   if (PreviousOpenOrders>OpenOrders) 
   {	  
	  for(cnt=OrdersTotal();cnt>=0;cnt--)
	  {
	     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
	  	  mode=OrderType();
		  if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic) 
		  {
			if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); }
			if (mode==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red); }
			return(0);
		 }
	  }
   }

   PreviousOpenOrders=OpenOrders;
   if (OpenOrders>=MaxTrades) 
   {
	  ContinueOpening=False;
   } else {
	  ContinueOpening=True;
   }

   if (LastPrice==0) 
   {
	  for(cnt=0;cnt<OrdersTotal();cnt++)
	  {	
	    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
		 mode=OrderType();	
		 if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic) 
		 {
			LastPrice=OrderOpenPrice();
			if (mode==OP_BUY) { myOrderType=2; }
			if (mode==OP_SELL) { myOrderType=1;	}
		 }
	  }
   }

   if (OpenOrders<1) 
   {
     myOrderType=OpenOrdersBasedOnTrendRSX();
 	  if (ReverseCondition==1)
	  {
	  	  if (myOrderType==1) { myOrderType=2; }
		  else { if (myOrderType==2) { myOrderType=1; } }
	  }
   }

   Check_Trend();

   for(cnt=OrdersTotal();cnt>=0;cnt--)
   {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
	  if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
	  {	
	  	  if (OrderType()==OP_SELL) 
	  	  {			
	  	  	  if (TrailingStop>0) 
			  {
				  if (OrderOpenPrice()-Ask>=(TrailingStop+Pips)*Point) 
				  {						
					 if (OrderStopLoss()>(Ask+Point*TrailingStop))
					 {			
					    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,800,Purple);
	  					 return(0);	  					
	  				 }
	  			  }
			  }
	  	  }

	  	  if (OrderType()==OP_BUY)
	  	  {
	  		 if (TrailingStop>0) 
	  		 {
			   if (Bid-OrderOpenPrice()>=(TrailingStop+Pips)*Point) 
				{
					if (OrderSt

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

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

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

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

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

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

Стоимость полного кода
747,50₽ ≈ $9.14