fractal, notyfikacja mailem

O jezykach programowania w platformach i nie tylko.
waz
Stały bywalec
Stały bywalec
Posty: 44
Rejestracja: 12 wrz 2007, 22:52

fractal, notyfikacja mailem

Nieprzeczytany post autor: waz »

witam,

uzywam wskaznika rysujacego fraktale.
kod ponizej
w kodzie wpisalem aby wyswietlal tylko fraktale z ostatnich 50 swieczek i=50;.
dodalem opcje wysylania maila po pojawieniu sie kazdego fraktala.
jednak informacja o pojawieniu sie fraktala wysylana jest ponownie dla calego ciagu fraktali z ostatnich 50 swieczek, po kazdorazowym ticku.

probowalem ze zmienna statyczna, aby uniemozliwic ponowne wyslanie informacji po nowym ticku.
w jaki spsob przyblokowac wysylanie informacji po pojawniu sie nowego ticku dla calego ciagau, tak aby wyslana byla informacja tylko dla ostatniego fractala.

Kod: Zaznacz cały



#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 Red
//---- input parameters

//---- buffers
double dUpFractalsBuffer[];
double dDownFractalsBuffer[];

static bool wyslano_h;
static bool wyslano_l;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,dUpFractalsBuffer);
    SetIndexBuffer(1,dDownFractalsBuffer);   
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,119);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,119);
//----
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Fractal Up");
    SetIndexLabel(1,"Fractal Down");
//---- initialization done   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int i,nCountedBars;
    nCountedBars=IndicatorCounted();
//---- check for possible errors
    if(nCountedBars<0) return(-1);
//---- last counted bar will be recounted    
    if(nCountedBars<=2)
       i=50;
      // i=Bars-nCountedBars-3;
        
    if(nCountedBars>2)
      {
       nCountedBars--;
       //i--;
       i=50;
       //i=Bars-nCountedBars-1;
      
      
      }
    while(i>=2)
     {
//----Up and Down Fractals
//----5 bars Fractal
 if(High[i]>High[i+1] && High[i]>High[i+2] && High[i]>High[i-1] && High[i]>High[i-2]   )
      {
        
          dUpFractalsBuffer[i]= High[i];
          
                  if (wyslano_h==false )
                  {
                  send_smtp_cena("fraktal gora " ,1, Time[i]);
                   wyslano_h=true;
                   wyslano_l=false;
                  } 
                   
          }
  if(Low[i]<Low[i+1] && Low[i]<Low[i+2] && Low[i]<Low[i-1] && Low[i]<Low[i-2])
        {
        {
         
          dDownFractalsBuffer[i]= Low[i];
            if (wyslano_l==false )
                  {
                  send_smtp_cena("fraktal dol " ,1, Time[i]);
                   wyslano_l=true;
                   wyslano_h=false;
                  } 
          
          }
          i--;
          continue;
        }
//----6 bars Fractal
      //if((Bars-i-1)>=3)
      if((50-i-1)>=3)
     
        {
          if(High[i]==High[i+1] && High[i]>High[i+2] && High[i]>High[i+3] && High[i]>High[i-1] && High[i]>High[i-2]   )
               {
       
          dUpFractalsBuffer[i]= High[i];
            if (wyslano_h==false )
                  {
                  send_smtp_cena("fraktal gora " ,1, Time[i]);
                   wyslano_h=true;
                   wyslano_l=false;
                  } 
          }
          if(Low[i]==Low[i+1] && Low[i]<Low[i+2] && Low[i]<Low[i+3] && Low[i]<Low[i-1] && Low[i]<Low[i-2]     )
            {
               {
         
          dDownFractalsBuffer[i]= Low[i];
           if (wyslano_l==false )
                  {
                  send_smtp_cena("fraktal dol " ,1, Time[i]);
                   wyslano_l=true;
                   wyslano_h=false;
                  } 
          
          }
              i--;
              continue;
            }                      
        }         
//----7 bars Fractal
      //if((Bars-i-1)>=4)
     if((50-i-1)>=4)
     
        {   
         if(High[i]>=High[i+1] && High[i]==High[i+2] && High[i]>High[i+3] && High[i]>High[i+4] && High[i]>High[i-1] && 
            High[i]>High[i-2]     )
             {
        
          dUpFractalsBuffer[i]= High[i];
            if (wyslano_h==false )
                  {
                  send_smtp_cena("fraktal gora " ,1, Time[i]);
                   wyslano_h=true;
                   wyslano_l=false;
                  } 
          }
         if(Low[i]<=Low[i+1] && Low[i]==Low[i+2] && Low[i]<Low[i+3] && Low[i]<Low[i+4] && Low[i]<Low[i-1] && 
            Low[i]<Low[i-2]       )
           {
              {
        
          dDownFractalsBuffer[i]= Low[i];
           if (wyslano_l==false )
                  {
                  send_smtp_cena("fraktal dol " ,1, Time[i]);
                   wyslano_l=true;
                   wyslano_h=false;
                  } 
          
          }
             i--;
             continue;
           }                  
        }  
 //----8 bars Fractal                          
      //if((Bars-i-1)>=5)
     if((50-i-1)>=5)
     
        {   
         if(High[i]>=High[i+1] && High[i]==High[i+2] && High[i]==High[i+3] && High[i]>High[i+4] && High[i]>High[i+5] && 
            High[i]>High[i-1] && High[i]>High[i-2]     )
             {
        
          dUpFractalsBuffer[i]= High[i];
            if (wyslano_h==false )
                  {
                  send_smtp_cena("fraktal gora " ,1, Time[i]);
                   wyslano_h=true;
                   wyslano_l=false;
                  } 
          }
         if(Low[i]<=Low[i+1] && Low[i]==Low[i+2] && Low[i]==Low[i+3] && Low[i]<Low[i+4] && Low[i]<Low[i+5] && 
            Low[i]<Low[i-1] && Low[i]<Low[i-2]     )
           {
             {
        
          dDownFractalsBuffer[i]= Low[i];
           if (wyslano_l==false )
                  {
                   send_smtp_cena("fraktal dol " ,1, Time[i]);
                   wyslano_l=true;
                   wyslano_h=false;
                  } 
          
          }
             i--;
             continue;
           }                              
        } 
//----9 bars Fractal                                        
      //if((Bars-i-1)>=6)
     if((50-i-1)>=6)
     
        {   
         if(High[i]>=High[i+1] && High[i]==High[i+2] && High[i]>=High[i+3] && High[i]==High[i+4] && High[i]>High[i+5] && 
            High[i]>High[i+6] && High[i]>High[i-1] && High[i]>High[i-2]     )
             {
      
          dUpFractalsBuffer[i]= High[i];
            if (wyslano_h==false )
                  {
                   send_smtp_cena("fraktal gora " ,1, Time[i]);
                   wyslano_h=true;
                   wyslano_l=false;
                  } 
          }
         if(Low[i]<=Low[i+1] && Low[i]==Low[i+2] && Low[i]<=Low[i+3] && Low[i]==Low[i+4] && Low[i]<Low[i+5] && 
            Low[i]<Low[i+6] && Low[i]<Low[i-1] && Low[i]<Low[i-2]     )
           {
             {
         
          dDownFractalsBuffer[i]= Low[i];
           if (wyslano_l==false )
                  {
                  send_smtp_cena("fraktal dol " ,1, Time[i]);
                   wyslano_l=true;
                   wyslano_h=false;
                  } 
          }
             i--;
             continue;
           }                        
        }                                    
      i--;
     }

//----
   return(0);

[/code]

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

funkcja isNewBar zwraca info czy jest nowa świeca:

Kod: Zaznacz cały

bool isNewBar() {
 static int prevTime;
 bool newBar=false;

 if(Time[0]!=prevTime) {
  newBar=true;
  prevTime=Time[0];
 }
 return(newBar);
} 
nie wielka jej modyfikacja i może zwracać informacje czy jest nowy fraktal - sprawdzasz w jakim miejscu (na jakiej świecy był ostatni fraktal i dopiero jak on się zmieni [ten czas] to znak że jest nowy fraktal)
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

ODPOWIEDZ