break- in

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
texcs
Messaggi: 130
Iscritto il: 29/05/2014, 23:08

Re: break- in

Messaggio da texcs » 29/04/2019, 14:31

ho provato il codice ma non funziona "disegna" ancora tutte le linee, cmq questa può essere una soluzione però questo può essere una soluzione per un indicatore, a me serve proprio che se non c'è la condizione non entri in quel ramo dell' if..........perciò ho aggiunto quelle variabili di controllo, idee?

Avatar utente
Dainesi
Messaggi: 401
Iscritto il: 12/05/2014, 12:10
Località: Castellanza (VA)

Re: break- in

Messaggio da Dainesi » 29/04/2019, 14:56

Con il codice che ti allego una linea verticale verrà disegnata solo se opposta all'ultima (ovvero dopo un break-down è possibile solo un break-up) evitando quindi di sottolineare con mille linee la tendenza in atto.

Codice: Seleziona tutto

static int iDir = 0;

void AllertoPerIlRialzo()
{
 ObjectDelete(ChartID(),IntegerToString(Time[0],0,0) + "S");
 if(ObjectFind(ChartID(),IntegerToString(Time[0],0,0) + "L")<0)
 {
   iDir = 1;
    ObjectCreate(ChartID(),IntegerToString(Time[0],0,0) + "L",OBJ_VLINE,0,Time[0],0);
    ObjectSetInteger(ChartID(),IntegerToString(Time[0],0,0) + "L",OBJPROP_COLOR,clrGreen);
    
    Print("Rottura sopra il massimo precedente Bid: " + DoubleToStr(Bid, Digits) + " Massimo precedente: " + DoubleToStr(High[1],Digits));     
 }
 
 }

void AllertoPerIlRibasso()
{
 ObjectDelete(ChartID(),IntegerToString(Time[0],0,0) + "L");
 if(ObjectFind(ChartID(),IntegerToString(Time[0],0,0) + "S")<0)
 {
   iDir = -1;
    ObjectCreate(ChartID(),IntegerToString(Time[0],0,0) + "S",OBJ_VLINE,0,Time[0],0);
    ObjectSetInteger(ChartID(),IntegerToString(Time[0],0,0) + "S",OBJPROP_COLOR,clrRed);

    Print("Rottura sotto il minimo precedente Bid: " + DoubleToStr(Bid, Digits) + " Minimo precedente: " + DoubleToStr(Low[1],Digits));     
 }
}
  
  void OnTick()
{
    if(Bid>High[1] && iDir!=-1)
      AllertoPerIlRibasso();
    if(Bid<Low[1] && iDir!=1)
      AllertoPerIlRialzo();
}
La variabile pubblica serve a questo: memorizzare la direzione dell'ultimo segnale ricevuto.

texcs
Messaggi: 130
Iscritto il: 29/05/2014, 23:08

Re: break- in

Messaggio da texcs » 29/04/2019, 15:09

ok, ti ringrazio ci lavoro e ti faccio sapere

texcs
Messaggi: 130
Iscritto il: 29/05/2014, 23:08

Re: break- in

Messaggio da texcs » 02/05/2019, 17:56

Cattura1.JPG

Buon pomeriggio stavo analizzando bene il programma e c'è qualcosa che non mi torna, allego un immagine con i segnali che secondo me sono sbagliati
1)Segnale buy per e non capisco perché( ho provato pure a invertire i segnali della funzione però dopo invertiti mi dà solo il segnale Sell(linea rossa)
2)A vista d'occhio non si vede nessuna condizione soddisfatta perché ha dato segnale Buy
3) Troppi segnali senza senso perché non è verificata nessuna condizione a vista d'occhio almeno
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
Dainesi
Messaggi: 401
Iscritto il: 12/05/2014, 12:10
Località: Castellanza (VA)

Re: break- in

Messaggio da Dainesi » 03/05/2019, 8:04

Sarà che ci vedo poco ma a me sembrano ok.
Magari occorrerebbe vedere meglio le ombre delle candele per valutare con più precisione (a occhio) il superamento dei min/max

texcs
Messaggi: 130
Iscritto il: 29/05/2014, 23:08

Re: break- in

Messaggio da texcs » 03/05/2019, 12:20

Buongiorno come da voi consigliatomi ho dato uno sguardo + approfondito alle candele e ne è uscito questo codice:

Codice: Seleziona tutto

// 1    candela verde       | ombra  superiore |             candle rossa          Ombra sup          condizione sell   
   if (((Close[2] > Open[2]) && (High[2] > Close [2]))&& ((Close[1] < Open[1]) && ((High[1]>Open[1])&& (High[1] > High[2])))) 
       AllertoPerIlRibasso();
       
           // 1 candela rossa   |Ombra inferiore |      | 2 candle verde |       condizione buy   
   if (((Close[2] < Open[2]) && (Low[2] < Close[2]))&& ((Close[1] > Open[1]) &&((Low[1]<Open[1]) && (Low[1] > Low[2])))) 
       AllertoPerIlRialzo();
Ps. ho provato a "spostare l'attenzione" sulle ultime due candele anzichè su quella in formazione però a volte da il segnale giusto a volte no, mi sapete dare una spiegazione? allego un immagine e SPUNTO CON UNA "V" i segnali giusti e CON UNA "X" quelli errati
Cattura2.JPG
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

texcs
Messaggi: 130
Iscritto il: 29/05/2014, 23:08

Re: break- in

Messaggio da texcs » 02/10/2019, 16:58

Codice: Seleziona tutto

bool NuovaCandela(){
  static datetime TempoUltimaCandela; 
  datetime TempoCandelaAttuale = Time[0]; 
  if (TempoCandelaAttuale != TempoUltimaCandela){
       TempoUltimaCandela = TempoCandelaAttuale;
       return (true); 
  }else{
       return (false); 
  }
}  
void OnTick()
{
   if(NuovaCandela()==true){
      if(Bid>High[1])
          AllertoPerIlRibasso();
      if(Bid<Low[1])
         AllertoPerIlRialzo();
      }
}
Salve ho studiato il codice e ho aggiunto una funzione “NuovaCandela” e ho isolato la variabile “iDir” perché a me serve che funzioni in questo modo:

Ogni volta che c’è una nuova candela….

Trend short
candela “x”= Open[2] < Close[2] (candela rossa)
candela “x+1”=( Open[1] < Close[1])(candela rossa) segnale(riga rossa a chiusura candela)
candela “x+2”=( Open[…] < Close[…])(candela rossa) segnale(riga rossa a chiusura candela)
candela “x+…n”=( Open[…] < Close[…])(candela rossa) segnale(riga rossa a chiusura candela)

Trend long
candela “x”= Open[2] > Close[2] (candela verde)
candela “x+1”=( Open[1] < Close[1])(candela verde) segnale(riga verde a chiusura candela)
candela “x+2”=( Open[…] < Close[…])(candela verde) segnale(riga verde a chiusura candela)
candela “x+…n”=( Open[…] < Close[…])(candela verde) segnale(riga verde a chiusura candela)

in pratica un indicatore trend follow che segue il trend

Chi c’è in linea

Visitano il forum: CC [Bot] e 0 ospiti