Индикаторы: Stochastic Divergence

 

Stochastic Divergence:

Дивергенция на стандартном Stochastic с Alert'ом и выбором языка.

Присутствие на графике cтохастика не обязательно. Однако, если будет установлен стандартный cтохастик, то линии дивергенции будут рисоваться и на графике и на индикаторе, а индикатор будет использовать настройки стохастика. Сплошной линией рисуется классическая, пунктирной линией отображается обратная дивергенция.

Author: ViDan888

 

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

 
Vkorch:

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

Как бы линии и есть по сути сигналы - синяя бай красная селл.

Кроме того можно включить функцию Alert..., будет сигнал входа...

Однако решение на вход всегда за трейдером - это только подсказка, и требует осмысления.

 

Подобрать параметры и вперед.

Косить бабло.

 
zotkindm:

Подобрать параметры и вперед.

Косить бабло.

Лихой ты парень!

 

Спасибо, полезная штука!

 
mpeugep:

Спасибо, полезная штука!

На здоровье!

Если кто посмотрел внимательно код - он представляе собой своеобразный шаблон, можно изменить под любой индикатор в окне.

Кому за падло заморачиваться, выложу дивергенцию для MACD.

Раз уж пошла такая пьянка...

 
ViDan888:
mpeugep:

Спасибо, полезная штука!

На здоровье!

Если кто посмотрел внимательно код - он представляе собой своеобразный шаблон, можно изменить под любой индикатор в окне.

Кому за падло заморачиваться, выложу дивергенцию для MACD.

Раз уж пошла такая пьянка...

Слушай, при добавлении в эксперт, при тестировании индикатор выдает ошибки..

условие задавал следующим образом:

1 буфер>0 - бай

2 буфер>0 - сел

Ошибка след образа : 2009.01.10 23:00:20 2009.01.09 16:58 DiverStoch EURUSD,H1: ShortName for WindowFind function must be an initialized string


 
mpeugep:
ViDan888:
mpeugep:

Спасибо, полезная штука!

На здоровье!

Если кто посмотрел внимательно код - он представляе собой своеобразный шаблон, можно изменить под любой индикатор в окне.

Кому за падло заморачиваться, выложу дивергенцию для MACD.

Раз уж пошла такая пьянка...

Слушай, при добавлении в эксперт, при тестировании индикатор выдает ошибки..

условие задавал следующим образом:

1 буфер>0 - бай

2 буфер>0 - сел

Ошибка след образа : 2009.01.10 23:00:20 2009.01.09 16:58 DiverStoch EURUSD,H1: ShortName for WindowFind function must be an initialized string

...давай кусок твоего кода, разберемся.

 
ViDan888:
mpeugep:
ViDan888:
mpeugep:

Спасибо, полезная штука!

На здоровье!

Если кто посмотрел внимательно код - он представляе собой своеобразный шаблон, можно изменить под любой индикатор в окне.

Кому за падло заморачиваться, выложу дивергенцию для MACD.

Раз уж пошла такая пьянка...

Слушай, при добавлении в эксперт, при тестировании индикатор выдает ошибки..

условие задавал следующим образом:

1 буфер>0 - бай

2 буфер>0 - сел

Ошибка след образа : 2009.01.10 23:00:20 2009.01.09 16:58 DiverStoch EURUSD,H1: ShortName for WindowFind function must be an initialized string

...давай кусок твоего кода, разберемся.


Завтра утром)

 

Вот код эксперта (просто наработки..ничего стоящего)..эксперт сделки открывает, но в отчетах, как говорил раньше ошибки..

//+------------------------------------------------------------------+
//|                                            Divergence_Expert.mq4 |
//|                                        Copyright © 2008, mpeugep |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, mpeugep"
extern int KPeriod = 10;
extern int DPeriod = 3;
extern int Slowing = 3;
extern int ManualStopLoss = 100;
extern int TrailingStop   = 11;
extern int Pips           = 0;
extern int RiskPercentage = 10;
extern int Magic          = 7777777;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
double sl;
double buf     = iCustom(NULL,0,"DiverStoch",false,false,KPeriod,DPeriod,Slowing,0,0);
double up      = iCustom(NULL,0,"DiverStoch",false,false,KPeriod,DPeriod,Slowing,1,0);
double dn      = iCustom(NULL,0,"DiverStoch",false,false,KPeriod,DPeriod,Slowing,2,0);
double margin  = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
double minLot  = MarketInfo(Symbol(), MODE_MINLOT);
double maxLot  = MarketInfo(Symbol(), MODE_MAXLOT);
double step    = MarketInfo(Symbol(), MODE_LOTSTEP);
double account = AccountFreeMargin();
double percentage = account*RiskPercentage/100;
double Lots = MathRound(percentage/margin/step)*step;
if(Lots < minLot)
  {
  Lots = minLot;
  }
if(Lots > maxLot)
  {
  Lots = maxLot;
  }    
   int cnt, ticket, total;
   if(Bars<100)
     {
      Print("Баров меньше чем 100");
      return(0);  
     }
   total=OrdersTotal();
   if(total<1) 
     {
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("Нет денег. Свободная маржа = ", AccountFreeMargin());
         return(0);  
        }
         if(up>0)
         {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask - ManualStopLoss*Point,0,"Divergence_Expert",Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Ошибка открытия покупки : ",GetLastError()); 
         return(0); 
        }
         if(dn>0)
         {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid + ManualStopLoss*Point,0,"Divergence_Expert",Magic,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Ошибка открытия продажи : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
     
     OrderSelect(SELECT_BY_POS, MODE_TRADES);
	  if (OrderSymbol() == Symbol()) 
	  {
	  	  if (OrderType()==OP_SELL) 
	  	  {
	  	  	  if (TrailingStop>0) 
			  {
				  if (OrderOpenPrice()-Ask>=(TrailingStop+Pips)*Point) 
				  {
					 if (OrderStopLoss()>(Ask+Point*TrailingStop))
					 {
					    OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,0,0,Black);
	  					 return(0);	  					
	  				 }
	  			  }
			  }
	  	  }
   
	  	  if (OrderType()==OP_BUY)
	  	  {
	  		 if (TrailingStop>0) 
	  		 {
			   if (Bid-OrderOpenPrice()>=(TrailingStop+Pips)*Point) 
				{
					if (OrderStopLoss()<(Bid-Point*TrailingStop)) 
					{
					   OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,0,0,Black);
                  return(0);
					}
  				}
			 }
	  	  }
   	
   }
return;
}

Так и не смог разобраться почему..