Discussione sull’articolo "Come gestire le linee utilizzando MQL5"

 

Il nuovo articolo Come gestire le linee utilizzando MQL5 è stato pubblicato:

In questo articolo, troverete il modo di gestire le linee più importanti come le trend line, supporto e resistenza con MQL5.

Possiamo utilizzare la Trend line nel trading piazzando i nostri ordini in base al tipo di linea di tendenza. Se c'è una trend line al rialzo, possiamo aspettarci che il prezzo si muova verso il basso per testare questa linea di tendenza dall'alto per poi rimbalzare verso l'alto e quindi piazzare il nostro ordine di acquisto intorno a questa trend line. Viceversa, se c'è una trend line discendente, è possibile che il prezzo si muova verso l'alto per testare questa linea di tendenza dal basso per poi rimbalzare verso il basso e quindi piazzare il nostro ordine di vendita o short intorno a questa trend line discendente.

Quanto seguente è per la Trend line ascendente:

 Trend line al rialzo

Autore: Mohamed Abdelmaaboud

 
ma perché ObjectCreate(_Symbol, "supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low); ?
abbastanza ObjectCreate(_Symbol, "supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low);
 
MetaQuotes:

È stato pubblicato l'articolo"Come lavorare con le linee utilizzando gli strumenti MQL5":

Autore: Mohamed Abdelmaaboud

Questo è un articolo interessante per i principianti, ma per il corretto funzionamento degli Expert Advisor è necessaria una piccola modifica dei codici.

Saluti, Vladimir.

//+------------------------------------------------------------------+
//|Sistema UpwardTrendline.mq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pLow[];
   ArraySetAsSeries(pLow,true);
   int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);
   if(copy_low>0)
     {
      int candleLow = ArrayMinimum(pLow,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"UpwardTrendline");
      ObjectCreate(0,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,
                   pArray[0].time,pArray[0].low);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|Sistema DownwardTrendline.mq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
   if(copy_high>0)
     {
      int candleHigh = ArrayMaximum(pHigh,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"DnwardTrendline");
      ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,
                   pArray[0].time,pArray[0].high);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|Sistema di linea di supporto.mq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pLow[];
   ArraySetAsSeries(pLow,true);
   int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);
   if(copy_low>0)
     {
      int candleLow = ArrayMinimum(pLow,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"supportLine");
      ObjectCreate(0,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low,
                   pArray[0].time,pArray[0].low);
      ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);
      ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|Sistema di linee di resistenza.mq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
   if(copy_high>0)
     {
      int candleHigh = ArrayMaximum(pHigh,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"resistanceLine");
      ObjectCreate(0,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,
                   pArray[0].time,pArray[0].high);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+
 
MrBrooklin #:

Articolo interessante per i principianti, ma per far funzionare correttamente gli EA è necessaria una piccola modifica dei codici.

Saluti, Vladimir.




Grazie per il suo gentile commento, lo esaminerò.
 
Il modo in cui avete disegnato la linea è molto bello. Un'osservazione sulle linee di tendenza: non serve a molto se il secondo punto di ancoraggio è sempre la barra 0 dell'indice, perché ad ogni nuova barra la linea di tendenza viene aggiornata e quindi la linea di tendenza non serve a nulla. L'ideale sarebbe definire il secondo punto di ancoraggio in base a un criterio specifico. Ad esempio, la seconda barra con il prezzo più alto, con una distanza minima di 30 barre dalla prima, oppure prendere la barra con il prezzo più alto del giorno successivo, e così via.

Complimenti per l'articolo.
 
Andrei Pereira linee di tendenza: non serve a molto se il secondo punto di ancoraggio è sempre la barra 0 dell'indice, perché ad ogni nuova barra la linea di tendenza viene aggiornata e quindi la linea di tendenza non serve a nulla. L'ideale sarebbe definire il secondo punto di ancoraggio in base a un criterio specifico. Ad esempio, la seconda barra con il prezzo più alto, ad almeno 30 barre di distanza dalla prima, oppure prendere la barra con il prezzo più alto del giorno successivo, e così via.

Complimenti per l'articolo.

Grazie per il suo commento, è un'ottima osservazione.

 
Mohamed Abdelmaaboud #:
Grazie per il gentile commento, lo rivedrò.

Sono passati quasi 10 mesi e l'autore dell'articolo non ha apportato alcuna modifica ai suoi codici. ))

Saluti, Vladimir.

 
MrBrooklin #:

Sono passati quasi 10 mesi e l'autore dell'articolo non ha apportato alcuna modifica ai suoi codici. ))

Saluti, Vladimir.

Grazie per il promemoria e il contributo. Verrà inviato per la modifica.