Скачать MetaTrader 5

Простой индикатор, а показывает лишнее и ошибочное.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114277
Forex Trader  
Вот простой индикатор - "Пересечение двух средних", на их пересечениях стрелка "вниз" или "вверх", но индикатор показывает стрелку "вниз" не только на пересечениии, но и окончании запаздывающей средней. Как исправить эту ошибку?
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Red
// indicator buffers
double Buyb[];		// Buy indicator line
double Sellb[];		// Sell indicator line		

int nRemoveFirst = 1;

// Muvastic indicator
double dMuv11p;
double dMuvB11p;
double dMuv11n;
double dMuvB11n;
double dMuv11m;
double dMuvB11m;

int nType1 = 0;
double dOpenPrice;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,233);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,234);

	// indicator buffers mapping
	SetIndexBuffer(0, Buyb);
	SetIndexBuffer(1, Sellb);
	SetIndexDrawBegin(0, nRemoveFirst);
	SetIndexDrawBegin(1, nRemoveFirst);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//---- 

	// How many bars were processed
	int nExtCountedBars = IndicatorCounted();

	for(int nBar = Bars - nRemoveFirst; nBar > 0; nBar--)
	{
		dMuv11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+57);
		dMuvB11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+58);
		dMuv11n = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar);
		dMuvB11n = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+1);
		dMuv11m = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar-57);
		dMuvB11m = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar-58);		

//		Buyb[nBar] = 0;		// Set to "no buy, no sell"
//		Sellb[nBar] = 0;


		// Logic of the trading system begins

/////-----/////-----/////----/////------////-----22222222222222
		// If it is time to buy
		if(nType1 != -1 	// no long positions
			&& dMuv11m >= dMuv11n && dMuvB11m <= dMuvB11n)
		{
			if(nType1 == 1)	// If we have short - close it
			{
			}
			Buyb[nBar] = Low[nBar]-10*Point;
			dOpenPrice = High[nBar];
			nType1 = -1;
		}
		// Time to sell
		else if(nType1 != 1 	// no short positions
			&& dMuv11m <= dMuv11n && dMuvB11m >= dMuvB11n)
		{
			if(nType1 == -1)
			{
			}				
			Sellb[nBar] = High[nBar]+10*Point;
			dOpenPrice = Low[nBar];
			nType1 = 1;
			}
	}
//----
   return(0);
  }
//+------------------------------------------------------------------+

Forex Trader
114277
Forex Trader  
А как вы уже пробовали исправить?
Чтоб люди даром не пробовали заранее неправильные варианты ;)
Forex Trader
114277
Forex Trader  
А как вы уже пробовали исправить?

Я ж не гений, это выше моих сил.
В логике четко прописано - "пересечения" средних, а стрелка появляется на окончании запаздывающей средней и что интересно, появляется только стрелка на продажу, и так: на графиках одних пар валют или периодах графиков этих валют этот глюк есть, а на других нет.

Уже, как можно, упростил код убрал все лишнее, всеровно.

А это здесь не мешает (это тоже надо):
double dMuv11p;
double dMuvB11p;

dMuv11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+57);
dMuvB11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+58);
Forex Trader
114277
Forex Trader  
Я делал стрелки на пересечении достаточно сложных мувингов. Все работало, посмотреть можно здесь - http://forexsystems.ru/phpBB/viewtopic.php?t=649&postdays=0&postorder=asc&start=15 Ergodic Signals
Forex Trader
114277
Forex Trader  
Спасибо, Rosh, но мне бы хотелось самому писать коды и знать как удалять эти глюки.
Forex Trader
114277
Forex Trader  
Я вроде тебе не мешаю, смотри код и сравнивай, может чем поможет.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий