English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
preview
Impara come progettare un sistema di trading tramite Force Index

Impara come progettare un sistema di trading tramite Force Index

MetaTrader 5Trading | 10 luglio 2023, 10:10
389 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduzione

Ecco un nuovo articolo della nostra serie sull'imparare a progettare un sistema di trading basato sugli indicatori tecnici più comuni. In questo articolo impareremo come creare un sistema di trading tramite l'indicatore Force Index. Impareremo cos'è questo indicatore nel dettaglio coprendo i seguenti argomenti:

  1. Definizione di Force Index
  2. Strategia Force Index
  3. Schema della strategia Force Index
  4. Sistema di trading Force Index
  5. Conclusioni

Attraverso gli argomenti precedentemente menzionati, impareremo in modo più dettagliato questo indicatore tecnico. Impareremo cos'è, cosa misura e come possiamo calcolarlo attraverso l'argomento della definizione di Force Index. Dopo aver compreso il concetto di base dietro questo indicatore, impareremo come utilizzare strategie semplici e lo faremo attraverso l'argomento della strategia Force Index. Quando si tratta di creare un sistema di trading per qualsiasi strategia, scopriamo che dobbiamo organizzare le nostre idee per farlo senza intoppi, quindi progetteremo uno schema per ciascuna strategia menzionata per aiutarci a raggiungere il nostro obiettivo in modo fluido ed efficace, lo faremo attraverso l'argomento dello schema della strategia Force Index. Dopo aver organizzato le nostre idee attraverso uno schema passo-passo, creeremo il nostro sistema di trading da eseguire nella piattaforma di trading MetaTrader 5 per generare segnali automaticamente e accuratamente, e lo faremo attraverso l'argomento del sistema di trading Force Index.

Useremo MQL5 (MetaQuotes Language) per scrivere il codice per il sistema di trading che è integrato nel terminale di trading MetaTrader 5. Se vuoi imparare come scaricarli e usarli, puoi leggere l'argomento Scrivere codice MQL5 in MetaEditor da un articolo precedente. Devo consigliarti di applicare ciò che impari in quanto ti aiuterà ad approfondire la tua comprensione oltre alla necessità di testare qualsiasi strategia prima di utilizzarla sul tuo conto reale.

Avvertenza: Tutte le informazioni sono fornite "così come sono" solo a scopo didattico e non sono preparate per scopi commerciali o di consulenza. Le informazioni non garantiscono alcun tipo di risultato. Se scegliete di utilizzare questi materiali su uno qualsiasi dei vostri conti di trading, lo farete a vostro rischio e pericolo e sarete gli unici responsabili.

Ora, iniziamo i nostri argomenti per conoscere questo indicatore Force Index.


Definizione di Force Index

In questo argomento, scopriremo più in dettaglio l'indicatore Force Index poiché impareremo cos'è l'indicatore Force Index, cosa misura e come possiamo calcolarlo. Il mio approccio è quando impariamo e comprendiamo la radice delle cose, non solo saremo in grado di utilizzare queste cose in modo efficace, ma otterremo maggiori intuizioni su come sviluppare più idee relative a queste cose. Il Force Index è stato sviluppato da Alexander Elder e lo ha fornito nel suo fantastico libro "Trading for a living". Questo indicatore misura la potenza dietro il movimento o identifica potenziali punti di svolta. Questo indicatore Force Index utilizza il prezzo e il volume nel suo calcolo e questo aiuta a misurare la forza dietro qualsiasi movimento nel mercato.

Se vogliamo sapere come possiamo calcolare manualmente questo indicatore Force Index per comprendere il concetto di base dietro di esso, possiamo farlo con i seguenti due semplici passaggi:

1- Force Index di 1-periodo = (Chiusura di 1-periodo - Chiusura del periodo precedente) * Volume

2- Force Index di 13-periodi = 13-periodi di EMA di Force Index di 1-periodo

Al giorno d'oggi, non abbiamo bisogno di calcolarlo manualmente poiché possiamo trovarlo come indicatore integrato nella nostra piattaforma di trading MetaTrader 5 e tutto ciò di cui abbiamo bisogno è sceglierlo tra gli indicatori disponibili nel terminale di trading MetaTrader 5. Mentre apriamo MetaTrader 5, premiamo la scheda Inserisci --> Indicatori --> Oscillatori --> Force Index.

La seguente è un’immagine per farlo:

Indicatore Force Index Inserito

Dopo aver scelto il "Force Index", troveremo i parametri di questo indicatore come i seguenti:

Indicatore Force Index param

1- Per determinare il periodo desiderato dell'indicatore Force Index. Useremo (13) come impostazione predefinita dell'indicatore.

2- Per determinare il tipo di media mobile. Useremo quello esponenziale.

3- Determinare il tipo di volume. Useremo quello Tick.

4- Per determinare il colore della linea dell'indicatore.

5- Per determinare lo stile della linea.

6- Per determinare lo spessore della linea.

Successivamente, possiamo trovare l'indicatore allegato al grafico uguale al seguente:

Indicatore Force Index allegato

Come possiamo vedere nella finestra inferiore del grafico precedente, l'indicatore Force Index è allegato al grafico e la sua linea oscilla sopra e sotto il livello zero.


Strategia Force Index

In questo argomento impareremo come utilizzare il Force Index fondato sul concetto di base che ne è dietro. Useremo semplici strategie solo per capire il concetto di base di come poter usare questo indicatore e come poter creare un sistema di trading con esso. Devi testare qualsiasi di queste strategie prima di utilizzarle sul tuo conto reale per assicurarti che siano adatte al tuo trading poiché l'obiettivo principale qui è solo l'istruzione.

  • Strategia uno: Force Index - Identificatore di Trend

Sulla base di questa strategia, dobbiamo ottenere segnali rialzisti o ribassisti in base al crossover tra l'indicatore Force Index e il livello zero. Se il force index è maggiore del livello zero, sarà un segnale di movimento rialzista. Viceversa, se force index è inferiore al livello zero, sarà un segnale di movimento ribassista.

Semplicemente,

Force index > livello zero --> movimento rialzista.

Force index < livello zero --> movimento ribassista.

  • Strategia due: Force index - Up or Divergence

Sulla base di questa strategia, dobbiamo ricevere un segnale quando il mercato sperimenta un forte movimento al rialzo o una divergenza. Se il valore massimo attuale è maggiore del valore massimo precedente e allo stesso tempo, il valore force index attuale è maggiore del valore force index precedente, sarà un segnale di un forte movimento al rialzo. Se il massimo attuale è maggiore del massimo precedente e allo stesso tempo, il force index attuale è inferiore al valore force index precedente, questo sarà un segnale di divergenza ribassista.

Semplicemente,

Massimo attuale > massimo precedente e force index attuale > force index precedente --> forte movimento al rialzo.

Massimo attuale > massimo precedente e force index attuale < force index precedente --> divergenza ribassista.

  • Strategia tre: Force Index - Down or Divergence

Secondo questa strategia, dobbiamo ottenere il segnale opposto della strategia due. Abbiamo bisogno di ottenere un segnale di forte movimento al ribasso o divergenza sulla base di condizioni specifiche. Se il minimo attuale è inferiore al minimo precedente e il valore force index attuale è inferiore al precedente, sarà un segnale di un forte movimento al ribasso. Se l'attuale minimo è inferiore al precedente e l'attuale force index è maggiore del precedente, questo sarà un segnale di divergenza rialzista.

Semplicemente,

Minimo attuale < minimo precedente e force index attuale < force index precedente --> forte movimento al ribasso.

Minimo attuale < minimo precedente e force index attuale > force index precedente --> divergenza rialzista.

  • Strategia quattro - Segnali Force Index :

Sulla base di questa strategia, dobbiamo ottenere segnali di acquisto e di vendita in base a condizioni specifiche. Se il prezzo di chiusura è maggiore della media mobile esponenziale, il precedente force index è inferiore a zero e l'attuale force index è maggiore del livello zero, questo sarà un segnale di acquisto. Se il prezzo di chiusura è inferiore alla media mobile esponenziale, il precedente force index è maggiore del livello zero e l'attuale force index è inferiore al livello zero, questo sarà un segnale di vendita.

Semplicemente,

Prezzo di chiusura > EMA, force index precedente < zero e force index attuale > zero --> segnale di acquisto.

Prezzo di chiusura < EMA, force index precedente > zero e force index attuale < zero --> segnale di vendita.


Schema della strategia Force Index

In questo argomento, progetteremo uno schema passo-passo per aiutarci a creare il nostro sistema di trading. A mio parere, questo è un passaggio importante in quanto ci aiuta a organizzare le nostre idee per completare il nostro obiettivo e creare il nostro sistema di trading senza intoppi.

  • Strategia uno:  Force Index - Identificatore di Trend

Secondo questa strategia, dobbiamo creare un sistema di trading che ci fornisca segnali automatici con movimenti rialzisti o ribassisti come commento sul grafico. Abbiamo bisogno che l'expert controlli il force index attuale ad ogni tick e decida la sua posizione nei confronti del livello zero. Se l'attuale valore force index è maggiore del livello zero, abbiamo bisogno che l'expert restituisca commenti sul grafico con movimento rialzista e valore attuale force index. Dall’altra parte, se l'attuale valore force index è inferiore al livello zero, abbiamo bisogno che l'expert restituisca commenti sul grafico con movimento ribassista e valore attuale force index .

Force Index - Schema Identificatore di trend

  • Strategia due: Force index - Up or Divergence

Sulla base di questa strategia, dobbiamo creare un sistema di trading che ci dia un segnale con un forte movimento al rialzo o una divergenza ribassista. Abbiamo bisogno che il sistema di trading controlli continuamente quattro valori e questi valori sono i valori massimi attuali e precedenti, e decida quale è più grande dell'altro e lo stesso con i valori force index attuale e precedente. Se il massimo attuale è maggiore del massimo precedente e force index attuale è maggiore del precedente force index , è necessario che l'expert restituisca quanto segue come commento sul grafico, ogni valore in una riga separata:

  • Forte movimento
  • L'attuale valore massimo
  • Il precedente valore massimo
  • Valore force index attuale
  • Valore force index precedente

Se il massimo attuale è maggiore del massimo precedente e il force index attuale è inferiore al precedente force index, è necessario che l'expert restituisca quanto segue come commento sul grafico, ogni valore in una riga separata:

  • Divergenza ribassista
  • L'attuale valore massimo
  • Il precedente valore massimo
  • Valore force index attuale
  • Valore force index precedente

Quella che segue è un’immagine di questo schema.

Force index  - Schema Up or Divergence

  • Strategia tre: Force Index - Down or Divergence

Secondo questa strategia, dobbiamo creare un sistema di trading che restituisca segnali automatici di forte movimento al ribasso o divergenza rialzista. Abbiamo bisogno che l'expert controlli quattro valori il valore minimo attuale e il valore minimo precedente e decida quale è maggiore dell'altro, abbiamo bisogno che l'expert controlli anche il force index attuale e il force index precedente e decida quale è maggiore dell’altro. Se il valore minimo corrente è inferiore al valore minimo precedente e il force index corrente è inferiore al precedente force index, è necessario che l'expert restituisca i seguenti valori come commento sul grafico, ognuno dei quali in una riga separata:

  • Forte movimento ribassista,
  • Valore del minimo corrente
  • Valore del minimo precedente
  • Valore force index attuale
  • Valore force index precedente

Se il minimo attuale è inferiore al minimo precedente e il force index attuale è maggiore del precedente force index, è necessario che l'expert restituisca i seguenti valori in un commento sul grafico, ciascuno in una riga separata:

  • Divergenza rialzista
  • Valore del minimo corrente
  • Valore del minimo precedente
  • Valore force index attuale
  • Valore force index precedente

Quella che segue è un’immagine di questo schema:

Force Index - Schema Ribasso o Divergenza

  • Strategia quattro - Segnali Force Index :

Sulla base di questa strategia, dobbiamo creare un sistema di trading che restituisca segnali di acquisto o vendita in base a condizioni specifiche. Abbiamo bisogno che l'expert controlli continuamente quattro valori e questi valori sono il prezzo di chiusura, la media mobile, il force index attuale e il force index precedente. Se il prezzo di chiusura è maggiore del valore della media mobile corrente, il precedente force index è inferiore a zero e l'attuale force index è maggiore del livello zero, è necessario che l'expert restituisca i seguenti valori come commento sul grafico, ogni valore in una riga separata:

  • Segnale d’acquisto
  • Prezzo di chiusura attuale
  • Media mobile esponenziale corrente
  • Valore force index attuale
  • Valore force index precedente

Se il prezzo di chiusura è inferiore all'attuale media mobile, il precedente valore del force index è maggiore del livello zero e l'attuale valore del force index è inferiore al livello zero, è necessario che l'expert restituisca i seguenti valori come commento sul grafico, ogni valore in una riga separata:

  • Segnale di vendita
  • Prezzo di chiusura attuale
  • Media mobile esponenziale corrente
  • Valore force index attuale
  • Valore force index precedente

Quello che segue è uno schema di questa strategia:

Schema segnali Force Index

Sistema di trading Force Index

In questo argomento, impareremo in dettaglio come creare un sistema di trading per ciascuna strategia menzionata per ottenere segnali automatici su MetaTrader 5 dopo aver scritto i codici MQL5 di queste strategie. Innanzitutto, creeremo una semplice strategia di trading che può essere utilizzata per generare un commento sul grafico con il valore attuale del Force Index da utilizzare come base per le nostre strategie menzionate.

  • Creazione di un array per fiArray utilizzando la funzione "double".
double fiArray[];
  • Ordinamento dell'array utilizzando la funzione “ArraySetAsSeries” che restituisce un valore Booleano (vero o falso). I parametri di questa funzione sono:
    • array[]
    • flag
ArraySetAsSeries(fiArray,true);
  • Definire il volume utilizzando iForce dopo aver creato una variabile per fiDef. La funzione iForce restituisce l'handle dell'indicatore Force Index. I parametri di questa funzione sono:
    • symbol: useremo (_Symbol) da applicare al simbolo corrente.
    • period: utilizzeremo (_Period) da applicare al periodo o timeframe corrente.
    • ma_period: useremo (13) come lunghezza di utilizzo della media mobile.
    • ma_method: useremo (MODE_EMA) come tipo di media mobile da utilizzare.
    • applied_volume: useremo (VOLUME_TICK) come tipo di volume.
int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
  • Riempimento dell'array utilizzando la funzione CopyBuffer per ottenere i dati dall'indicatore Force Index. Parametri di questa funzione:
    • indicator_handle: per l'handle dell'indicatore, useremo (fiDef).     
    • buffer_num: per il numero di buffer dell'indicatore e useremo (0).
    • start_pos: per la posizione iniziale e useremo (0).         
    • count: per la quantità da copiare e useremo (13).                
    • buffer[]: per l'array di destinazione da copiare e useremo (fiArray).
CopyBuffer(fiDef,0,0,3,fiArray);
  • Definire il valore di Force Index corrente utilizzando la funzione NormalizeDouble dopo aver creato una variabile per fiVal. La funzione NormalizeDouble restituisce il valore di tipo double e i parametri sono:
    • value: useremo (fiArray[0]) come numero normalizzato.
    • digits: useremo (6) come numero di cifre dopo la virgola.
double fiVal = NormalizeDouble(fiArray[0],6);
  • Utilizzo della funzione comment per restituire il valore Force Index corrente come commento sul grafico.
Comment("Force Index Value is ",fiVal);

Quello che segue è il codice completo per creare questo semplice sistema di trading:

//+------------------------------------------------------------------+
//|                                           Simple Force Index.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   Comment("Force Index Value is ",fiVal);

  }
//+------------------------------------------------------------------+

Dopo aver compilato questo codice troveremo l'expert di questo sistema di trading nella finestra del navigatore come segue:

FI Nav 1

Trascinandolo e rilasciandolo sul grafico, troveremo la sua finestra uguale alla seguente.

Finestra Simple Force Index

Dopo aver premuto "OK", l'expert verrà allegato al grafico:

Simple Force Index allegato

Come possiamo vedere in alto a destra dell'immagine precedente l’expert "Simple Force Index" è allegato al grafico.

Possiamo trovare i segnali generati da questo sistema di trading come il seguente esempio dai test:

Segnale Simple Force Index

Come possiamo vedere nell’immagine precedente in alto a sinistra abbiamo il segnale del valore attuale del Force Index come commento sul grafico.

Se vogliamo confermare che il segnale generato è lo stesso dell'indicatore Force Index integrato in MetaTrader 5. Possiamo farlo inserendo l'indicatore con le stesse impostazioni dell'indicatore programmato nello stesso momento in cui viene allegato l'expert. Troveremo entrambi i segnali uguali al seguente:

Simple Force Index - stesso segnale

Come possiamo vedere nel grafico precedente in alto a destra l’expert è allegato e in alto a sinistra abbiamo il commento sul valore del force index che viene generato tramite questo expert e nella finestra in basso abbiamo inserito il force index integrato con il suo valore e possiamo vedere chiaramente che entrambi i valori sono gli stessi.

  • Strategia uno: Force Index - Identificatore di Trend

Quanto segue è come scrivere il codice che crea un sistema di trading basato su questa strategia.

//+------------------------------------------------------------------+
//|                               Force Index - Trend Identifier.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,100,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

  }
//+------------------------------------------------------------------+

Le differenze in questo codice sono le condizioni della strategia:

In caso di movimento rialzista

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

In caso di movimento ribassista

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

Dopo aver compilato questo codice, troveremo l’expert nella finestra del navigatore come di seguito:

FI nav

Per eseguire questo expert lo trascineremo e lo rilasceremo sul grafico, quindi troveremo la sua finestra uguale alla seguente:

Force Index - Finestra Trend Identifier

Dopo aver premuto "OK", troveremo che l'expert sarà allegato al grafico come nell'immagine seguente:

Force Index - Trend Identifier allegato

Come possiamo vedere in alto a destra del grafico che l'expert è allegato al grafico.

Possiamo trovare segnali generati basati su questa strategia come nei seguenti esempi dai test.

In caso di movimento rialzista:

Force Index - Trend Identifier - segnale rialzista

Come possiamo vedere nel grafico precedente in alto a sinistra abbiamo un commento con movimento rialzista e il valore attuale dell'indicatore force index.

In caso di movimento ribassista:

Force Index - Trend Identifier - segnale ribassista

Come possiamo vedere nel grafico precedente in alto a sinistra abbiamo un commento con movimento ribassista e il valore attuale dell'indicatore force index.

  • Strategia due: Force index - Up or Divergence

Quanto segue è come codificare un sistema di trading per questa strategia.

//+------------------------------------------------------------------+
//|                               Force Index - Up or Divergence.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double currentHighVal=NormalizeDouble(pArray[2].high,6);
   double prevHighVal=NormalizeDouble(pArray[1].high,6);

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Le differenze in questo codice sono:

Creazione di due array uno per fiArray utilizzando la funzione "double" come abbiamo fatto prima e l'altro per pArray utilizzando la funzione "MqlRates" che memorizza le informazioni sui prezzi, i volumi e lo spread.

   double fiArray[];
   MqlRates pArray[];

Ordinamento di questi array creati, useremo la funzione "ArraySetAsSeries" per fiArray come abbiamo imparato prima. Per pArray, useremo la funzione "CopyRates" per ottenere i dati storici di "MqlRates" e i suoi parametri sono:

  • nome del simbolo: useremo (_Symbol).
  • timeframe: useremo (_Period).
  • start time: useremo (0).
  • stop time: useremo (3).
  • rate array: useremo (pArray).
   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Definizione dei valori attuali e precedenti del Force Index

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

Definizione dei valori massimi attuali e precedenti

   double currentHighVal=NormalizeDouble(pArray[2].high,6);
   double prevHighVal=NormalizeDouble(pArray[1].high,6);

Condizioni della strategia

In caso di forte movimento al rialzo:

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

In caso di divergenza ribassista:

 
   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Dopo aver compilato questo codice lo ritroveremo nella finestra del navigatore come al seguente:

FI Nav

Trascinando e rilasciandolo sul grafico troveremo la finestra di questo expert come alla seguente:

Force Index - Finestra Up or Divergence

Dopo aver premuto "OK" troveremo che l'expert è allegato al grafico come il seguente:

Force Index - Up or Divergence allegato

Come possiamo vedere nel grafico precedente nell’angolo in alto a destra l’expert è allegato.

Successivamente, possiamo ottenere segnali basati sulle condizioni del mercato se corrispondono alle condizioni di questa strategia. I seguenti sono esempi tratti dai test.

In caso di forte movimento al rialzo con finestra dati corrente:

Force Index - Up o Divergence - segnale forte up - dati correnti

Con finestra dati precedente:

 Force Index - Up or Divergence - segnale up forte - dati precedenti

In caso di divergenza ribassista con la finestra dati corrente:

Force Index - Up or Divergence - segnale di divergenza - dati correnti

Con finestra dati precedente:

Force Index - Up or Divergence - segnale di divergenza - dati precedenti

  • Strategia tre: Force Index - Down or Divergence

Quello che segue è il codice completo per creare un sistema di trading per questa strategia.

//+------------------------------------------------------------------+
//|                             Force Index - Down or Divergence.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double currentLowVal=NormalizeDouble(pArray[2].low,6);
   double prevLowVal=NormalizeDouble(pArray[1].low,6);

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Le differenze in questo codice sono:

Definizione dei valori minimi attuali e precedenti:

   double currentLowVal=NormalizeDouble(pArray[2].low,6);
   double prevLowVal=NormalizeDouble(pArray[1].low,6);

Condizioni di questa strategia:

In caso di Forte movimento al ribasso:

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

In caso di divergenza rialzista:

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Dopo aver compilato questo codice troveremo l'expert di questo sistema di trading nella finestra del navigatore come segue:

Nav

Trascinando e rilasciandolo sul grafico troveremo la finestra di questo expert come alla seguente:

Force Index - Finestra Down or Divergence

Dopo aver premuto "OK" troveremo l'expert allegato al grafico come il seguente:

Force Index - Finestra Down or Divergence allegato

Come possiamo vedere nel grafico precedente nell’angolo in alto a destra l’expert è allegato.

Ora, possiamo vedere segnali generati basati su questa strategia come nei seguenti esempi dai test.

In caso di forte ribasso con i dati attuali:

Force Index - Down or Divergence - segnale forte ribasso - dati correnti

Con i dati precedenti:

Force Index - Down o Divergence - segnale forte ribasso - dati precedenti

In caso di divergenza rialzista con i dati attuali,

Force Index - Down or Divergence - segnale di divergenza - dati correnti

Con i dati precedenti:

Force Index - Down or Divergence - segnale di divergenza - dati precedenti

  • Strategia quattro - Segnali Force Index :

Di seguito è riportato il codice completo per creare un sistema di trading basato su questa strategia.

//+------------------------------------------------------------------+
//|                                          Force Index signals.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   double maArray[];
   MqlRates pArray[];



   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);


   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);


   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Differenze in questo codice:

Creazione di tre array per fiArray, maArray e MqlRates

   double fiArray[];
   double maArray[];
   MqlRates pArray[];

Ordinamento degli array fiArray e maArray

   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);

Definizione di fiDef per force index , maDef per media mobile

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

Ordinamento di pArray attraverso la funzione "CopyRates" come abbiamo appreso

int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Riempimento degli array

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

Definizione di quattro valori, force index attuale, force index precedente, media mobile corrente e prezzo di chiusura

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);

Condizioni della strategia:

In caso di segnale di acquisto:

   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

In caso di segnale di vendita:

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

Dopo aver compilato questo codice lo ritroveremo nella finestra del navigatore come al seguente:

Nav

Trascinando e rilasciandolo sul grafico troveremo la finestra di questo expert come alla seguente:

Finestra  segnali Force Index

Dopo aver premuto "OK" troveremo l'expert allegato al grafico come il seguente:

 Segnali Force Index allegati

Successivamente, possiamo trovare esempi di segnali generati dai test come il seguente.

In caso di segnale di acquisto con dati correnti:

Segnali Force Index - segnale di acquisto - dati attuali

Con i dati precedenti:

Segnali Force Index - segnale di acquisto - dati precedenti

In caso di segnale di vendita con dati correnti:

Segnali Force Index - segnale di vendita - dati attuali

Con i dati precedenti:

 Segnali Force Index - segnale di vendita - dati precedenti


Conclusioni

L'indicatore Force Index è un ottimo strumento tecnico che ci offre buone intuizioni per prendere decisioni adeguate. Abbiamo trattato questo indicatore nel dettaglio attraverso questo articolo e abbiamo imparato cos'è, cosa misura e come possiamo calcolarlo manualmente per comprenderne il concetto alla base. Abbiamo anche imparato come possiamo usarlo attraverso semplici strategie che sono:

  • Force Index - Trend Identifier: per ottenere segnali di movimenti rialzisti e ribassisti.
  • Force Index - Up or Divergence: per ottenere segnali di forte movimento rialzista o divergenza ribassista.
  • Force Index - Down or Divergence: per ottenere segnali di forte movimento al ribasso o divergenza rialzista.
  • Segnali Force Index: per ottenere segnali di acquisto o vendita basati sulla valutazione del prezzo di chiusura, del valore del force index e della media mobile esponenziale.

Successivamente, abbiamo progettato uno schema passo-passo per creare un sistema di trading per ciascuna strategia menzionata e l'importanza di questo passaggio ci sta aiutando a creare questo sistema di trading in modo fluido ed efficace dopo aver organizzato le nostre idee. Abbiamo creato un sistema di trading per ogni strategia menzionata da eseguire nella MetaTrader 5 per ottenere segnali automatici.

Devo confermare di nuovo qui di assicurarsi di testare qualsiasi strategia prima di utilizzarla sul tuo conto reale per essere certi che sia adatta per se stessi in quanto non c'è niente adatto a tutti. Spero che tu abbia applicato ciò che hai imparato da solo poiché la pratica è un fattore molto importante in qualsiasi viaggio di apprendimento. Ti consiglio anche di pensare a come utilizzare questo indicatore con un altro strumento tecnico in un modo da migliorare le nostre decisioni e i risultati di trading poiché questa è una delle caratteristiche più sorprendenti dell'approccio dell'analisi tecnica.

Secondo me è importante imparare o almeno prestare attenzione alla programmazione poiché la sua importanza aumenta giorno dopo giorno in diversi campi. Quando si tratta di trading, la programmazione ha molte caratteristiche che ci spingono a prestarvi attenzione, così ci fa risparmiare tempo, utilizzando programmi che fanno trading per noi o almeno ci aiuta a fare trading in modo efficace. Inoltre, la programmazione aiuta a ottenere segnali accurati in base a ciò che abbiamo codificato. La cosa più vantaggiosa è ridurre ed evitare le emozioni dannose.

Spero che troverai utile questo articolo per migliorare i tuoi risultati di trading e ottenere nuove idee su questo argomento o su qualsiasi argomento correlato. Se hai trovato utile questo articolo e vuoi leggere altri articoli simili, puoi leggere gli altri miei articoli di questa serie.

Tradotto dall’inglese da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/en/articles/11269

Impara come progettare un sistema di trading tramite Bear’s Power Impara come progettare un sistema di trading tramite Bear’s Power
Benvenuti in un nuovo articolo della nostra serie sull'imparare a progettare un sistema di trading tramite gli indicatori tecnici più popolari, ecco un nuovo articolo su come progettare un sistema di trading tramite l'indicatore tecnico Bear's Power.
Sviluppare un Expert Advisor per il trading da zero (Parte 19): Nuovo sistema di ordini (II) Sviluppare un Expert Advisor per il trading da zero (Parte 19): Nuovo sistema di ordini (II)
In questo articolo svilupperemo un sistema di ordini grafico del tipo "guarda cosa succede". Tieni presente che questa volta non stiamo partendo da zero, ma modificheremo il sistema esistente aggiungendo più oggetti ed eventi sul grafico dell'asset che stiamo tradando.
Algoritmi di ottimizzazione della popolazione: Ottimizzazione della Colonia di formiche (ACO) Algoritmi di ottimizzazione della popolazione: Ottimizzazione della Colonia di formiche (ACO)
Questa volta analizzerò l'algoritmo di ottimizzazione Ant Colony. L'algoritmo è molto interessante e complesso. Nell'articolo, provo a creare un nuovo tipo di ACO.
Sviluppare un Expert Advisor per il trading da zero (Parte 18): Nuovo sistema di ordini (I) Sviluppare un Expert Advisor per il trading da zero (Parte 18): Nuovo sistema di ordini (I)
Questa è la prima parte del nuovo sistema di ordini. Da quando abbiamo iniziato a documentare questo EA nei nostri articoli, ha subito varie modifiche e miglioramenti mantenendo lo stesso modello di sistema degli ordini sul grafico.