Zavaró riszatás minden ticknél.2015-12-08T17:44:33+00:00

Radu.hu Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban Zavaró riszatás minden ticknél.

2 bejegyzés megtekintése - 1-2 / 2
  • Szerző
    Bejegyzés
  • kovacsgezamt4
    Tag
    Bejegyzések száma: 1

    Sziasztok!

    Van egy ADX indikátorom, ami igaz berajzolja jó helyre a buy vagy sell nyilakat, de amikor alertet adok hozzá, akkor minden ticknél riaszt. Ezt hogyan lehet elkerülni?

    Én csak az alábbi két sort illesztettem be a kód vége felé. Az Alert szövege még nincs “finomhangolva”, de most az lenne az első, ha ki tudjam küszöbölni a minden ticknél történő idegesítő alertet. :))

    Szóval a sorok: Alert(“ADX cross 1”); és
    Alert(“ADX cross 2”);

    Köszönöm előre is, ha van ötletetek!

    Üdv.: Géza

    ——————————————————————————————————

    A kód pedig:

    //+------------------------------------------------------------------+
    //|                                                   ADXcrosses.mq4 |
    //|                      Copyright © 2004, MetaQuotes Software Corp. |
    //|                                        http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2004, MetaQuotes Software Corp."
    #property link "http://www.metaquotes.net"
    
    #property indicator_chart_window
    #property indicator_buffers 2
    #property indicator_color1 Blue
    #property indicator_color2 Red
    //---- input parameters
    extern int ADXcrosses = 14;
    //---- buffers
    double ExtMapBuffer1[];
    double ExtMapBuffer2[];
    //----
    double b4plusdi, b4minusdi, nowplusdi, nowminusdi;
    int    nShift;   
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
        SetIndexStyle(0, DRAW_ARROW, 0, 1);
        SetIndexArrow(0, 233);
        SetIndexBuffer(0, ExtMapBuffer1);
    //----
        SetIndexStyle(1, DRAW_ARROW, 0, 1);
        SetIndexArrow(1, 234);
        SetIndexBuffer(1, ExtMapBuffer2);
    //---- name for DataWindow and indicator subwindow label
        IndicatorShortName("ADXcrosses");
        SetIndexLabel(0, "ADXcrUp");
        SetIndexLabel(1, "ADXcrDn"); 
    //----
        switch(Period())
          {
            case     1: nShift = 1;   break;    
            case     5: nShift = 3;   break; 
            case    15: nShift = 5;   break; 
            case    30: nShift = 10;  break; 
            case    60: nShift = 15;  break; 
            case   240: nShift = 20;  break; 
            case  1440: nShift = 80;  break; 
            case 10080: nShift = 100; break; 
            case 43200: nShift = 200; break;               
          }
    //----
        return(0);
      }
    //+------------------------------------------------------------------+
    //| Custor indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
        return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
        int limit;
        int counted_bars = IndicatorCounted();
    //---- check for possible errors
        if(counted_bars < 0) 
            return(-1);
    //---- last counted bar will be recounted
        if(counted_bars > 0) 
            counted_bars--;
        limit = Bars - counted_bars;
    //----
        for(int i = 0; i < limit; i++)
          {
            b4plusdi = iADX(NULL, 0, ADXcrosses, PRICE_CLOSE, MODE_PLUSDI, i + 1);
            nowplusdi = iADX(NULL, 0, ADXcrosses, PRICE_CLOSE, MODE_PLUSDI, i);
            b4minusdi = iADX(NULL, 0, ADXcrosses, PRICE_CLOSE, MODE_MINUSDI, i + 1);
            nowminusdi = iADX(NULL, 0, ADXcrosses, PRICE_CLOSE, MODE_MINUSDI, i);  
            //----
            if(b4plusdi < b4minusdi && nowplusdi > nowminusdi)
                ExtMapBuffer1[i] = Low[i] - nShift*Point;
                Alert("ADX cross 1");
                
            //----
            if(b4plusdi > b4minusdi && nowplusdi < nowminusdi)
                ExtMapBuffer2[i] = High[i] + nShift*Point;
                Alert("ADX cross 2");
                
          }
    //----
        return(0);
      }
    //+------------------------------------------------------------------+
    
    BillyBill
    Tag
    Bejegyzések száma: 33

    Szia,
    Írd át úgy, hogy csak akkor riasszon, ha:
    1./ i=0
    2./ az adott gyertyában még nem volt riasztás
    (Máskor úgy rakj be kódot, hogy használod az MQL4 kód beillesztése funkciót. Úgy jobban áttekinthető.)

2 bejegyzés megtekintése - 1-2 / 2

A hozzászóláshoz jelentkezz be!

Adhatok Neked még több ingyenes tartalmat?

Értesítelek hetente megjelenő új tartalmaimról.

Hozzájárulok, hogy az adatvédelmi nyilatkozat szerint biztonságosan kezeld megadott adataimat, valamint hasznos anyagokat és egyedi ajánlatokat küldj nekem termékeiddel, szolgáltatásaiddal kapcsolatban e-mailben