[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 443

 

Ja, das habe ich verstanden...

 

Vielleicht verstehe ich es nicht?

Eine Zeile wie diese:

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

Der MACDa-Wert wird mit Null verglichen, und wenn die Bedingung erfüllt ist, wird ein Pfeil gezeichnet.

Wie funktioniert das?

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

Wenn MACD[i]>0 und macd[i+1] ebenfalls größer als 0 ist, wie wird dann die Bedingung ????????????????? erfüllt?

 
igrok2008 писал(а) >>

Vielleicht verstehe ich es nicht?

Eine Zeile wie diese:

Der MACDa-Wert wird mit Null verglichen, und wenn die Bedingung erfüllt ist, wird ein Pfeil gezeichnet.

Wie funktioniert das?

Was bedeutet es, wenn MACD[i]>0 und MACD[i+1] ebenfalls größer als 0 ist, wie wird die Bedingung ????????????????? dann erfüllt?

Wenn das Produkt aus dem vorhergehenden Wert und dem aktuellen Wert kleiner als Null ist, dann liegen diese Werte auf verschiedenen Seiten der Nulllinie.

Die Multiplikation ist etwa 10 Mal schneller als die logische Bedingung. Ich habe zwei logische Bedingungen durch eine Multiplikation und eine logische Bedingung ersetzt.

Zuerst prüfen wir, ob es einen Schnittpunkt der Nulllinie gab. Wenn es eine Kreuzung gibt, dann bestimmen Sie die Richtung der Kreuzung.

 

Ich bitte um Verzeihung, aber ich habe Schwierigkeiten, die Bedingung umzusetzen:

Der MACD geht nach oben, kreuzt das Niveau N (natürlich mit einem Minuszeichen) - ein Pfeil wird gezeichnet, der NACD geht nach unten, kreuzt das Niveau N (+ Zeichen) - ein Pfeil wird gezeichnet.

Das N-Niveau ist ein bestimmtes Niveau, wie bei CCI - 20 und 80. Die Logik ist klar, aber wie wird sie umgesetzt......?????

 
igrok2008 писал(а) >>

Bitte verzeihen Sie mir, aber mein Zustand ist nicht gut:

Der MACD geht nach oben, kreuzt das Niveau N (natürlich mit einem Minuszeichen) - ein Pfeil wird gezeichnet, der NACD geht nach unten, kreuzt das Niveau N (+ Zeichen) - ein Pfeil wird gezeichnet.

Das N-Niveau ist ein bestimmtes Niveau, wie bei CCI - 20 und 80. Die Logik ist klar, aber wie wird sie umgesetzt......?????

if ((MACD[i]-Level)*(MACD[i+1]-Level)<0)
Dies ist eine Kontrolle der Penetrationsebene. In Ihrem Fall müssen Sie zwei Kontrollen durchführen. Für positiven und negativen Pegel getrennt
 
Vinin >>:
Это контроль пробития уровня. В твоем случае нужно будет делать два контроля. Для положительного и отрицательного Level отдельно

ist es so?


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

Entschuldigen Sie die Störung, Sie haben mir bereits bei der Definition der NonLagDOT-Indikator-Eingabeparameter geholfen und geben sie über die Funktion iCustom() an den Expert Advisor aus.

Bitte teilen Sie mir mit, wie ich Aufträge für diesen Indikator eröffnen kann.


/+------------------------------------------------------------------+
|| NonLagDOT.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#Eigenschaft indicator_buffers 3
#property indicator_color1 Gelb
#Eigenschaft indicator_width1 1
#property indicator_color2 Königsblau
#Eigenschaft indicator_width2 1
#property indicator_color3 Rot
#Eigenschaft indicator_width3 1


//---- Eingabeparameter
extern int Preis = 0;
extern int Länge = 20;
extern intplace Displace = 0;
extern int Filter = 0;
extern int Farbe = 1;
extern int ColorBarBack = 0;
extern double Abweichung = 0;

double Cycle = 4;

//---- Indikatorpuffer
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];

//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
int ft=0;
string kurz_name;
//---- Indikatorzeile
IndikatorPuffer(5);
SetIndexStyle(0,DRAW_ARROW);
SetIndexPuffer(0,MABuffer);
SetIndexStyle(1,DRAW_ARROW);
SetIndexPuffer(1,UpPuffer);
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2,DnBuffer);
SetIndexPuffer(3,Preis);
SetIndexBuffer(4,trend);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
SetIndexPfeil(0,159);
SetIndexPfeil(1,159);
SetIndexPfeil(2,159);
SetIndexPfeil(3,159);
//---- Name für das Datenfenster und die Bezeichnung des Unterfensters des Indikators
short_name="NonLagDot("+Length+")";
IndicatorShortName(short_name);
SetIndexLabel(0, "NLD");
SetIndexLabel(1, "Nach oben");
SetIndexLabel(2, "Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);

SetIndexDrawBegin(0,Länge*Zyklus+Länge);
SetIndexDrawBegin(1,Länge*Zyklus+Länge);
SetIndexDrawBegin(2,Länge*Zyklus+Länge);
//----
zurück(0);
}

//+------------------------------------------------------------------+
//| NonLagMA_v4 |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
double alfa,beta,t,Summe,Gewicht,Schritt,g;
double pi = 3,1415926535;

double Coeff = 3*pi;
int Phase = Länge-1;
double Len = Länge*Zyklus + Phase;

if ( gezählte_Balken > 0 ) limit=Balken-gezählte_Balken;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
wenn ( gezählte_Balken < 1 )
for(i=1;i<Länge*Zyklus+Länge;i++)
{
MABuffer[Bars-i]=0;
UpBuffer[Bars-i]=0;
DnBuffer[Bars-i]=0;
}

for(shift=limit;shift>=0;shift--)
{
Gewicht=0; Summe=0; t=0;

for (i=0;i<=Len-1;i++)
{
g = 1,0/(Coeff*t+1);
wenn (t <= 0,5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta;
//if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i);
//else
Preis[i] = iMA(NULL,0,1,0,MODE_SMA,Preis,shift+i);
Summe += alfa*Preis[i];
Gewicht += alfa;
wenn ( t < 1 ) t += 1,0/(Phase-1);
else if ( t < Len-1 ) t += (2*Zyklus-1)/(Zyklus*Länge-1);
}

if (Gewicht > 0) MABuffer[shift] = (1.0+Abweichung/100)*Summe/Gewicht;

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

wenn (Farbe>0)
{
trend[shift]=trend[shift+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]=1;
wenn (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[shift] = 0;
}
if (trend[shift]<0)
{
DnBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = 0;
}
}
}
zurück(0);
}
 
igrok2008 писал(а) >>

ist es so?

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) {//}
}
Das könnte so aussehen. Solange du weißt, was du tust. Offenbar habe ich es Ihnen schwer gemacht.
 
Bitte erklären Sie die Begriffe LevelUP und LevelDN
 
igrok2008 писал(а) >>
Bitte erklären Sie die Begriffe LevelUP und LevelDN

LevelUP- positives Niveau

LevelDN- negativer Pegel.

Im Allgemeinen sind sie absolut gleichwertig.

Wenn sie gleich sind, ist es möglich, die

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) {//}
}
Grund der Beschwerde: