Announcement

Collapse
No announcement yet.

Problema nell'estrapolazione di un valore

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

    Problema nell'estrapolazione di un valore

    Ragazzi allora a me serviva estrapolarmi la terza e la quarta cifra dopo la virgola dell'atr, quindi procedo cosi:
    HTML Code:
    Double Atr = iATR(NULL,0,Period_Atr,0);
    double intAtr = DoubleToStr(Atr, 4);
    intAtr =intAtr * 10000 * Point;
    Comment ("Distanza tra ordini: "+ intAtr )
    Mi salvo il valore dell' Atr moltiplico per 10000 (in modo da portarmi le cifre dalla parte intera) e moltiplico per point per omologarlo al prezzo della valuta.
    Quello che vedete sotto è l'output del diario nel primo rigo è giusto nel secondo rigo mi da errore, e non capisco il motivo



    "2020.11.06 17:30:29.969 2019.03.11 19:00:00 Moving Averages Levels Temp EURUSD,H1: Ask: 1.12336 Distanza tra ordini: 0.00011 Atr: 0.00114000000000003 Prezzo ordine precedente: 1.12487
    2020.11.06 17:30:58.409 2019.03.29 09:00:00 Moving Averages Levels Temp EURUSD,H1: Ask: 1.12347 Distanza tra ordini: 7.000000000000001e-05Atr: 0.0006921428571429031 Prezzo ordine precedente: 1.12577"

    #2
    Ciao texcs,
    alla seconda riga non vedo errori, ma forse vedi la "e" di "esponenziale" nel numero 7.000000000000001e-05Atr.
    Il problema sta nel fatto che trasformi un tipo double in tipo stringa

    PHP Code:
    double intAtr DoubleToStr(Atr4); 
    ma nello stesso tempo dichiari la variabile tipo double, non capisco come il compilatore non ti dia un errore o quanto meno un warning.
    Se fai operazioni con numeri devi stare attento con il casting.

    Per arrotondare il tuo double puoi usare NormalizeDouble

    PHP Code:
    double  NormalizeDouble(
       
    double  value,      // normalized number
       
    int     digits      // number of digits after decimal point
       
    ); 
    mantenendo sempre il tipo double per fare le tue operazioni matematiche, ed eventualmente farne il casting in stringa se devi stampare il valore.

    Comment


      #3
      Ciao grazie del suggerimento ho fatto queste modifiche
      HTML Code:
      double intAtr = NormalizeDouble(Atr, 4);
      intAtr =intAtr * 10000 * Point;
      a volte va bene a volte no(allego immagine)
      Attached Files

      Comment


        #4
        Originally posted by texcs View Post
        Ciao grazie del suggerimento ho fatto queste modifiche
        HTML Code:
        double intAtr = NormalizeDouble(Atr, 4);
        intAtr =intAtr * 10000 * Point;
        a volte va bene a volte no(allego immagine)
        la funzione NormalizeDouble() usala anche appena prima di stampare il dato.

        Es.:
        PHP Code:
        Comment ("Distanza tra ordini: "NormalizeDouble(intAtr)) 
        Ma a parte la notazione esponeziale ti dà effettivamente dei problemi ai fini del tuo sistema?

        Comment


          #5
          0al di là di questa notazione, l'anomalia che trovo io è questa:
          prendiamo in esame questo rigo:

          "2020.11.09 12:57:07.381 2020.04.15 15:00:00 Moving Averages Levels Temp GBPUSD,H1: Bid: 1.24864 Distanza tra ordini: 0.00021 Atr: 0.0021 Prezzo ordine precedente: 1.24583"


          Quell'atr =0.00021 serve per dare il distanziamento dell'apertura ordini nel senso che se l'ordine precedente è bid quindi sell a 1.24583 l'ordine precedente dovrebbe essere a: Bid - Atr = 1.24864 - 1.24583 = 0,0028 visto che 28 è > di 21 (atr) allora lui mi apre un altro ordine,
          invece:
          "2020.11.09 12:55:15.869 2020.01.24 10:00:00 Moving Averages Levels Temp GBPUSD,H1: Bid: 1.31256 Distanza tra ordini: 9.000000000000001e-05 Atr: 0.0009 Prezzo ordine precedente: 1.31183" qua nn mi prende la distanza giusta;

          sisi lo uso pure nel print " Print("Bid: "+ Bid + " Distanza tra ordini: " + intAtr + " Atr: " + NormalizeDouble(Atr,4) + " Prezzo ordine precedente: "+ LastSellPrice);"













          Comment

          Working...
          X