Announcement

Collapse
No announcement yet.

Paint Bar Su Kama

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Paint Bar Su Kama

    Vorrei chiedere se fosse possibile realizzare due paint bar in efs, uno con la media mobile di KAUFMANN..e uno con la HULL MA., su barra on close

    Ho visto attraverso un search che ne esiste già uno costruito sulle medie tradizionali....

    La mia richiesta è motivata dal fatto che le medie mobili sono coperte nei grafici a candela...

    Un grazie anticipato a chi volesse realizzarli..credo che sarebbero due strumenti utili un pò a tutti

    Angelo

    Last edited by Angelo; 01-08-2005, 08:25 AM.

  • #2
    Angelo
    Apri HullMA.efs con l'Editor (Tools->EFS->Editor) e aggiungi le seguenti righe subito dopo HMA = (vSum/cSum);

    PHP Code:
    if(close()>HMA){
            
    setPriceBarColor(Color.blue,Color.blue,true,false);
        }
        if(
    close()<HMA){
            
    setPriceBarColor(Color.red,Color.red,true,false);
        } 
    Nella sezione preMain() dello stesso efs aggiungi anche le due seguenti righe

    PHP Code:
    setColorPriceBars(true);
    setDefaultPriceBarColor(Color.black); 
    Il risultato di queste modifiche e' visibile nell'immagine che segue. Nota che la colorazione delle barre avviene in tempo reale.



    Per quel che riguarda la KAMA ce ne sono diverse versioni e non so a quale tu ti riferisca. Comunque la logica da applicare e' esattamente la medesima con la sola differenza che il nome della variabile usata nelle condizioni sara diverso (se fosse ad esempio KAMA allora sostituirai HMA con KAMA)
    Alex

    Comment


    • #3
      Mote grazie Alexis!........ la Hull Ma fuziona perfettamente...mentre per la Kama non ci siamo..devo aver sbagliato qualcosa, ecco come ho rettificato la formula:


      //Global Variables
      var grID = 0;
      var nBarCounter = 0;
      var nPeriod = 0;
      var nFast = 0;
      var nSlow = 0;
      var aAMA = null;
      var aFPArray = new Array();
      var bInitialized = false;


      //== PreMain function required by eSignal to set things up
      function preMain() {
      var x;

      setPriceStudy(true);
      setStudyTitle("KAMA");
      setCursorLabelName("KAMA", 0);
      setDefaultBarFgColor( Color.blue, 0 );
      setShowTitleParameters( false );
      setColorPriceBars(true)
      setDefaultPriceBarColor(Color.black);



      //unrem this if you don't want the labels in cursor window
      //setShowCursorLabel(false);

      //unrem this if you don't want the study to update on every tick
      //setComputeOnClose();
      grID = 0;

      //initialize formula parameters
      x=0;
      aFPArray[x] = new FunctionParameter( "Period", FunctionParameter.NUMBER);
      with( aFPArray[x] ) {
      setName( "KAMA Period" );
      setLowerLimit( 5 );
      setUpperLimit( 125 );
      setDefault( 10 );
      }
      x++;
      aFPArray[x] = new FunctionParameter( "xFast", FunctionParameter.NUMBER);
      with( aFPArray[x] ) {
      setName( "Fast Len" );
      setLowerLimit( 1 );
      setUpperLimit( 125 );
      setDefault( 2 );
      }
      x++;
      aFPArray[x] = new FunctionParameter( "xSlow", FunctionParameter.NUMBER);
      with( aFPArray[x] ) {
      setName( "Slow Len" );
      setLowerLimit( 1 );
      setUpperLimit( 125 );
      setDefault( 30 );
      }
      x++;
      aFPArray[x] = new FunctionParameter( "lColor", FunctionParameter.COLOR);
      with( aFPArray[x] ) {
      setName( "Line Color" );
      setDefault( Color.teal );
      }

      x++;
      aFPArray[x] = new FunctionParameter( "lThick", FunctionParameter.NUMBER);
      with( aFPArray[x] ) {
      setName( "Line Thickness" );
      setLowerLimit( 1 );
      setUpperLimit( 10 );
      setDefault( 2 );
      }



      }

      //== Main processing function
      function main( Period, xFast, xSlow, lColor, lThick ) {
      var x;
      var nNoise;
      var nSignal;
      var nSmooth;

      //script is initializing
      if ( getBarState() == BARSTATE_ALLBARS ) {
      return null;
      }

      if ( bInitialized == false ) {

      setDefaultBarFgColor( lColor, 0 );
      setDefaultBarThickness( lThick, 0 );

      nPeriod = Math.round( Period );

      nFast = 2 / ( xFast + 1 );
      nSlow = 2 / ( xSlow + 1 );

      setStudyTitle( "KAMA (" + nPeriod + ")" );

      aAMA = new Array( nPeriod );
      for ( x=0; x<nPeriod; x++ ) {
      aAMA[x] = 0.0;
      }

      bInitialized = true;
      }

      //called on each new bar
      if ( getBarState() == BARSTATE_NEWBAR ) {

      aAMA.pop();
      aAMA.unshift(0);

      nBarCounter++;

      }

      if ( nBarCounter<nPeriod+1 ) {
      aAMA[0] = close();
      return;
      }


      nSignal = Math.abs( close() - close(-Period) );

      x=0;
      nNoise = 0;
      while( x<nPeriod ) {
      nNoise += Math.abs( close(-x)-close(-(x+1)) );
      x++;
      }

      if ( nNoise==0 ) nNoise = 1.0;

      nSmooth = Math.pow( ( nSignal/nNoise ) * ( nFast - nSlow ) + nSlow , 2 );

      aAMA[0] = aAMA[1] + nSmooth * ( close() - aAMA[1] );

      if ( aAMA[0]>aAMA[1] ) {
      setBarFgColor( Color.green, 0 );
      }
      else {
      setBarFgColor( Color.red, 0 );
      }

      if(close()>aAMA){
      setPriceBarColor(Color.blue,Color.blue,true,false)
      }
      if(close()<aAMA){
      setPriceBarColor(Color.red,Color.red,true,false)
      }



      return( aAMA[0] );

      }


      /*************************************************
      SUPPORT FUNCTIONS
      **************************************************/

      //== gID function assigns unique identifier to graphic/text routines
      function gID() {
      grID ++;
      return( grID );
      }




      Angelo

      Comment


      • #4
        Angelo
        Nelle condizioni devi usare aAMA[0] non aAMA
        Alex

        Comment


        • #5
          Perfetto! non so come ringraziarti, che dire...grande professionalità, complimenti ancora





          Angelo


          Last edited by Angelo; 01-08-2005, 02:25 PM.

          Comment


          • #6
            Angelo
            Il piacere e' mio e grazie per I complimenti.
            Se desideri differenziare le Up/Down bars usa I settaggi mostrati nell'immagine allegata
            Alex

            Comment


            • #7
              Originally posted by Angelo
              Perfetto! non so come ringraziarti, che dire...grande professionalità, complimenti ancora

              Angelo
              Scusa Angelo, se ti va potresti allegare la formula modificata in modo da poterla provare ?
              :-))

              Ciao

              Giuseppe

              Comment


              • #8
                Eccola qui...
                Attached Files

                Comment

                Working...
                X