Niewidoczne obiekty we wskaźniku

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: NiceFox »

Wskaźnik Tasskit rysuje obiekty na wykresie, ale są niewidoczne na liście obiektów.
Chciałem użyć funkcji ObjectFind() do szukania linni na wykresie. Jak włączyć, żeby te obiekty były widoczne na liście?

Kod: Zaznacz cały

//KurlFX 23/6/09
//+------------------------------------------------------------------+
//| TADX.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2009,KurlFX"
#define Alvl 35.0
#define Alvl2 30.0
#property  indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Red
#property indicator_color2 SteelBlue
#property indicator_width1 2
#property indicator_width2 2
#property indicator_color3 Indigo
#property indicator_color4 Indigo
#property indicator_color5 Indigo
#property indicator_width3 1
#property indicator_width4 1
//---- indicator parameters
extern int ADXperiod1 = 10;
extern int ADXperiod2 = 14;
extern int ADXperiod3 = 20;
//--
string Unq="TASSKlT",Label;
int MxP,MnP,MdP;
//---- buffers
double To[];
double Tc[];
double ADX1[];
double ADX2[];
double ADX3[];
double Up[];
double Dn[];
double Ex[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- name for DataWindow and indicator subwindow label
	MxP=MathMax(MathMax(ADXperiod1,ADXperiod2),ADXperiod3);
	MnP=MathMin(MathMin(ADXperiod1,ADXperiod2),ADXperiod3);
	if(MxP==ADXperiod1)MdP=MathMax(ADXperiod2,ADXperiod3);
	else if(MxP==ADXperiod2)MdP=MathMax(ADXperiod1,ADXperiod3);	
	else MdP=MathMax(ADXperiod2,ADXperiod1);
	Label=Unq+"("+MnP+"/"+MdP+"/"+MxP+")";
	IndicatorBuffers(8);
	SetIndexBuffer(0,To);
	SetIndexBuffer(1,Tc);
	SetIndexBuffer(2,Up);
	SetIndexBuffer(3,Dn);
	SetIndexBuffer(4,Ex);
	SetIndexBuffer(5,ADX1);
	SetIndexBuffer(6,ADX2);
	SetIndexBuffer(7,ADX3);
	SetIndexLabel(0,NULL);
	SetIndexLabel(1,NULL);
	SetIndexStyle(0,DRAW_HISTOGRAM);
	SetIndexStyle(1,DRAW_HISTOGRAM);	
	SetIndexLabel(2,"Up");
	SetIndexLabel(3,"Dn");
	SetIndexLabel(4,"end");
	SetIndexStyle(2,DRAW_ARROW);
	SetIndexStyle(3,DRAW_ARROW);
	SetIndexStyle(4,DRAW_LINE);
	SetIndexArrow(2,225);
	SetIndexArrow(3,226);
	Comment(Label);
//---- initialization done
	return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
	Comment("");
	return(0);
}
//+------------------------------------------------------------------+
//| main                                    |
//+------------------------------------------------------------------+
int start()
{
	int cntbar=IndicatorCounted();
	int limit=Bars-cntbar;
	if(cntbar==0)limit-=MxP;
	for(int i=limit-1;i>=0;i--)
	{
		ADX1[i]=iADX(NULL,0,MnP,PRICE_CLOSE,MODE_MAIN,i);
		ADX2[i]=iADX(NULL,0,MdP,PRICE_CLOSE,MODE_MAIN,i);
		ADX3[i]=iADX(NULL,0,MxP,PRICE_CLOSE,MODE_MAIN,i);
	}
	if(cntbar==0)limit--;
	for(i=limit-1; i>=0; i--)
	{
		bool f1=false,f2=false,f3=false;
		To[i]=EMPTY_VALUE;Tc[i]=EMPTY_VALUE;
		Up[i]=EMPTY_VALUE;Dn[i]=EMPTY_VALUE;Ex[i]=EMPTY_VALUE;
		if(ADX1[i+1]<ADX1[i])f1=true;
		if(ADX2[i+1]<ADX2[i])f2=true;
		if(ADX3[i+1]<ADX3[i])f3=true;
		if(f1&&f2&&f3&&ADX1[i]>Alvl&&ADX2[i]>Alvl2)
		{
			double di=iADX(NULL,0,MnP,PRICE_CLOSE,MODE_PLUSDI,i)
						-iADX(NULL,0,MnP,PRICE_CLOSE,MODE_MINUSDI,i);
			double hi=MathMax(Open[i],Close[i]);
			double lo=MathMin(Open[i],Close[i]);
			double op=Open[i];
			if(di>0)
			{
				To[i]=lo;Tc[i]=hi;
				if(To[i+1]==EMPTY_VALUE)Up[i]=op;
			}
			else
			{
				To[i]=hi;Tc[i]=lo;
				if(To[i+1]==EMPTY_VALUE)Dn[i]=op;
			}
		}
		else
		{
			if(To[i+1]!=EMPTY_VALUE)Ex[i]=Close[i+1];
			else Ex[i]=Ex[i+1];
		}
	}
	return(0);
}
//+------------------------------------------------------------------+
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: Pierz Andrzej »

ponieważ to nie są obiekty tylko bufory wskaźnika i musisz je wyszukać przez iCustom()
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: NiceFox »

Już wcześniej przeszukiwałem wszystkie bufory 8szt. iCustom(NULL,0,"TASSKIT",10,14,20,0,1)
i za każdym razem w buforze wartość "0". Dlaczego iCastom nie podaje innych wartości?
Doszedłem do wniosku, że jak najeżdzam na linię wskażnika tasskit i wyświetla się etykieta to powinno to być na liście obiektów, ale nie ma. Może dlatego iCastom nie podaje wartości z bufora?
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: Pierz Andrzej »

bo sprawdzasz wartość bufora na świecy ostatniej , przeszukaj pętlą swiece wstecz i "wyjdź" z niej jak wartość bufora będzie różna od EMPTY_VALUE

nie bęziesz miał ich w obiektach to tak jakbyś chciał mieć np w obiektach linie MA
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: NiceFox »

Tak też robię i nic dla świecy ostatniej i przedostatniej we wszystkich buforach "0",
a powinno być coś innego bo wyświetliła się krecha. :(

Kod: Zaznacz cały

 double TASSKIT_1 = iCustom(NULL,0,"TASSKIT",10,14,20,0,0);
 double TASSKIT_2 = iCustom(NULL,0,"TASSKIT",10,14,20,1,0);
 double TASSKIT_3 = iCustom(NULL,0,"TASSKIT",10,14,20,2,0);
 double TASSKIT_4 = iCustom(NULL,0,"TASSKIT",10,14,20,3,0);
 double TASSKIT_5 = iCustom(NULL,0,"TASSKIT",10,14,20,4,0);
 double TASSKIT_6 = iCustom(NULL,0,"TASSKIT",10,14,20,5,0);
 double TASSKIT_7 = iCustom(NULL,0,"TASSKIT",10,14,20,6,0);
 double TASSKIT_8 = iCustom(NULL,0,"TASSKIT",10,14,20,7,0);
Pieniądze rosną na drzewie cierpliwości.

QTrader
Gaduła
Gaduła
Posty: 223
Rejestracja: 27 lut 2013, 17:33

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: QTrader »

Wszystko w jak najlepszym porządku.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Pozdrawiam

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: NiceFox »

winny jet terminal klienta MT4, nie wyświetla tak jak wyżej, ale już na drugim działa ok.
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: Pierz Andrzej »

Witam

poniżej kod wyszukujący ostatnie wartości strzałek UP i DN ;)

Kod: Zaznacz cały

#property copyright "Copyright 2013, Forex-Service Andrzej Pierz"
#property link      "http://www.forex-programming.eu"

extern int ADXperiod1 = 10;
extern int ADXperiod2 = 14;
extern int ADXperiod3 = 20;
void start()
{
   double up = EMPTY_VALUE;
   double dn = EMPTY_VALUE;
   int i = 0;
   while( up == EMPTY_VALUE && i < Bars)
   {
      up = iCustom(Symbol(),Period(),"TASSKIT",ADXperiod1,ADXperiod2,ADXperiod3,2,i);
      i++;
   }
   i = 0;
   while( dn == EMPTY_VALUE && i < Bars)
   {
      dn = iCustom(Symbol(),Period(),"TASSKIT",ADXperiod1,ADXperiod2,ADXperiod3,3,i);
      i++;
   }
   Print("UP "+DoubleToStr(up,Digits));
   Print("DN "+DoubleToStr(dn,Digits));
}
jeżeli zwracał Ci 0 a nie EMPTY_WALUE (2147483647) to najprawdopodobniej nie znajdowało Ci wskaźnika , może źle wpisałeś nazwę wskaźnika ? może go nie miałeś w folderze experts/indicators ?
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: NiceFox »

Pospieszyłem się, popatrzyłem tylko na okno danych ktore jest ok.
W strategiach jest komunikat cannot open file TASSKIT.ex4
plik oczywiście jest skompilowany, build 509 :(
Pieniądze rosną na drzewie cierpliwości.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Niewidoczne obiekty we wskaźniku

Nieprzeczytany post autor: Pierz Andrzej »

proponuje zamknąć terminal mt4 i metaeditor
otworzyć go ponownie w trybie administracyjnym
otworzyć metaeditor i utworzyć wskaźnik o nazwie TASSKIT
wkleić kod z pierwszego postu i skompilować ponownie

powinno pomóc
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ