Announcement

Collapse
No announcement yet.

Problema per uscire da un ciclo

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

  • umbertosm
    replied
    leggi 41 sul grafico, che corrisponde a 4.1 pip : Metatrader ti fa vedere i Point che molto spesso corrisponde a 0.1 pip

    Leave a comment:


  • texcs
    replied
    però dall'immagine grafica non sembra che la distanza sia 41 questo vogliodire

    Leave a comment:


  • umbertosm
    replied
    Originally posted by texcs View Post

    Distanza tra le medie: è la distanza tra le medie al momento del segnale
    Distanza extern: è la distanza Inserita dall'esterno
    nell'allegato la distanza tra le medie era 41
    La distanza extern era 3 però dove c'è l'ultimo segnale (freccia rossa) nn mi pare che la distanza sia 41
    se la condizione è che il segnale c'è quando la distanza tra le medie è >= 3
    è corretto che se la distanza tra le medie è 41 ci sia il segnale, essendo 41 > 3

    Leave a comment:


  • texcs
    replied
    Originally posted by texcs View Post
    extern distanza5 = 5
    ho sistemaato le condizioni così:
    PHP Code:
    extern distanza5 5

    double pipsMAbuy5 
    = (int)MathFloorMathAbs(ImaVeloce5-ImaLenta5)/(_Point) );
    double pipsMAsell5 = (int)MathFloorMathAbs(ImaVeloce5-ImaLenta5)/(_Point) );


    if ((
    MA1now5 MA2now5) && (MA1previous5 MA2previous5) && (MA1after5 MA2after5)&&(pipsMAbuy5>=(Distanza5))) CrossUp5[i5] = Low[i5] - Range5 1.5;
    else if ((
    MA1now5 MA2now5) && (MA1previous5 MA2previous5) && (MA1after5 MA2after5)&&(pipsMAsell5>=Distanza5)) CrossDown5[i5] = High[i5] + Range5*1.5
    Ma non vengono rispettate ma per caso ci va aggiunto "Distanza * point"?
    avete idee?
    Infatti è quello che ho ho fatto il risultato è in immagine allegata
    PHP Code:
     Comment("\nUltimo Segnale \nRialzista su "+Symbol()+" a TF "+IntegerToString(Period(),0,0)+" \nBuy at: "Low[i5] + "\nDistanza tra le medie: "pipsMAbuy5 +"\nDistanza extern: "distanza +"\nStop :" Low[i5+1]+
                
    "\nIma Fast: " ImaVeloce5 "\nImaSlow" ImaLenta5 +"\nLotSize:"CalcoloSize(Low[i5+1]* Point)); 
    Dove:
    Distanza tra le medie: è la distanza tra le medie al momento del segnale
    Distanza extern: è la distanza Inserita dall'esterno
    nell'allegato la distanza tra le medie era 41
    La distanza extern era 3 però dove c'è l'ultimo segnale (freccia rossa) nn mi pare che la distanza sia 41

    Come mai avete idee?
    Attached Files

    Leave a comment:


  • umbertosm
    replied
    io, in questi casi in cui non so se ho scritto bene i valori delle formule,
    stampo con Print(...) ogni variabile, il valore di ciascuna media, la differenza delle medie, qualsiasi altra variabile, distanza5, range5, high[i5], ecc.
    al fine di verificare manualmente se sto facendo delle IF che possono funzionare o mi sto dimenticando qualche moltiplicatore (es. point) da qualche parte.
    Inoltre calcolo da me sul grafico con il cursore quanti sono i pip in quel punto così da sapere che valori mi devo aspettare di trovare con le formule.

    Leave a comment:


  • texcs
    replied
    extern distanza5 = 5
    ho sistemaato le condizioni così:
    PHP Code:
    extern distanza5 5

        double pipsMAbuy5 
    = (int)MathFloorMathAbs(ImaVeloce5-ImaLenta5)/(_Point) );
             
    double pipsMAsell5 = (int)MathFloorMathAbs(ImaVeloce5-ImaLenta5)/(_Point) );


       if ((
    MA1now5 MA2now5) && (MA1previous5 MA2previous5) && (MA1after5 MA2after5)&&(pipsMAbuy5>=(Distanza5))) CrossUp5[i5] = Low[i5] - Range5 1.5;
         else if ((
    MA1now5 MA2now5) && (MA1previous5 MA2previous5) && (MA1after5 MA2after5)&&(pipsMAsell5>=Distanza5)) CrossDown5[i5] = High[i5] + Range5*1.5
    Ma non vengono rispettate ma per caso ci va aggiunto "Distanza * point"?
    avete idee?

    Leave a comment:


  • texcs
    replied
    si appunto e poi perchè non segue questa condizion"&(pipsMAbuy5>=Distanza5 * _Point) "

    Leave a comment:


  • umbertosm
    replied
    Che ti stampi la distanza tra le medie = 0
    credo sia un errore: è difficile che le due medie abbiano lo stesso esatto valore in quel punto in cui calcoli la distanza tra di loro.

    Leave a comment:


  • texcs
    replied
    Allora ho modificato il codice in questo modo
    PHP Code:
           if ((MA1now5 MA2now5) && (MA1previous5 MA2previous5) && (MA1after5 MA2after5)&&(pipsMAbuy5>=Distanza5 _Point) ) CrossUp5[i5] = Low[i5] - Range5 1.5
    dove " Distanza5" è una variabile settata a 5, in modo che il segnale me lo dovrebbe dare quando la distanza delle medie è >= 5 ; ora nell'immagine che allego vedrete che nei commenti (in alto a sx
    cerchio nero) la distanza tra le medie è 0 (e mi da ugualmente il segnale anche se non è >=5).

    C'e anche questo che non mi spiego nei commenti la distanza delle medie è 0 invece nella didascalia puntando la freccia del segnale cerchio rosso mi dà 118.5782, questo è il codice
    PHP Code:
      Comment("Ultimo Segnale Rialzista su "+Symbol()+" a TF "+IntegerToString(Period(),0,0)+" \nBuy at: "Low[i5] + "\nDistanza tra le medie: "pipsMAbuy5 +"\nDistanza extern: "Distanza5 +"\nStop :" Low[i5+1]+ "\nIma Fast: " ImaVeloce5 "\nImaLenta" ImaLenta5);
               
    SetIndexLabel(2," \nBuy at: "Low[i5] + "\nDistanza medie: "pipsMAbuy5 +"\nDistanza extern: "Distanza5"\nStop :" Low[i5+1]); 
    Qual'è il problema secondo voi?
    grazie!Forum.jpg

    Leave a comment:


  • umbertosm
    replied
    If (mediaA[1] - mediaB[1] > pipsMAbuy) Compra();

    [1] è la barra appena conclusa

    Leave a comment:


  • texcs
    replied
    Grazie, ora volevo un 'altra delucidazione, in questo modo la funzione mi segnala l'incrocio delle medie,
    inserendo questa pezzo

    PHP Code:
    ((pipsMAsell == intRastvor &.................. 
    per sell
    PHP Code:
    ((pipsMAbuy == intRastvor &................. 
    per buy


    dove "intRastvor" è una variabile esterna vorre farmi dare il segnale qundo la distanza tra una media e l'altra c'è una distanza che vale "intRastvor".

    però cosi nn funziona ........... idee per sistemarlo

    Leave a comment:


  • umbertosm
    replied
    l'unico eventuale buco logico che vedo sono le due funzioni separate
    AllertoPerIlRialzo();
    AllertoPerIlRibasso();
    non so cosa fanno,
    fai in modo di usarne una sola che si allerta sia per il buy che per il sell, facendo quel che devono fare per uno o l'altro segnale

    Leave a comment:


  • texcs
    replied
    Non segue l'alternanza buy/sell sell/buy

    Leave a comment:


  • umbertosm
    replied
    Originally posted by texcs View Post
    PHP Code:

    if (MedieCicliche(Rastvor)==+1)

    {
    if (
    BuySell !=+1){
    // Comment("Buy " + buy + pipsMAbuy+ "\nPips"+ "\nRastvor" + Rastvor);
    AllertoPerIlRialzo();
    BuySell =+1;
    }

    }
    else if(
    MedieCicliche(Rastvor)==-1)
    {
    if (
    BuySell !=-1)
    {
    // Comment("\nSell " +sell+ "\nPips" + pipsMAsell+ "\nRastvor" + Rastvor);
    AllertoPerIlRibasso();
    BuySell =-1;
    }


    ora il mio problema è che vorrei farmi segnare solo una volta i segnali esempio: segnale buy dopo si attende un segnale sell e viceversa ma non doppio buy o doppio sell, ho usato la variabile di supporto Buysell ma mi sto incartando!!
    qualche idee in merito?

    mi pare ok, cos'è che non va ?

    se MedieCicliche dice RIALZO
    e non è già allertato il rialzo (if (BuySell !=+1))
    AllertoPerIlRialzo();
    BuySell =+1;

    quindi alla successiva interrogazione di
    if (MedieCicliche(Rastvor)==+1)
    essendo BuySell =+1
    non viene richiamata la funzione AllertoPerIlRialzo();

    Leave a comment:


  • texcs
    started a topic Problema per uscire da un ciclo

    Problema per uscire da un ciclo

    PHP Code:
    int MedieCicliche(double intRastvor)
     {
                
    // Per convenzione si usa
                // +1 = BUY
                //  0 = Tutto bene, ma non fa niente
                // -1 = SELL

       
    double  MediaVeloceDayBuffer[],  MediaLentaDayBuffer[],MediaVeloceDefaultBuffer[],MediaLentaDefaultBuffer[],
               
    ImaVeloceDefaultImaLentaDefaultImaVeloceDayImaLentaDay,  
               
    ImaVelocePrecDayImaVelocePrecDefault,ImaLentaPrecDayImaLentaPrecDefault;


                
    ImaVelocePrecDefault iMA(NULL,0MediaVelocePeriod 0001);//fuschia
                
    ImaLentaPrecDefault iMA(NULL,0MediaLentaPeriod 0001);//arancio

                
    ImaVeloceDefault iMA(NULL,0MediaVelocePeriod 0000);//fuschia
                
    ImaLentaDefault iMA(NULL,0MediaLentaPeriod 0100);//arancio
                
    pipsMAbuy = (int)MathFloorMathAbs(ImaVeloceDefault-ImaLentaDefault)/(_Point) );
                
    pipsMAsell = (int)MathFloorMathAbs(ImaVeloceDefault-ImaLentaDefault)/(_Point) );

                if (
    pipsMAbuy == intRastvor &&ImaVeloceDefault<ImaLentaDefault )//((ImaVelocePrecDefault < ImaLentaDefault) && (ImaVeloceDefault > ImaLentaDefault + intRastvor * Point))
                   
    {
                      
    buy++;
                      
    Comment("Buy " buy "\nPips"pipsMAbuy"\nRastvor" +  Rastvor);
                      return +
    1//Long

                   
    }


                  if ((
    pipsMAsell == intRastvor &&ImaVeloceDefault<ImaLentaDefault ))//((ImaVelocePrecDefault > ImaLentaDefault) && (ImaVeloceDefault < ImaLentaDefault + intRastvor * Point))
                    
    {
                      
    sell++;
                      
    Comment("Buy " buy "\nPips"+pipsMAsell"\nRastvor" +  Rastvor);
                      return -
    1//Short

                    
    }

           return 
    0;
      } 
    Ragazzi allora ho questa funzione che uso così:

    PHP Code:

             
    if (MedieCicliche(Rastvor)==+1)

             {
                if (
    BuySell !=+1){
                  
    //  Comment("Buy " + buy + pipsMAbuy+ "\nPips"+ "\nRastvor" +  Rastvor);
                    
    AllertoPerIlRialzo();
                    
    BuySell =+1;
                   }

             }
            else if(
    MedieCicliche(Rastvor)==-1)
             {
                if (
    BuySell !=-1)
                {
                
    //   Comment("\nSell " +sell+ "\nPips" +  pipsMAsell+ "\nRastvor" +  Rastvor);
                
    AllertoPerIlRibasso();
                
    BuySell =-1;
                }

           } 
    ora il mio problema è che vorrei farmi segnare solo una volta i segnali esempio: segnale buy dopo si attende un segnale sell e viceversa ma non doppio buy o doppio sell, ho usato la variabile di supporto Buysell ma mi sto incartando!!
    qualche idee in merito?

Working...
X