Announcement

Collapse
No announcement yet.

Help - costruzione efs

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

  • #16
    grazie Alex

    vedo che se metto le parentesi graffe, devo collegarle tra loro con else ... giusto?
    Sostieni il Meglio di te , aiutaci a fare di più!

    Fra

    Comment


    • #17
      Fra
      In quel contesto si perche con else stai stabilendo un secondo gruppo di comandi da eseguire se la condizione riporta "false".
      Alex

      Comment


      • #18
        ecco qui
        Attached Files
        Sostieni il Meglio di te , aiutaci a fare di più!

        Fra

        Comment


        • #19
          Allora Alexis

          come si vede nello snap in basso (nel post precedente) spesso la freccia risulta "fastidiosamente" troppo vicina alla candela, c'è modo di modificarne la posizione?
          Sostieni il Meglio di te , aiutaci a fare di più!

          Fra

          Comment


          • #20
            dunque...ho trovato un post in inglese he spiegava come spostare e l'ho applicato...

            PHP Code:
             if (vCCI20_of_OHLC4.getValue(CCIStudy.CCI) >= 100)
                    
            onAction1();
                else
                    
            onAction1b(); 
            PHP Code:
            if (vCCI20_of_OHLC4.getValue(CCIStudy.CCI) >= 60 && vCCI20_of_OHLC4.getValue(CCIStudy.CCI) <100)
                    
            onAction3();
                else
                    
            onAction3b(); 
            PHP Code:
            function onAction1() {
                
            drawTextRelative(0low()-.5"é"Color.greennullText.TOP|Text.CENTER|Text.BOLD"Wingdings"10"verde"+getCurrentBarCount());
            }
            function 
            onAction1b(){
                
            removeText("verde"+getCurrentBarCount()) 
            PHP Code:
            function onAction3() {
                
            drawTextRelative(0low()-.5"p"Color.bluenullText.BOTTOM|Text.CENTER|Text.BOLD"Wingdings"10"blue"+getCurrentBarCount());
            }
            function 
            onAction3b(){
                
            removeText("blue"+getCurrentBarCount()) 
            però ho un problemino...la onAction3 disegna più vicino alla candela, ma succedeva anche prima, andandosi a sovrapporre, come mai?
            Attached Files
            Sostieni il Meglio di te , aiutaci a fare di più!

            Fra

            Comment


            • #21
              Fra
              Quello ti succede perche stai allineando il limite inferiore dell'oggetto grafico con il Low. Nota la differenza fra questi due comandi (il primo e' dal tuo onAction1 ed il secondo dall'onAction3

              PHP Code:
              drawTextRelative(0low()-.5"é"Color.greennullText.TOP|Text.CENTER|Text.BOLD"Wingdings"10"verde"+getCurrentBarCount());
              drawTextRelative(0low()-.5"p"Color.bluenullText.BOTTOM|Text.CENTER|Text.BOLD"Wingdings"10"blue"+getCurrentBarCount()); 
              Il parametro usato per allineare verticalmente il testo e' Text.TOP in onAction1 e Text.BOTTOM in onAction3. Quindi mentre in onAction1 passi il comando di allineare la parte superiore (TOP) dell'oggetto grafico con il Low nel secondo caso passi il comando di allineare la parte inferiore (BOTTOM) dell'oggetto grafico sempre con il Low.
              Sostituisci BOTTOM con TOP e avrai lo stesso allineamento della freccia
              Alex

              Comment


              • #22
                ops errore da copia/incolla
                Sostieni il Meglio di te , aiutaci a fare di più!

                Fra

                Comment


                • #23
                  Fra
                  Un'altra cosa che vorrai tenere da conto e' che non dovresti piu avere bisogno di aggiungere una "spaziatura" per allineare verticalmente l'oggetto grafico. Mi riferisco nella fattispecie al parametro low()-.5 che immagino tu abbia aggiunto per ovviare al problema precedente e che potrebbe pero' crearti dei problemi con strumenti tipo 6E (o simili) con I quali +/-0.5 posizionerebbe l'oggetto grafico fuori scala.
                  Prova quindi ad usare soltanto low() o high() come parametri per il posizionamento verticale.
                  Alex

                  Comment


                  • #24
                    Grazie Alexis

                    avevo aggiunto il parametro per la distanza anche per allontanare quelli fatti bene dai min/max, in modo da "pulire" il chart
                    il sistema, per avere una distanza fissa, avrebbe bisogno di conoscere il tick in modo da mettere low()- (x*2), dove x è il tick

                    c'è il modo per farglielo fare?
                    Sostieni il Meglio di te , aiutaci a fare di più!

                    Fra

                    Comment


                    • #25
                      Fra
                      Con EFS2 sono ora disponibili due nuovi comandi semplificati per disegnare grafici e/o testo nella fattispecie drawShape() e drawText(). A differenza di drawShapeRelative/Absolute() e drawTextRelative/Absolute() questi comandi non consentono di posizionare il grafico/testo altro che sulla barra in cui si verifica la condizione cioe non hanno una coordinata x (soltanto la y).
                      Unitamente a questi comandi sono stati aggiunti alcuni parametri che semplificano il posizionamento verticale del grafico/testo ad esempio AboveBar1, AboveBar2, etc (fino a 4) e BelowBar1, BelowBar2, etc. Quindi al posto di

                      PHP Code:
                      drawTextRelative(0low()-.5"é"Color.greennullText.TOP|Text.CENTER|Text.BOLD"Wingdings"10"verde"+getCurrentBarCount()); 
                      potresti ora usare

                      PHP Code:
                      drawShape(Shape.UPARROW,BelowBar1,Color.green,"verde"+getCurrentBarCount()); 
                      In questo caso ho sostituito il comando drawTextRelative con drawShape dato che non e' piu necessario usare il testo per spaziare correttamente la freccia. Se desideri incrementare la spaziature usa AboveBar2, BelowBar2, 3 ecc.
                      Nel tuo efs dovrai anche modificare il relativo comando che cancella la freccia

                      PHP Code:
                      removeTextRelative("verde"+getCurrentBarCount()); 
                      con

                      PHP Code:
                      removeShape("verde"+getCurrentBarCount()); 
                      Nota che I parametri AboveBar1, BelowBar1, ecc sono disponibili anche con I comandi drawTextRelative/Absolute(), drawShapeRelative/Absolute() ma in quel caso dovrai aggiungere il parametro Text.PRESET come nell'esempio che segue

                      PHP Code:
                      drawTextRelative(0BelowBar1"é"Color.greennullText.PRESET|Text.CENTER|Text.BOLD"Wingdings"10"verde"+getCurrentBarCount()); 
                      Se ti interessa avere ulteriori informazioni su questi nuovi comandi clicca i seguenti links per drawShape() e drawText()
                      Alex

                      Comment


                      • #26
                        mi piace questa funzione del drawshape... piazzando i simboli a above/below 2 e 4 ottengo il risultato voluto !

                        Thanks !
                        Attached Files
                        Sostieni il Meglio di te , aiutaci a fare di più!

                        Fra

                        Comment


                        • #27
                          PHP Code:
                          function preMain() {
                              
                          setPriceStudy(true);
                              
                          setStudyTitle("Fra");
                              
                          setCursorLabelName("CCI Pulse"0);
                              
                          setDefaultPriceBarColor(Color.black);
                              
                          setColorPriceBars(true); 
                          ho inserito il setCursorLabelName, mi interessava la possibilità di andare a vedere il valore che ora si vede in alto nel chart (il valore del cci), nella cursor window.

                          al momento non visualizza nulla...allora sono andato a vedere la sintassi, e richiederebbe dopo il return nel function main il get value...ma poi mi plotta il cci sul chart

                          si aggira la cosa?
                          Attached Files
                          Sostieni il Meglio di te , aiutaci a fare di più!

                          Fra

                          Comment


                          • #28
                            Fra
                            E' possibile aggirare il problema. Quello che devi fare e' di includere il CCI nel return ma al contempo convertirlo a stringa che il grafico non plotta ma il cui valore viene comunque riportato nella Cursor Window. Per convertire un valore ad una stringa ci sono diversi metodi il piu semplice e' riportato qui di seguito (per questo esempio assumo che il tuo studio sia vCCI.getValue(CCIStudy.CCI))
                            Alex

                            PHP Code:
                            return formatPriceNumber(vCCI.getValue(CCIStudy.CCI)); 

                            Comment


                            • #29
                              perfetto...a sua volta può essere formattato a toFixed(2) in qualche modo, come per il drawtext intendo...?
                              Sostieni il Meglio di te , aiutaci a fare di più!

                              Fra

                              Comment


                              • #30
                                Fra
                                Quello e' un altro dei metodi disponibili per convertire un valore a stringa. In quel caso non hai bisogno di usare formatPriceNumber(valore) ma puoi usare direttamente vCCI.getValue(CCIStudy.CCI).toFixed(2). Nota pero che in questo caso dovrai prima inserire un null check prima di poter usare toFixed(n) e cioe come mostrato nell'esempio che segue
                                Alex

                                PHP Code:
                                if(vCCI.getValue(CCIStudy.CCI)==null) return;// questo e' il null check
                                return vCCI.getValue(CCIStudy.CCI).toFixed(2); 

                                Comment

                                Working...
                                X