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.