Announcement

Collapse
No announcement yet.

Linea orizzontale automatica

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

  • Linea orizzontale automatica

    Mi piacerebbe poter realizzare questo indicatore, per me troppo complicato da fare, perchè nella programmazione anche se sto studiando, sono ad un livello base.
    L'indicatore disegna automaticamente un numero specifico di linee orizzontali a specifici livelli di prezzo. La linea disegnata è di colore blue, ha uno spessore di 2 e mostra il livello di prezzo al centro ( vedi foto ).
    Abbiamo 4 parametri:
    1) Balance level: esempio crude oil metto 70
    2) Tick Distance: esempio crude oil metto 100
    3) Up Line: esempio, metto 10. Significa nell'esempio del crude oil, che oltre al prezzo 70 ( Balance Line) mi desegna automaticamente 10 linee ai prezzi 71, 72, 73 ecc (perchè separati da 100 tick con il parametro Tick Distance ).
    4) Down Line: esempio, metto 10. Significa nell'esempio del crude oil, che sotto al prezzo 70 ( Balance Line ) mi disegna automaticamente 10 linee ai prezzi 69, 68, 67 ecc (perchè separati da 100 tick con il parametro Tick Distance ).
    Tutti questi paramentri sono variabili.
    Sono consapevole della difficoltà, spero che Alexis Montenegro mi possa aiutare, per me sarebbe un gran cosa. In ogni caso vi ringrazio lo stesso.
    Nella foto sotto i livelli sono disegnati a mano
    Attached Files

  • #2
    Ciao Guru73,
    prova con il codice seguente.
    Il mio abbonamento eSignal prevede solo azioni MTA, per cui io l'ho testato solo sull'azionario. Spero funzioni anche su altri tipi di grafici.
    Tieni conto che è una versione basica che non prevede alcun tipo di controllo sull'input.
    La voce "Multiplo" l'ho introdotta per permettere incrementi inferiori all'unità.

    Cordialmente
    Massimo

    function preMain(){
    setPriceStudy(true);
    setShowCursorLabel(false);
    }
    //
    // EDIT PARAMETERS
    //
    var fpArray= new Array(); // Array che conterrà i new FunctionParameter
    var w=0;

    fpArray[w] = new FunctionParameter("nBalL", FunctionParameter.NUMBER);
    with(fpArray[w++]){
    setName("Balance Level");
    setLowerLimit(0);
    setDefault(0);
    }
    fpArray[w] = new FunctionParameter("nTickD", FunctionParameter.NUMBER);
    with(fpArray[w++]){
    setName("Tick Distance");
    setLowerLimit(1);
    setDefault(1);
    }
    fpArray[w] = new FunctionParameter("nUpL", FunctionParameter.NUMBER);
    with(fpArray[w++]){
    setName("Up Line");
    setLowerLimit(0);
    setDefault(10);
    }
    fpArray[w] = new FunctionParameter("nDownL", FunctionParameter.NUMBER);
    with(fpArray[w++]){
    setName("Down Line");
    setLowerLimit(0);
    setDefault(10);
    }
    fpArray[w] = new FunctionParameter("nMult", FunctionParameter.NUMBER);
    with(fpArray[w++]){
    setName("Multiplo Riduttore");
    setLowerLimit(1);
    setDefault(100);
    }

    function main(nBalL, nTickD, nUpL, nDownL, nMult){
    if (nBalL==0) askForInput();
    if (nBalL!=0) {
    var x=0;
    addBand(nBalL, PS_SOLID, 2, Color.red, x++);
    }
    for (var y=nBalL+(nTickD/nMult); y<=nBalL+((nUpL+1)*nTickD/nMult); y=y+nTickD/nMult) {
    addBand(y, PS_SOLID, 2, Color.blue, x++);
    }
    for (var z=nBalL-(nTickD/nMult); z>=nBalL-((nDownL+1)*nTickD/nMult); z=z-nTickD/nMult) {
    addBand(z, PS_SOLID, 2, Color.blue, x++);
    }
    }
    Attached Files

    Comment


    • #3
      Originally posted by maxmax68
      Ciao Guru73,
      prova con il codice seguente.
      Il mio abbonamento eSignal prevede solo azioni MTA, per cui io l'ho testato solo sull'azionario. Spero funzioni anche su altri tipi di grafici.
      Tieni conto che è una versione basica che non prevede alcun tipo di controllo sull'input.
      La voce "Multiplo" l'ho introdotta per permettere incrementi inferiori all'unità.

      Cordialmente
      Massimo

      function preMain(){
      setPriceStudy(true);
      setShowCursorLabel(false);
      }
      //
      // EDIT PARAMETERS
      //
      var fpArray= new Array(); // Array che conterrà i new FunctionParameter
      var w=0;

      fpArray[w] = new FunctionParameter("nBalL", FunctionParameter.NUMBER);
      with(fpArray[w++]){
      setName("Balance Level");
      setLowerLimit(0);
      setDefault(0);
      }
      fpArray[w] = new FunctionParameter("nTickD", FunctionParameter.NUMBER);
      with(fpArray[w++]){
      setName("Tick Distance");
      setLowerLimit(1);
      setDefault(1);
      }
      fpArray[w] = new FunctionParameter("nUpL", FunctionParameter.NUMBER);
      with(fpArray[w++]){
      setName("Up Line");
      setLowerLimit(0);
      setDefault(10);
      }
      fpArray[w] = new FunctionParameter("nDownL", FunctionParameter.NUMBER);
      with(fpArray[w++]){
      setName("Down Line");
      setLowerLimit(0);
      setDefault(10);
      }
      fpArray[w] = new FunctionParameter("nMult", FunctionParameter.NUMBER);
      with(fpArray[w++]){
      setName("Multiplo Riduttore");
      setLowerLimit(1);
      setDefault(100);
      }

      function main(nBalL, nTickD, nUpL, nDownL, nMult){
      if (nBalL==0) askForInput();
      if (nBalL!=0) {
      var x=0;
      addBand(nBalL, PS_SOLID, 2, Color.red, x++);
      }
      for (var y=nBalL+(nTickD/nMult); y<=nBalL+((nUpL+1)*nTickD/nMult); y=y+nTickD/nMult) {
      addBand(y, PS_SOLID, 2, Color.blue, x++);
      }
      for (var z=nBalL-(nTickD/nMult); z>=nBalL-((nDownL+1)*nTickD/nMult); z=z-nTickD/nMult) {
      addBand(z, PS_SOLID, 2, Color.blue, x++);
      }
      }
      Massimo, davvero grazie mille!!!! Sei stato gentilissimo, spero di poter ricambiare, l'indicatore va bene, anche se devo guardarlo meglio, ti terrò informato. Ti saluto e ti ringrazio ancora.

      P.S. Hai un messaggio privato.

      Comment

      Working...
      X