Pinbar

 

sagt mal, hat jemand von euch schon mal pinbars für einen ea definiert?


ich scheitere gerade mit meiner Definition, wobei ich der Meinung bin, da rechnet mt5 falsch

bool PinbarLong(const string sym,const ENUM_TIMEFRAMES tf,const int shift,const int ProzentPinbarKurzerTocht,  int ProzentPinbarLangerTocht, const bool TrueDirectionPinbar)
  {
  
  Print(tf,sym,shift);
   bool Pinbar=false;
   bool Tocht_oben=false;
   bool Tocht_unten=false;

   double TochtOben=0;
   double TochtUnten=0;
   double Spanne=0;

   Spanne=NormalizeDouble(iHigh(sym,tf,shift)-iLow(sym,tf,shift),_Digits)
      if(!TrueDirectionPinbar)
        {
       
         TochtOben=NormalizeDouble(iHigh(sym,tf,shift)-MathMax(iClose(sym,tf,shift),iOpen(sym,tf,shift)),_Digits);
    //     Print(TochtOben);
         if(TochtOben<NormalizeDouble(((Spanne/100)*ProzentPinbarKurzerTocht),_Digits)) Tocht_oben=true;

         TochtUnten=NormalizeDouble(MathMin(iOpen(sym,tf,shift),iClose(sym,tf,shift))-iLow(sym,tf,shift),_Digits);
        
         if(TochtUnten>NormalizeDouble(((Spanne/100)*ProzentPinbarLangerTocht),_Digits)) Tocht_unten=true;

        }

   if(Tocht_oben==true && Tocht_unten==true) Pinbar=true;

Print(sym, " ",tf," Spanne: ", Spanne," Tocht unten: ", TochtUnten," Tocht oben: ",TochtOben);
Print(Tocht_unten,Tocht_oben,Pinbar);

   // if(Pinbar) Print(Tocht_oben," ", Tocht_unten," Long hier");
   return(Pinbar);
  }


Manche Pinbars erkennt er ja richtig, manche gar nicht, und bei manche ignoriert er, das für einen Pinbar Long der lange Tocht unten sein muss

ich finde da einfach den Fehler nicht.


Das ganze übergebe ich dann mit

PinbarLong(sym, PERIOD_M5, 1, 20, 50, false)

Wobei als Symbol das Symbol als string drinnensteht


Ich weis nur nicht warum die Erkennung falsch ist

 

challenge accepted... vielleicht so?

bool bullish_pinbar(string symbolstring,ENUM_TIMEFRAMES tf=PERIOD_CURRENT,int shift=1,double min_pin_percentage=0.8)
  {return MathMin(iOpen(symbolstring,tf,shift),iClose(symbolstring,tf,shift))-iLow(symbolstring,tf,shift)>=min_pin_percentage*(iHigh(symbolstring,tf,shift)-iLow(symbolstring,tf,shift));}
  
bool bearish_pinbar(string symbolstring,ENUM_TIMEFRAMES tf=PERIOD_CURRENT,int shift=1,double min_pin_percentage=0.8)
  {return iHigh(symbolstring,tf,shift)-MathMax(iOpen(symbolstring,tf,shift),iClose(symbolstring,tf,shift))>=min_pin_percentage*(iHigh(symbolstring,tf,shift)-iLow(symbolstring,tf,shift));}
 
Chris70:

challenge accepted... vielleicht so?

Hallo chris,


genausogut wie meiner 😂aber wesentlich kompakter geschrieben

Hab dafür bei mir einen fehler in der restlichen logik gefunden, ich muss beim initialisieren alles mal durchlaufen lassen

Grund der Beschwerde: