[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 443

 

evet anladım bunu..

 

Belki bir şey anlamıyorum?

Tür dizesi:

 if ( MACD [ i ] < 0 ) ExtMapBuffer2 [ i ] = High [ i ] + iATR ( Symbol ( ) , 0 , 14 , i ) ;

MACDa değerinin sıfır ile karşılaştırılması ve koşul eşleşirse bir ok çizilir .

Bu nasıl?

if (MACD[i] * MACD[i+1]<0) {

neyle yenir MACD[i]>0 ve macd[i+1] de 0'dan büyükse, durum nasıl gözlemlenir???????????????????

 
igrok2008 писал(а) >>

Belki bir şey anlamıyorum?

Tür dizesi:

MACDa değerinin sıfır ile karşılaştırılması ve koşul eşleşirse bir ok çizilir.

Bu nasıl?

neyle yenir MACD[i]>0 ve macd[i+1] de 0'dan büyükse, durum nasıl gözlemlenir???????????????????

Önceki ve şimdiki değerlerin çarpımı sıfırdan küçükse, bu değerler sıfır çizgisinin zıt taraflarındadır.

Çarpma, mantıksal koşuldan yaklaşık 10 kat daha hızlıdır. İki boole koşulunu bir çarpma ve bir boole koşuluyla değiştirdim.

İlk olarak, sıfır çizgisinin kesişimi olup olmadığını kontrol ediyoruz. Bir kavşak varsa, kavşağın yönünü belirleriz.

 

Lütfen beni alçakgönüllülükle bağışlayın, ancak şu koşulun uygulanmasını sağlayamıyorum:

MACD aşağıdan yukarıya gider, N seviyesini geçer (doğal olarak eksi işareti ile) - bir ok çizilir , NACD yukarıdan aşağıya gider, N seviyesini geçer (+ işareti) - bir ok çizilir.

N Düzeyi, CCİ - 20 ve 80'de olduğu gibi belirli bir düzeydir. Mantık açık, ancak nasıl uygulanacağı ......?????

 
igrok2008 писал(а) >>

Lütfen beni alçakgönüllülükle bağışlayın, ancak şu koşulu yerine getiremem:

MACD aşağıdan yukarıya gider, N seviyesini geçer (doğal olarak eksi işaretiyle) - bir ok çizilir, NACD yukarıdan aşağıya gider, N seviyesini geçer (+ işareti) - bir ok çizilir.

N Düzeyi, CCİ - 20 ve 80'de olduğu gibi belirli bir düzeydir. Mantık açık, ancak nasıl uygulanacağı ......?????

if ((MACD[i]-Level)*(MACD[i+1]-Level)<0)
Bu, seviyeyi kırmanın kontrolüdür. Senin durumunda, iki kontrol yapman gerekecek. Pozitif ve negatif Düzey için ayrı ayrı
 
Vinin >> :
Это контроль пробития уровня. В твоем случае нужно будет делать два контроля. Для положительного и отрицательного Level отдельно

böyle mi


      if ((MACD[i]-Level)*(MACD[i+1]-Level)<0)
         ((MACD[i]+Level)*(MACD[i+1]+Level)>0){
 

Önemsizlik için özür dilerim, NonLagDOT göstergesinin giriş parametrelerini tanımlamama ve bunu iCustom() işlevi aracılığıyla Expert Advisor'a göndermeme zaten yardımcı oldunuz.

Lütfen bu gösterge için açılış emirleri için komutların nasıl doğru yazılacağını söyleyin.


/+------------------------------------------------ ------------------+
//| NonLagDOT.mq4 |
//| Telif Hakkı © 2009, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2009, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 3
#özellik göstergesi_color1 Sarı
#özellik göstergesi_width1 1
#özellik göstergesi_renk2 KraliyetMavi
#özellik göstergesi_width2 1
#özellik göstergesi_color3 Kırmızı
#özellik göstergesi_width3 1


//---- giriş parametreleri
harici int Fiyat = 0;
dış int Uzunluk = 20;
extern int Yer Değiştir = 0;
harici int Filtre = 0;
dış int Renk = 1;
harici int ColorBarBack = 0;
dış çift Sapma = 0;

çift Döngü = 4;

//---- gösterge tamponları
doubleMABuffer[];
çift UpBuffer[];
doubleDnBuffer[];
çift fiyat[];
çift eğilim[];

//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
intft=0;
string kısa_adı;
//---- gösterge çizgisi
GöstergeTamponları(5);
SetIndexStyle(0,DRAW_ARROW);
SetIndexBuffer(0,MABuffer);
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_OK);
SetIndexBuffer(2,DnBuffer);
SetIndexBuffer(3,fiyat);
SetIndexBuffer(4,trend);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
SetIndexArrow(0.159);
SetIndexArrow(1,159);
SetIndexArrow(2.159);
SetIndexArrow(3,159);
//---- DataWindow ve gösterge alt pencere etiketi için isim
short_name="NonLagDot("+Uzunluk+")";
GöstergeShortName(short_name);
SetIndexLabel(0,"NLD");
SetIndexLabel(1,"Yukarı");
SetIndexLabel(2,"Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Deplasman);

SetIndexDrawBegin(0,Uzunluk*Çevrim+Uzunluk);
SetIndexDrawBegin(1,Uzunluk*Çevrim+Uzunluk);
SetIndexDrawBegin(2,Uzunluk*Döngü+Uzunluk);
//----
dönüş(0);
}

//+------------------------------------------- --------------------+
//| GecikmesizMA_v4 |
//+------------------------------------------- --------------------+
int başlangıç()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
çift alfa, beta, t, Toplam, Ağırlık, adım, g;
çift pi = 3.1415926535;

çift Katsayı = 3*pi;
int Faz = uzunluk-1;
double Len = Uzunluk*Döngü + Faz;

if (counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if (counted_bars < 1 )
for(i=1;i<Uzunluk*Döngü+Uzunluk;i++)
{
MABuffer[Barlar-i]=0;
UpBuffer[Barlar-i]=0;
DnBuffer[Barlar-i]=0;
}

for(shift=limit;shift>=0;shift--)
{
ağırlık=0; Toplam = 0; t=0;

(i=0;i<=Len-1;i++) için
{
g = 1.0/(Kats*t+1);
eğer (t <= 0.5 ) g = 1;
beta = MathCos(pi*t);
alfa=g*beta;
//if (shift>=1) fiyat[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//başka
fiyat[i] = iMA(BOŞ,0,1,0,MODE_SMA,Fiyat,shift+i);
Toplam += alfa*fiyat[i];
Ağırlık += alfa;
if ( t < 1 ) t += 1.0/(Aşama-1);
else if ( t < Len-1 ) t += (2*Döngü-1)/(Döngü*Uzunluk-1);
}

if (Ağırlık > 0) MABuffer[shift] = (1.0+Sapma/100)*Toplam/Ağırlık;

if (Filtre>0)
{
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter*Point ) MABuffer[shift]=MABuffer[shift+1];
}

eğer (Renk>0)
{
trend[shift]=trend[shift+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;
if (trend[shift]>0)
{
UpBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
DnBuffer[kaydırma] = 0;
}
if (trend[shift]<0)
{
DnBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = 0;
}
}
}
dönüş(0);
}
 
igrok2008 писал(а) >>

böyle mi

 if ( ( MACD [ i ] - LevelUP ) * ( MACD [ i + 1 ] - LevelUP ) < 0 ) {
   if ( MACD [ i ] - Level > 0 ) { //}
}
if ( ( MACD [ i ] - LevelDN ) * ( MACD [ i + 1 ] - LevelDN ) < 0 ) {
   if ( MACD [ i ] - LevelDN < 0 ) { //}
}
Öyle olabilir. Ana şey, ne yaptığınızı kendiniz anlamanızdır. Görünüşe göre işleri senin için zorlaştırdım.
 
Lütfen LevelUP ve LevelDN terimlerini açıklayın
 
igrok2008 писал(а) >>
Lütfen LevelUP ve LevelDN terimlerini açıklayın

LevelUP - pozitif seviye

LevelDN - negatif seviye

Genel olarak, mutlak değerde eşittirler.

Eşitse, o zaman kullanabilirsiniz

 if ( ( MACD [ i ] - Level ) * ( MACD [ i + 1 ] - Level ) < 0 ) {
   if ( MACD [ i ] - Level > 0 ) { //}
}
if ( ( MACD [ i ] + LevelDN ) * ( MACD [ i + 1 ] + LevelDN ) < 0 ) {
   if ( MACD [ i ] + Level < 0 ) { //}
}
Neden: