Back to the index page  
  FAQ   Cerca   Lista utenti   Gruppi   Registrati   Profilo   Messaggi privati   Log in 
[TESTARE]Alert su media mobile e SAR................
Vai a 1, 2  Successivo
 
Nuovo argomento   Rispondi    Indice del forum » Metatrader - Expert Advisor - MQL Precedente :: Successivo  
Ads
 Inviato: Gio Ott 19, 2017 10:38 am  
Messaggio
  Ads




[TESTARE]Alert su media mobile e SAR................
 MessaggioInviato: Ven Gen 30, 2009 6:54 pm Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

Ciao a tutti, visto che non sono riuscito a trovare nulla di decente in giro, ho deciso di farmi un indicatore che mi invia un alert quando si verificano alcune condizioni che mi interessano.
Per il momento invia l'alert solo sul cambio di direzione della Parabolic SAR e sull'incrocio di due medie mobili ma devo aggiungere anche altri alert.
Se a qualcuno serve e lo vuole testare lo allego a questa discussione.
Tenete presente che questo indicatore ho iniziato a scriverlo oggi pomeriggio e quindi sicuramente avrà dei bug da eliminare, quindi, mi farebbe piacere sentire i vostri feedback in merito con consigli e relative critiche (costruttive Smile)
Grazie.
Ciao.

XJX_Alert.mq4:
Codice:

//+------------------------------------------------------------------+
//| XJX_Alert.mq4.mq4
//| XJX_Alert - Allarme su incrocio medie mobili ed altri indicatori by StefanoXJX Ver. 0.1b 30-01-09
//| http://www.metaquotes.net
//+------------------------------------------------------------------+
#property copyright "XMA_Alert - Allarme su incrocio medie mobili by StefanoXJX Ver. 0.1b 30-01-09 "
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property  indicator_buffers 0

#include <stdlib.mqh>

#define        UP    100
#define        DOWN  200

extern int     ShiftY         = -20;
extern int     ShiftX         = 0;
extern int     window         = 0;
extern color   PriceColor     = DodgerBlue;
extern color   SpreadColor    = Gold;
extern color   SymbolColor    = Gainsboro;
// Parametri per Parabolic SAR
extern string  HelpSAR        = "*** CheckSar 0=Disabilitata 1=Abilitata / TimeFramePSAR 0=Default";
extern bool    CheckSAR       = true;
extern int     TimeFramePSAR  = 0;
// Parametri per incrocio Medie Mobili
extern string  HelpMACross    = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMACross1   = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMACross2   = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MACross        = true;
extern int     SlowMAPeriod   = 13;
extern int     SlowMAMethod   = 0;   
extern int     SlowApplPrice  = 4;
extern int     FastMAPeriod   = 6;
extern int     FastMAMethod   = 1; 
extern int     FastApplPrice  = 4;
extern int     MATimeFrame    = 0;

// ---

int            Alignment        = 1;  //0=Parte sinistra del grafico, 1=Parte destra del grafico

//+------------------------------------------------------------------+
//     expert initialization function                                |       
//+------------------------------------------------------------------+
int init()
{
   return(0);                                                             
}
//+------------------------------------------------------------------+
//     expert deinitialization function                              |       
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll(0,OBJ_LABEL);
   Print("Errore in fase di De Inizializzazione - ",ErrorDescription(GetLastError()));
   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   static   int   LastPSAR, LastMACross;
   int      Spread, TextHeight, TextHeight1;
   double   TF, T1, T2, x, y, y1, nDigit, pnt, PSAR, MASlow, MAFast;
   string   MTF, Font="", Text="";
   bool     Right_Top = true;
   color    SignalColor;
         
     
   x=10; y=60; y1=10;
   if((Digits==5) || (Digits==3)) nDigit=Digits-1; else nDigit=Digits;
   if((Point==0.001) || (Point==0.00001)) pnt=Point*10; else pnt=Point;

   // Scrive il prezzo attuale (Bid)
   Text=DoubleToStr(Bid,(nDigit));
   Font="Arial Black"; TextHeight=19; TextHeight1=8; 
   Write("LBL_PRICE", Right_Top, ShiftX+x, ShiftY+y+(y1*0)-18, Text, TextHeight, Font, PriceColor);
   // ---------

   // Scrive il simbolo e il timeframe 
   TF=Period();
   if (TF==PERIOD_M1) { MTF="M1"; }
   else if (TF==PERIOD_M5){ MTF="M5"; }
   else if (TF==PERIOD_M15){ MTF="M15"; }
   else if (TF==PERIOD_M30){ MTF="M30"; }
   else if (TF==PERIOD_H1){ MTF="H1"; }
   else if (TF==PERIOD_H4){ MTF="H4"; }
   else if (TF==PERIOD_D1){ MTF="D1"; }
   else if (TF==PERIOD_MN1){ MTF="MN1"; }
   else { MTF="-"; }

   Write("LBL_SYMBOL_VAL", Right_Top, ShiftX+x, ShiftY+y+(y1*0)-30, Symbol()+" "+MTF, 11, Font, SymbolColor);
   // ---------
   
   // Scrive lo spread
   Text = (DoubleToStr((Ask-Bid)/pnt,1));
   Write("LBL_SPREAD_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+5, Text, TextHeight1, Font, SpreadColor);
   Write("LBL_SPREAD_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+5, "Spread : " , TextHeight1, Font, SpreadColor);


   // Verifica il cambio posizione della Parabolic SAR
   if (CheckSAR == true)
   {
      Write("LBL_SAR_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+20, "Parabolic SAR : " , TextHeight1, Font, Khaki);
      Write("LBL_SAR_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+20, "Si", TextHeight1, Font, Lime);

      PSAR  =  iSAR( Symbol(), TimeFramePSAR,0.02,0.2,0);
   
      if (PSAR >= iHigh(Symbol(),TimeFramePSAR,0) && LastPSAR != UP)
      {
         LastPSAR=UP;
         Alert(Symbol()," ",MTF," - Parabolic SAR UP!!!");
      }     
   
      if (PSAR <= iLow(Symbol(),TimeFramePSAR,0) && LastPSAR != DOWN)
      {
         LastPSAR=DOWN;
         Alert(Symbol()," ",MTF," - Parabolic SAR DOWN!!!");
      }           
   }
   else
   {
      Write("LBL_SAR_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+20, "Parabolic SAR : " , TextHeight1, Font, Khaki);
      Write("LBL_SAR_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+20, "NO", TextHeight1, Font, Red);
   }     
   
   // Verifica l'incrocio delle medie mobili
   if (MACross == true)
   {
      Write("LBL_MACROSS_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+35, "MA Cross : " , TextHeight1, Font, Khaki);
      Write("LBL_MACROSS_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+35, "Si", TextHeight1, Font, Lime);
   
      MASlow = iMA(Symbol(), MATimeFrame, SlowMAPeriod, 0, SlowMAMethod, SlowApplPrice,0);
      MAFast = iMA(Symbol(), MATimeFrame, FastMAPeriod, 0, FastMAMethod, FastApplPrice,0);
     
      if (MAFast > MASlow && LastMACross != UP)
      {
         LastMACross=UP;
         Alert(Symbol()," ",MTF," - Incrocio media mobile verso alto!!!");
      }     
   
      if (MAFast < MASlow && LastMACross != DOWN)
      {
         LastMACross=DOWN;
         Alert(Symbol()," ",MTF," - Incrocio media mobile verso il basso!!!");
      }           
   }
   else
   {
      Write("LBL_MACROSS_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+35, "MA Cross : " , TextHeight1, Font, Khaki);
      Write("LBL_MACROSS_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+35, "NO", TextHeight1, Font, Red);
   }     
   
   
   return(0);
   // --------
}


//+------------------------------------------------------------------+
// Routine per scrittura a video
//+------------------------------------------------------------------+   
void Write(string Label, double side, int pos_x, int pos_y, string text, int fontsize, string fontname, color Tcolor=CLR_NONE, int angle=0)
{
   ObjectCreate(Label, OBJ_LABEL, window, 0, 0);
   ObjectSetText(Label,text, fontsize, fontname, Tcolor);
   ObjectSet(Label, OBJPROP_CORNER, Alignment);
   ObjectSet(Label, OBJPROP_XDISTANCE, pos_x);
   ObjectSet(Label, OBJPROP_YDISTANCE, pos_y);
   ObjectSetText("signal",CharToStr(164),60,"Wingdings",Gold);
}
Profilo Invia messaggio privato
 MessaggioInviato: Ven Gen 30, 2009 11:48 pm Rispondi citando  
Messaggio
  Anacidol
Trader part-time
Trader part-time

Registrato: 23/11/08 01:21
Messaggi: 143
Residenza: Bergamo

Molto utile. Grazie

Mi sembra che non si riesce a regolare la Sar, o sbaglio?
Io, di solito la uso un pò meno appicicata...

Ciao
Profilo Invia messaggio privato
 MessaggioInviato: Ven Gen 30, 2009 11:58 pm Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

Anacidol ha scritto:
Molto utile. Grazie

Mi sembra che non si riesce a regolare la Sar, o sbaglio?
Io, di solito la uso un pò meno appicicata...

Ciao


Infatti, ho pensato dopo che forse era il caso di personalizzare anche quella.
Appena ho un secondo faccio la modifica.
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 12:10 am Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

Posto l'ultima versione con aggiunta di altri due indicatori e modifica per poter settare i parametri della SAR:

Codice:

//+------------------------------------------------------------------+
//| XJX_Alert.mq4.mq4
//| XJX_Alert - Allarme su incrocio medie mobili ed altri indicatori by StefanoXJX Ver. 0.4b 30-01-09
//| http://www.metaquotes.net
//+------------------------------------------------------------------+
#property copyright "XMA_Alert - Allarme su incrocio medie mobili by StefanoXJX Ver. 0.1b 30-01-09 "
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property  indicator_buffers 0

#include <stdlib.mqh>

#define        UP    100
#define        DOWN  200

extern int     ShiftY         = -20;
extern int     ShiftX         = 0;
extern int     window         = 0;
extern color   PriceColor     = DodgerBlue;
extern color   SpreadColor    = Gold;
extern color   SymbolColor    = Gainsboro;
// Parametri per Parabolic SAR
extern string  HelpSAR        = "*** CheckSar 0=Disabilitata 1=Abilitata / TimeFramePSAR 0=Default";
extern bool    CheckSAR       = true;
extern int     TimeFramePSAR  = 0;
extern double  PSARPitch      = 0.02;
extern double  PSARMax        = 0.2;
// Parametri per incrocio Medie Mobili
extern string  HelpMACross    = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMACross1   = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMACross2   = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MACross        = true;
extern int     SlowMAPeriod   = 13;
extern int     SlowMAMethod   = 0;   
extern int     SlowApplPrice  = 4;
extern int     FastMAPeriod   = 6;
extern int     FastMAMethod   = 1; 
extern int     FastApplPrice  = 4;
extern int     MATimeFrame    = 0;
// Parametri per superamento singola media mobile
extern string  HelpMABreak    = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMABreak1   = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMABreak2   = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MABreak        = true;
extern int     MAPeriod       = 144;
extern int     MAMethod       = 1;
extern int     MAPrice        = 4;
extern int     MABreakTimeFrame = 0;
// Parametri per superamento binario
extern string  HelpMABinario   = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMABinario1  = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMABinario2  = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MABinario       = true;
extern int     MABinarioPeriod = 144;
extern int     MABinarioMethod = 1;   
extern int     MABinarioHigh   = 2;
extern int     MABinarioLow    = 3;
extern int     MABinarioTimeFrame     = 60; // Il binario funziona con TimeFrame a 60 minuti



int            Alignment        = 1;  //0=Parte sinistra del grafico, 1=Parte destra del grafico

//+------------------------------------------------------------------+
//     expert initialization function                                |       
//+------------------------------------------------------------------+
int init()
{
   return(0);                                                             
}
//+------------------------------------------------------------------+
//     expert deinitialization function                              |       
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll(0,OBJ_LABEL);
   Print("Errore in fase di De Inizializzazione - ",ErrorDescription(GetLastError()));
   return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   static   int   LastPSAR, LastMACross, LastMABreak, LastBinarioBreak;
   int      Spread, TextHeight, TextHeight1;
   double   TF, T1, T2, x, y, y1, nDigit, pnt, PSAR, MASlow, MAFast, EMAH, EMAL;
   string   MTF, Font="", Text="";
   bool     Right_Top = true;
   color    SignalColor;
         
     
   x=10; y=60; y1=10;
   if((Digits==5) || (Digits==3)) nDigit=Digits-1; else nDigit=Digits;
   if((Point==0.001) || (Point==0.00001)) pnt=Point*10; else pnt=Point;

   // Scrive il prezzo attuale (Bid)
   Text=DoubleToStr(Bid,(nDigit));
   Font="Arial Black"; TextHeight=19; TextHeight1=8; 
   Write("LBL_PRICE", Right_Top, ShiftX+x, ShiftY+y+(y1*0)-18, Text, TextHeight, Font, PriceColor);
   // ---------

   // Scrive il simbolo e il timeframe 
   TF=Period();
   if (TF==PERIOD_M1) { MTF="M1"; }
   else if (TF==PERIOD_M5){ MTF="M5"; }
   else if (TF==PERIOD_M15){ MTF="M15"; }
   else if (TF==PERIOD_M30){ MTF="M30"; }
   else if (TF==PERIOD_H1){ MTF="H1"; }
   else if (TF==PERIOD_H4){ MTF="H4"; }
   else if (TF==PERIOD_D1){ MTF="D1"; }
   else if (TF==PERIOD_MN1){ MTF="MN1"; }
   else { MTF="-"; }

   Write("LBL_SYMBOL_VAL", Right_Top, ShiftX+x, ShiftY+y+(y1*0)-30, Symbol()+" "+MTF, 11, Font, SymbolColor);
   // ---------
   
   // Scrive lo spread
   Text = (DoubleToStr((Ask-Bid)/pnt,1));
   Write("LBL_SPREAD_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+5, Text, TextHeight1, Font, SpreadColor);
   Write("LBL_SPREAD_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+5, "Spread : " , TextHeight1, Font, SpreadColor);


   // Verifica il cambio posizione della Parabolic SAR
   if (CheckSAR == true)
   {
      Write("LBL_SAR_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+20, "Parabolic SAR : " , TextHeight1, Font, Khaki);
      Write("LBL_SAR_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+20, "Si", TextHeight1, Font, Lime);

      PSAR  =  iSAR( Symbol(), TimeFramePSAR,PSARPitch,PSARMax,0);
   
      if (PSAR >= iHigh(Symbol(),TimeFramePSAR,0) && LastPSAR != UP)
      {
         LastPSAR=UP;
         Alert(Symbol()," ",MTF," - Parabolic SAR UP!!!");
      }     
   
      if (PSAR <= iLow(Symbol(),TimeFramePSAR,0) && LastPSAR != DOWN)
      {
         LastPSAR=DOWN;
         Alert(Symbol()," ",MTF," - Parabolic SAR DOWN!!!");
      }           
   }
   else
   {
      Write("LBL_SAR_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+20, "Parabolic SAR : " , TextHeight1, Font, Khaki);
      Write("LBL_SAR_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+20, "NO", TextHeight1, Font, Red);
   }     
   
   // Verifica l'incrocio delle medie mobili
   if (MACross == true)
   {
      Write("LBL_MACROSS_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+35, "MA Cross : " , TextHeight1, Font, Khaki);
      Write("LBL_MACROSS_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+35, "Si", TextHeight1, Font, Lime);
   
      MASlow = iMA(Symbol(), MATimeFrame, SlowMAPeriod, 0, SlowMAMethod, SlowApplPrice,0);
      MAFast = iMA(Symbol(), MATimeFrame, FastMAPeriod, 0, FastMAMethod, FastApplPrice,0);
     
      if (MAFast > MASlow && LastMACross != UP)
      {
         LastMACross=UP;
         Alert(Symbol()," ",MTF," - Incrocio media mobile verso alto!!!");
      }     
   
      if (MAFast < MASlow && LastMACross != DOWN)
      {
         LastMACross=DOWN;
         Alert(Symbol()," ",MTF," - Incrocio media mobile verso il basso!!!");
      }           
   }
   else
   {
      Write("LBL_MACROSS_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+35, "MA Cross : " , TextHeight1, Font, Khaki);
      Write("LBL_MACROSS_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+35, "NO", TextHeight1, Font, Red);
   }     
   
   // Verifica rottura singola media mobile
   if (MABreak == true)
   {
      Write("LBL_MABREAK_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+50, "MA Break : " , TextHeight1, Font, Khaki);
      Write("LBL_MABREAK_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+50, "Si", TextHeight1, Font, Lime);
   
      MAFast = iMA(Symbol(), MATimeFrame, MAPeriod, 0, MAMethod, MAPrice,0);
     
      if (Bid > MAFast && LastMABreak != UP)
      {
         LastMABreak=UP;
         Alert(Symbol()," ",MTF," - Superamento media mobile alto!!!");
      }     
   
      if (Bid < MAFast && LastMABreak != DOWN)
      {
         LastMABreak=DOWN;
         Alert(Symbol()," ",MTF," - Superamento media mobile verso il basso!!!");
      }           
   }
   else
   {
      Write("LBL_MABREAK_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+50, "MA Break : " , TextHeight1, Font, Khaki);
      Write("LBL_MABREAK_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+50, "NO", TextHeight1, Font, Red);
   }     

   // Verifica il superamento del binario
   if (MABinario == true)
   {
      Write("LBL_BINARIO_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+65, "Binario : " , TextHeight1, Font, Khaki);
      Write("LBL_BINARIO_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+65, "Si", TextHeight1, Font, Lime);

      EMAH=iMA(Symbol(), MABinarioTimeFrame, MABinarioPeriod, 0, MABinarioMethod, MABinarioHigh , 0);
      EMAL=iMA(Symbol(), MABinarioTimeFrame, MABinarioPeriod, 0, MABinarioMethod, MABinarioLow , 0);

 
     
      if (Bid > EMAH && LastBinarioBreak != UP)
      {
         LastBinarioBreak=UP;
         Alert(Symbol()," ",MTF," - Superamento BINARIO verso alto!!!");
      }     
   
      if (Bid < EMAL && LastBinarioBreak != DOWN)
      {
         LastBinarioBreak=DOWN;
         Alert(Symbol()," ",MTF," - Superamento BINARIO Verso basso!!!");
      }           
   }
   else
   {
      Write("LBL_BIMARIO_DESC",Right_Top, ShiftX+x+40, ShiftY+y+(y1*1)+65, "Binario : " , TextHeight1, Font, Khaki);
      Write("LBL_BINARIO_VAL", Right_Top, ShiftX+x+3, ShiftY+y+(y1*1)+65, "NO", TextHeight1, Font, Red);
   }     
   return(0);
   // --------
}


//+------------------------------------------------------------------+
// Routine per scrittura a video
//+------------------------------------------------------------------+   
void Write(string Label, double side, int pos_x, int pos_y, string text, int fontsize, string fontname, color Tcolor=CLR_NONE, int angle=0)
{
   ObjectCreate(Label, OBJ_LABEL, window, 0, 0);
   ObjectSetText(Label,text, fontsize, fontname, Tcolor);
   ObjectSet(Label, OBJPROP_CORNER, Alignment);
   ObjectSet(Label, OBJPROP_XDISTANCE, pos_x);
   ObjectSet(Label, OBJPROP_YDISTANCE, pos_y);
   ObjectSetText("signal",CharToStr(164),60,"Wingdings",Gold);
}


Andate miei segugi, trovate tutti i BUG Very Happy
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 3:11 pm Rispondi citando  
Messaggio
  Anacidol
Trader part-time
Trader part-time

Registrato: 23/11/08 01:21
Messaggi: 143
Residenza: Bergamo

Ottimo!

Potresti spiegare brevemente il concetto di "binario"?

sarebbe possibile avere la rappresentazione anche sul grafico? magari attivabile/disattivabile dal panello delle variabili.

Grazie per il lavoro davvero utile Wink
Io do retta moltissimo alla combinazione Sar-MA
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 4:15 pm Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

Anacidol ha scritto:
Ottimo!

Potresti spiegare brevemente il concetto di "binario"?


Il binario, funziona allo stesso modo della singola media, solo che sono due medie mobili (di solito EMA 144) piazzate rispettivamente sul prezzo HIGH e LOW.
Il concetto è lo stesso della singola media, si apre quando il prezzo ha superato di almeno 20 pips una delle medie (uscendo dal binario) oppure quando la nuova candela ha aperta fuori dal binario.
Il sistema lavora in H1 e sono opportunità che non si presentano molto spesso, però quando entri in posizione puoi stare dentro anche per giorni e i Gain sono assicurati e cospicui Smile
L'unica cosa che devo ancora scoprire è il momento adatto per uscire.
Generalmente, quando la media ha superato il punto di ingresso, inizio a spostare lo stop loss sulla media e si può tranquillamente (dopo qualche giorno) arrivare a guadagnare sui 400 pips, solo che se guardi le punte massime che fanno le candele, si vede che si potrebbe uscire tranquillamente con 500-600 pips (devo imparare ad accontentarmi Smile).

Citazione:

sarebbe possibile avere la rappresentazione anche sul grafico? magari attivabile/disattivabile dal panello delle variabili.

Questa cosa non so come farla, di solito mi inserisco manualmente gli indicatori che mi servono.
Comunque, l'idea non è male e quindi studierò un pochino per capire come implementare queste opzioni.

Citazione:

Grazie per il lavoro davvero utile Wink
Io do retta moltissimo alla combinazione Sar-MA

Ti ringrazio.
Alla fine ho deciso di costruirmi un attrezzo simile perchè quando si lavora con TF orari, è difficile tenere tutto sotto controllo e mi scappa sempre qualcosa.
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 4:36 pm Rispondi citando  
Messaggio
  AntonioS
Trader part-time
Trader part-time

Registrato: 05/12/08 04:22
Messaggi: 149

Anacidol ha scritto:
Molto utile. Grazie

Mi sembra che non si riesce a regolare la Sar, o sbaglio?
Io, di solito la uso un pò meno appicicata...

Ciao

Che vuol dire che non riesce a regolare la sar? Io sto usando la prima versione e sembra andare benissimo, davvero ben fatta.

Cos'ha in più la seconda?

Ciao
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 4:49 pm Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

AntonioS ha scritto:
Anacidol ha scritto:
Molto utile. Grazie

Mi sembra che non si riesce a regolare la Sar, o sbaglio?
Io, di solito la uso un pò meno appicicata...

Ciao

Che vuol dire che non riesce a regolare la sar? Io sto usando la prima versione e sembra andare benissimo, davvero ben fatta.

Cos'ha in più la seconda?

Ciao


La prima versione funzionava solo con i parametri di default della SAR, invece la seconda ti permette di personalizzarli.
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 7:04 pm Rispondi citando  
Messaggio
  Anacidol
Trader part-time
Trader part-time

Registrato: 23/11/08 01:21
Messaggi: 143
Residenza: Bergamo

Binario:

Avevo sperimentato questa tecnica mesi fa, quando lessi il libro di Joe Ross che, se ben ricordo, la chiamava Camelback. Pero si basava su medie a 40 periodi. Per le entrate si procede come per la tua tecnica. Però c'è in più una media a 10 periodi che in pratica ci dice, se orizontale, di rimanere flat. Naturalmente, si consiglia di usare timeframe più bassi dei tuoi, sui 5-15m
La resa non è male, però certamente non ai livelli tuoi. Normalmente si va sui 15-30 pips alla volta. Il vantaggio è che le opportunità si presentano più frequentemente, di solito due o tre volte al giorno abbastanza sicure, alcune di più se si è più temerario.

Mi incuriosice la tua tecnica a 144, la settimana prossima la metto alla prova Wink
Profilo Invia messaggio privato
 MessaggioInviato: Sab Gen 31, 2009 7:11 pm Rispondi citando  
Messaggio
  stefanoxjx
Professore
Professore

Registrato: 08/11/08 01:51
Messaggi: 1173
Residenza: Provincia di Padova

Anacidol ha scritto:
Binario:

Avevo sperimentato questa tecnica mesi fa, quando lessi il libro di Joe Ross che, se ben ricordo, la chiamava Camelback. Pero si basava su medie a 40 periodi. Per le entrate si procede come per la tua tecnica. Però c'è in più una media a 10 periodi che in pratica ci dice, se orizontale, di rimanere flat. Naturalmente, si consiglia di usare timeframe più bassi dei tuoi, sui 5-15m
La resa non è male, però certamente non ai livelli tuoi. Normalmente si va sui 15-30 pips alla volta. Il vantaggio è che le opportunità si presentano più frequentemente, di solito due o tre volte al giorno abbastanza sicure, alcune di più se si è più temerario.

Mi incuriosice la tua tecnica a 144, la settimana prossima la metto alla prova Wink


Per vedere come gira il binario a 144, prova a mettere le due medie mobili in un grafico qualsiasi (che sia discretamente stabile, tipo EURUSD) e vai indietro nel tempo.
Vedrai che quando viene passato il binario, prima di toccarlo ancora passano giorni e nel frattempo si possono fare guadagni molto grossi.
Anche questo sistema comporta qualche falso segnale, però sono veramente molto pochi Smile
Profilo Invia messaggio privato
 MessaggioInviato: Dom Feb 01, 2009 3:26 pm Rispondi citando  
Messaggio
  Anacidol
Trader part-time
Trader part-time

Registrato: 23/11/08 01:21
Messaggi: 143
Residenza: Bergamo

Citazione:
Per vedere come gira il binario a 144, prova a mettere le due medie mobili in un grafico qualsiasi (che sia discretamente stabile, tipo EURUSD) e vai indietro nel tempo.
Vedrai che quando viene passato il binario, prima di toccarlo ancora passano giorni e nel frattempo si possono fare guadagni molto grossi.
Anche questo sistema comporta qualche falso segnale, però sono veramente molto pochi


Grazie per il suggerimento, non mancherò di provare Wink

Per curiosità mi sono andato a vedere alcuni sorgenti in mq4 dove riescono a far vedere nel grafico l'elaborazione degli scripts. Premetto che sono super-newbie in fatto di mq4. Però questa cosa mi intriga parecchio e siccome sono convinto che si impara solo se ci si butta. E allora ho deciso di provareci, risultato: ho fatto un gran copia incolla (per iniziare va bene anche così). Penso di essere arrivato a buon punto, però come era naturale suporre mi sono inevitabilemente impiantato Sad
In pratica mi mancherebbe un'istruzione FOR per riuscire a collegare le mie variabili alle tue e far funzionare il tutto.
Ti posto il mio pezzo di codice :
Codice:
//+------------------------------------------------------------------+
//| XJX_Alert.mq4.mq4
//| XJX_Alert - Allarme su incrocio medie mobili ed altri indicatori by StefanoXJX Ver. 0.4b 30-01-09
//| http://www.metaquotes.net
//+------------------------------------------------------------------+
#property copyright "XMA_Alert - Allarme su incrocio medie mobili by StefanoXJX Ver. 0.4b 30-01-09 "
#property link      "http://forex.forumup.it/viewtopic.php?t=2371&mforum=forex"

#property indicator_chart_window
#property  indicator_buffers 5 // originale 0
// ----------- Inzio modifica Anacidol -----------------
#property  indicator_color1  Lime
#property  indicator_color2  Red
#property  indicator_color3  Yellow
#property  indicator_color4  DeepSkyBlue
#property  indicator_color5  Blue
// ---------- Fine modifica Anacidol ------------------

#include <stdlib.mqh>

#define        UP    100
#define        DOWN  200

extern int     ShiftY         = -20;
extern int     ShiftX         = 0;
extern int     window         = 0;
extern color   PriceColor     = DodgerBlue;
extern color   SpreadColor    = Gold;
extern color   SymbolColor    = Gainsboro;
// Parametri per Parabolic SAR
extern string  HelpSAR        = "*** CheckSar 0=Disabilitata 1=Abilitata / TimeFramePSAR 0=Default";
extern bool    CheckSAR       = true;
extern int     TimeFramePSAR  = 0;
extern double  PSARPitch      = 0.02;
extern double  PSARMax        = 0.2;
// Parametri per incrocio Medie Mobili
extern string  HelpMACross    = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMACross1   = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMACross2   = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MACross        = true;
extern int     SlowMAPeriod   = 13;
extern int     SlowMAMethod   = 0;   
extern int     SlowApplPrice  = 4;
extern int     FastMAPeriod   = 6;
extern int     FastMAMethod   = 1; 
extern int     FastApplPrice  = 4;
extern int     MATimeFrame    = 0;
// Parametri per superamento singola media mobile
extern string  HelpMABreak    = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMABreak1   = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMABreak2   = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MABreak        = true;
extern int     MAPeriod       = 144;
extern int     MAMethod       = 1;
extern int     MAPrice        = 4;
extern int     MABreakTimeFrame = 0;
// Parametri per superamento binario
extern string  HelpMABinario   = "*** MACross 0=Disabilitata 1=Abilitata / TimeFrame 0=Default";
extern string  HelpMABinario1  = "*** Method: 0=SMA 1=EMA 2=SNMA 3=LWMA";
extern string  HelpMABinario2  = "*** AppliedPrice: 0=CLOSE 1=OPEN 2=HIGH 3=LOW 4=MEDIAN 5=TYPICAL 6=WEIGHTED CLOSE";
extern bool    MABinario       = true;
extern int     MABinarioPeriod = 144;
extern int     MABinarioMethod = 1;   
extern int     MABinarioHigh   = 2;
extern int     MABinarioLow    = 3;
extern int     MABinarioTimeFrame     = 60; // Il binario funziona con TimeFrame a 60 minuti

int            Alignment        = 1;  //0=Parte sinistra del grafico, 1=Parte destra del grafico

// ----------- Inzio modifica Anacidol -----------------
//---- indicator parameters - Visibili si/no
extern bool hide_g_slowma  = False;
extern bool hide_g_fastma = False;
extern bool hide_g_sar   = False;
extern bool hide_binaryhigh  = False;
extern bool hide_binarylow  = False;

//---- indicator buffers
double g_slowma[];          // buffer Media Mobile Lenta
double g_fastma[];          // buffer Media Mobile Veloce
double g_sar[];             // buffer Parabolic SAR
double g_binaryhigh[];      // buffer Media Mobile High del Binario
double g_binarylow[];       // buffer Media Mobile High del Binario
// ---------- Fine modifica Anacidol ------------------

//+------------------------------------------------------------------+
//     expert initialization function                                |       
//+------------------------------------------------------------------+
int init()
{
// ----------- Inzio modifica Anacidol -----------------
   //---- indicator buffers mapping
   IndicatorBuffers(5); // numero buffer attivati
   if (   !SetIndexBuffer(0,g_slowma)
       && !SetIndexBuffer(1,g_fastma)
       && !SetIndexBuffer(2,g_sar)
       && !SetIndexBuffer(3,g_binaryhigh)
       && !SetIndexBuffer(4,g_binarylow)
    // && !SetIndexBuffer(5,)
    // && !SetIndexBuffer(6,)
    // && !SetIndexBuffer(7,)
      ) { Print("cannot set indicator buffers!"); return(-1); }

   //---- Nomi Label
   IndicatorShortName("XJX_Alert");
   SetIndexLabel(0,"Media1");
   SetIndexLabel(1,"Media2");
   SetIndexLabel(2,"SAR");
   SetIndexLabel(3,"BinarioH");
   SetIndexLabel(4,"BinarioL");

   //---- Style
   SetIndexStyle(0, DRAW_LINE+hide_g_slowma*DRAW_NONE, STYLE_SOLID, 1, indicator_color1);
   SetIndexStyle(1, DRAW_LINE+hide_g_fastma*DRAW_NONE, STYLE_SOLID, 1, indicator_color2);
   SetIndexStyle(2, DRAW_LINE+hide_g_sar*DRAW_NONE, STYLE_SOLID, 1, indicator_color3);
   SetIndexStyle(3, DRAW_LINE+hide_binaryhigh*DRAW_NONE, STYLE_SOLID, 1, indicator_color4);
   SetIndexStyle(4, DRAW_LINE+hide_binarylow*DRAW_NONE, STYLE_SOLID, 1, indicator_color5);

   //----
/*
   SetIndexDrawBegin(0,Smooth);
   SetIndexDrawBegin(1,Smooth);
   SetIndexDrawBegin(2,Smooth);
   SetIndexDrawBegin(3,2*Smooth);
   SetIndexDrawBegin(4,3*Smooth);
*/
// ---------- Fine modifica Anacidol ------------------

   return(0);

}


Sono andato nella direzione giusta o ho scritto ca...te?
Profilo Invia messaggio privato
 MessaggioInviato: Mer Ago 26, 2015 9:45 pm Rispondi citando  
Messaggio
  ciglie
New Entry
New Entry

Registrato: 26/08/15 19:33
Messaggi: 4
Residenza: toscana

Scusate, mi sono appena iscritto e ho trovato questa discussione che mi interessa, solo che essendo a 0 in fatto di programmazione non so come si fa a far girare il codice mql4 sulla mt4. La procedura di come trasformare un file mql4 in ex4 tramite metaeditor la conosco, ma a partire dal codice non so come si fa. Grazie.
Profilo Invia messaggio privato
 MessaggioInviato: Gio Ago 27, 2015 10:17 am Rispondi citando  
Messaggio
  carlo10
Site Admin
Site Admin

Registrato: 29/04/06 16:19
Messaggi: 5575
Residenza: Padova

Apri il metaeditor e sul menu trovi la voce nuovo e poi segui la procedura guidata selezionando expert advisor e dando un nome al file. Una volta terminato avrai una pagina con poco codice che andrai a sostituire completamente con il codice che ti interessa. A quel punto salvi e compili.

L'alternativa è creare un file di testo (un semplice .txt) modificando l'estensione.

Ti avviso comunque che ci siamo trasferiti qui:
Solamente gli utenti registrati possono vedere link su questo forum!
Registrati oppure Autenticati su questo forum.


_________________
remitur ha scritto:
Mi rammento di quando studiavo azionario e futures, allora si usava una metafora, ma secondo mè è una gran verità, nel Klondike al tempo dei cercatori d'oro guadagnavano di più e sopratutto in maniera costante i venditori di pale, setacci e attrezzi vari (Ross e libri vari) che i cercatori; tranne qualcuno. chissà quale era la percentuale ?
Profilo Invia messaggio privato Invia e-mail HomePage
 MessaggioInviato: Gio Ago 27, 2015 12:56 pm Rispondi citando  
Messaggio
  ciglie
New Entry
New Entry

Registrato: 26/08/15 19:33
Messaggi: 4
Residenza: toscana

Grazie per la risposta e per l'informazione sul trasferimento, ora è tutto ok e questo forum è davvero interessante. Fra l'altro mi sono accorto ora che cliccando con il tasto dx del mouse sul desktop e scegliendo "nuovo", mi fa creare direttamente il file mql4 aprendomi metaeditor.
Profilo Invia messaggio privato
 MessaggioInviato: Ven Ago 28, 2015 9:22 am Rispondi citando  
Messaggio
  carlo10
Site Admin
Site Admin

Registrato: 29/04/06 16:19
Messaggi: 5575
Residenza: Padova

Grazie, ti consiglio però di registrarti ed iniziare a partecipare sul nuovo forum perchè questo non è più utilizzato.

Solamente gli utenti registrati possono vedere link su questo forum!
Registrati oppure Autenticati su questo forum.


_________________
remitur ha scritto:
Mi rammento di quando studiavo azionario e futures, allora si usava una metafora, ma secondo mè è una gran verità, nel Klondike al tempo dei cercatori d'oro guadagnavano di più e sopratutto in maniera costante i venditori di pale, setacci e attrezzi vari (Ross e libri vari) che i cercatori; tranne qualcuno. chissà quale era la percentuale ?
Profilo Invia messaggio privato Invia e-mail HomePage
Nuovo argomento   Rispondi    Indice del forum » Metatrader - Expert Advisor - MQL

Pagina 1 di 2
Tutti i fusi orari sono GMT + 2 ore
Vai a 1, 2  Successivo

Mostra prima i messaggi di:

  

Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
c d
e

CI SIAMO TRASFERITI QUI: http://forum.forexup.biz





Powered by phpBB © 2001, 2002 phpBB Group phpbb.it
Macinscott 2 by Scott Stubblefield


Abuse - Segnalazione abuso - Utilizzando questo sito si accettano le norme di TOS & Privacy.
Powered by forumup.it forum gratis free, crea il tuo forum gratis free ora! Created by Hyarbor & Qooqoa
Confirmed

Page generation time: 0.849