Hilfe bei der Codierung - Seite 775

 

Bitte helfen Sie mir bei diesem Problem.

Unten ist MA cross alert, aber ich habe zu viele Nachrichten pro 1 gleiche Benachrichtigung.

Ich möchte nur 1 Benachrichtigung pro 2 aufeinanderfolgende Balken erhalten, das bedeutet, dass dieAnzahl der Balken 2 ist, die vor dem nächsten Alarm übersprungen werden müssen.

Wie kann ich tun, bitte helfen Sie mir. Ich danke Ihnen vielmals



//+------------------------------------------------------------------+

//|                MA Cross Arrows.mq4                               |

//|                Copyright © 2006  Scorpion@fxfisherman.com        |

//+------------------------------------------------------------------+

#property copyright "FxFisherman.com"

#property link      "http://www.fxfisherman.com"



#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Blue

#property indicator_color2 White

#property indicator_color3 Red



extern int Crossed_Pips = 0;

extern int MA_Period = 21;

extern int MA_Type = MODE_SMA;

extern int Shift_Bars=0;

extern int Bars_Count= 1000;

int state;

  

//---- buffers

double v1[];

double v2[];

double v3[];

  





int start()

 {

  double ma;

  int previous;

  int i;

  int shift;

  bool crossed_up, crossed_down;

  int totalBars = Bars - (MA_Period * 2);

  

  if (Bars_Count > 0 && Bars_Count <= totalBars)

  {

    i = Bars_Count;

  }else if(totalBars <= 0 ) {

    return(0);

  }else{

    i = totalBars;

  }

  

  while(i>=0)

   {

    shift = i + Shift_Bars;

    ma = iMA(Symbol(), Period(), MA_Period, 0, MA_Type, PRICE_CLOSE, shift);

    crossed_up = High[shift] >= (ma + (Crossed_Pips * Point));

    crossed_down = Low[shift] <= (ma - (Crossed_Pips * Point));



    v1[i] = NULL;

    v2[i] = NULL;    

    v3[i] = ma;

    if (crossed_up && previous != 1) {

      v1[i] = ma + (Crossed_Pips * Point);

      previous = 1;

    }else if(crossed_down && previous != 2){

      v2[i] = ma - (Crossed_Pips * Point);

      previous = 2;

    }

 

    i--;

   }

   

   ma = iMA(Symbol(), Period(), MA_Period, 0, MA_Type, PRICE_CLOSE, 0);

   if (Close[0] >= ma + (Crossed_Pips * Point) && state != 1) { 

      state = 1;

      SendNotification(Symbol() + "M"+_Period + " Price crossed UP EMA21.");

   }else if (Close[0] <= ma - (Crossed_Pips * Point) && state != -1) {

      state = -1;

      SendNotification(Symbol() + "M"+_Period + " Price cross DOWN the EMA21.");

   }



   return(0);

 }
 

Wenn ich eine externe Variable deklariere, erhalte ich die Fehlermeldung "extern-unexpected token".

Bitte um Hilfe

Dateien:
error1.zip  116 kb
 
Ricardo Schuller:

Wenn ich eine externe Variable deklariere, erhalte ich die Fehlermeldung "extern-unexpected token".

Bitte um Hilfe

Sie können extern nicht innerhalb einer Methode oder Funktion verwenden.

 

Wie wird der Fehler behoben?

 
Mo3tasemovic:

wie behebt man den Fehler ??

" GBPUSD"

 
Keith Watford:

" GBPUSD"

danke

 
pivboll:

Ich brauche Hilfe bei der Modifizierung eines Indikators

Ich versuche, einen MACD-Indikator zu modifizieren, um ihn in einen Trendschub-Indikator zu verwandeln, wie in Buff Dormeiers Buch Investieren mit Volumenanalyse beschrieben.

Ich habe Probleme mit der Variable und kann kein vernünftiges Ergebnis erzielen. Ich hänge den volWMA und den VW MACD an, die funktionieren

Hier ist die Beschreibung

Trendschub-Indikator

Der Trendschub-Indikator (Tti), eine verbesserte Version des volumengewichteten gleitenden Durchschnittskonvergenz/Divergenz-Indikators (VW-Macd), wurde in meinem Buch Investieren mit Volumenanalyse vorgestellt. Der Tti verwendet einen Volumenmultiplikator auf einzigartige Weise, um die Auswirkungen des Volumens auf volumengewichtete gleitende Durchschnitte zu übertreiben. Wie der VW-Macd verwendet auch der Tti volumengewichtete gleitende Durchschnitte im Gegensatz zu exponentiellen gleitenden Durchschnitten. Die volumengewichteten Durchschnitte gewichten die Schlusskurse proportional zum gehandelten Volumen in jedem Zeitraum, so dass der Tti den Kurstrends mit größerem Volumen mehr Gewicht verleiht und den Zeiträumen mit geringerem Volumen weniger Gewicht. In der Februar-Ausgabe 2001 von Stocks & Commodities habe ich gezeigt, dass volumengewichtete gleitende Durchschnitte (Buff-Durchschnitte oder Vwmas) die Reaktionsfähigkeit verbessern und gleichzeitig die Zuverlässigkeit der einfachen gleitenden Durchschnitte erhöhen.

Wie der Macd und der VW-Macd berechnet der Tti einen Spread, indem er den kurzen (schnellen) Durchschnitt vom langen (langsamen) Durchschnitt subtrahiert. Dieser Spread kombiniert mit einem Volumenmultiplikator ergibt den Buff-Spread

Die Berechnung sieht folgendermaßen aus

Volumenmultiplikator = schneller VolWMA / langsamer VolWMA

der Volumenmultiplikator wird mit der zweiten Potenz multipliziert und dann mit dem schnellen VolWMA multipliziert, um das Volumen zur Verbesserung des schnellen Durchschnitts zu erhalten

der Volumenmultiplikator wird mit der zweiten Potenz multipliziert und dann mit der langsamen VolWMA multipliziert, um den Durchschnitt der Volumenverbesserung langsam zu erhalten

TTi = Verbesserung des schnellen Durchschnitts - Verbesserung des langsamen Durchschnitts

Vielen Dank für Ihre Hilfe

Link zum Indikator: https://www.sendspace.com/file/rfy2dv

Hallo mein Freund. Hast du den TTI schon in den Griff bekommen? Kannst du mir das hier mitteilen oder mir eine PM schicken? Danke

 
Hi
Könnten Sie plz mir mit diesem Problem helfen
Ich benötige einen EA, der einePush-Benachrichtigung sendet, wenn der Preis-Geld-Differenz von kinjun sen (in ichimoku) ist größer als 3 Pips (30 Punkte) in 1 Minute Zeit fream
 

hai,


pls hinzufügen Ton Alarm, Nachricht Alarm und mobile Benachrichtigung Option für diesen Indikator.

Dank

Dateien:
 

Hallo

Ich fand die Themen wie "iCustom liefert falsche Werte", aber dies ist ein wenig anders.

Ich versuche, einen Indikator zu erstellen, der die Größe identischer Balken (Bull/Bear) in einer Sequenz vergleicht.

und die Maximalwerte des Vergleichs im Histogramm anzeigt.

wie hier.

max_wert

//-----------------------------

mit ArrayMaximum ist das Ergebnis schneller. aber irgendetwas stimmt nicht mit meinem code.example:

iCustom_diff

Hier ist der Code, der iCustom Werte vergleicht und falsche Werte zurückgibt:

#property indicator_separate_window
#property indicator_buffers 4


#property indicator_color1 DeepSkyBlue
#property indicator_width1 10


#property indicator_color2 Red
#property indicator_width2 10



#property indicator_color3 DodgerBlue
#property indicator_width3 4


#property indicator_color4 Crimson
#property indicator_width4 4


#property indicator_level1 0
#property indicator_levelcolor White
#property indicator_levelstyle 0


string LF = "\n";  // use this in custom or utility blocks where you need line feeds
int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
int current = 0; // variable points to current bar


double Buffer1[];
double Buffer2[];

double Buffer3[];
double Buffer4[];


double bar_0;
double bar_1;
double bar_2;
double bar_3;
double bar_4;
double bar_5;
double bar_6;
double bar_7;
double bar_8;
double bar_9;
double bar_10;
double bar_11;


//+------------------------------------------------------------------+
int init()
{
    if (false) ObjectsDeleteAll();      // clear the chart

    IndicatorDigits(Digits-5);
    IndicatorBuffers(4);
    
    SetIndexBuffer(0, Buffer1);
    SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);
    
    SetIndexBuffer(1, Buffer2);
    SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID);
    
    
    
    
    SetIndexBuffer(2, Buffer3);
    SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID);
    
    SetIndexBuffer(3, Buffer4);
    SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID);
    
    
    return(0);
}


//+------------------------------------------------------------------+
int deinit()
{
if (false) ObjectsDeleteAll();

return(0);
}


//+------------------------------------------------------------------+
int start()
{
OnEveryTick1();

return(0);
}
//+------------------------------------------------------------------+
void OnEveryTick1()
{
    
    int i;
    int counted_bars = IndicatorCounted();
    if(counted_bars < 0) return(-1);
    if(counted_bars > 0) counted_bars--;
    i = Bars - counted_bars - 1;
    // main calculation loop
    while (i >= 0)
    
{
current = i;
        
//current  >0
//current+1=0
TechnicalAnalysis00();

//current  >0
//current+1>0
//current+2=0
TechnicalAnalysis01();

//current  >0
//current+1>0
//current+2>0
//current+3=0
TechnicalAnalysis02();


i--;
}
}

//-----------------------------------------------------
//---------bar_0-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis00()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);

if
(
bar_0 > 0
&&
bar_1 == 0
)

{
Histogram00();
}

}

void Histogram00()
{
Buffer1[current]= bar_0;
}
//-----------------------------------------------------
//---------bar_1-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis01()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);

if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 == 0
)

{
Histogram01();
}

}

void Histogram01()
{
int x_up_01[] = {0,0};

x_up_01[0] = bar_0;
x_up_01[1] = bar_1;

int maxValue_01 = ArrayMaximum(x_up_01);

Buffer1[current]= x_up_01[maxValue_01];
}
//-----------------------------------------------------
//---------bar_2-------------------------------
//-----------------------------------------------------
void TechnicalAnalysis02()
{

bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);
bar_3 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+3);

if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 > 0
&&
bar_3 == 0
)

{
Histogram02();
}

}

void Histogram02()
{
int x_up_02[] = {0,0,0};

x_up_02[0] = bar_0;
x_up_02[1] = bar_1;
x_up_02[2] = bar_2;

int maxValue_02 = ArrayMaximum(x_up_02);

Buffer1[current]= x_up_02[maxValue_02];
}
//-----------------------------------------------------
//---------bar_3--------and so on-----------------------
//-----------------------------------------------------

Wo ist mein Fehler? Wie kann ich ihn beheben?
Ich habe versucht, iCustom mit allen externen Parametern aufzurufen - dasselbe falsche Ergebnis. Ich habe versucht, iCustom ohne externe Parameter aufzurufen - gleiches falsches Ergebnis.

Danke für die Hilfe

Hauptcode (erstes Histogramm) und zweiter Code (zweites Histogramm), der darauf basiert: