Il mio Forex

307 views
Skip to first unread message

xgx

unread,
Jun 30, 2017, 12:43:10 PM6/30/17
to Quelli di BorsAnalisi
Visto l'interesse di Ric e Natale vi racconto la mia esperienza nel Forex nel corso degli ultimi 2 anni.
Premetto che i rapporti di cambio fra le valute mi hanno sempre affascinato tanto quanto l'odiato/amato Fib/MiniFib.
La mia prima esperienza risale ai primi anni novanta quando mi feci prestare dal Direttore della mia Banca 100.000.000 delle vecchie Lire comprando lo stesso valore in Marchi tedeschi. Dopo qualche giorno chiusi l'operazione e me ne andai in vacanza sul Lago di Garda col guadagnato. Fu una bella soddisfazione e mi servì per capire che in fin dei conti per operare con le valute i soldi servono ma fino ad un certo punto. Questa prima considerazione ci permette di individuare il primo grande vantaggio nell'operare nel mercato più liquido del mondo:

1) Si muovono tanti soldi con pochissimo e si riesce a modulare perfettamente il rischio legato al proprio investimento. Qualsiasi Broker che offre il servizio Forex oggi chiede mediamente un margine di 2 euro per movimentare 1000 euro in valuta (un microlotto ovvero 0.01 di lotto standard) e questo è un gran bel vantaggio per chi rimane attento ed è cosciente che il 10% di 1000 euro sono 100 euro.

2) Il rapporto di cambio fra 2 valute non potrà mai essere zero.
Pensate un attimo all'euro contro dollaro

il grafico mensile da quando è stato introdotto ci mostra che il prezzo ha oscillato da un minimo di 0.8225 ad un massimo 1.6019.
Cosa dovrebbe accadere in America o meglio quanto forte dovrebbe essere l'economia americana per avere un cambio di 0.5000 ...?
Oppure quanto ricca dovrebbe diventare l'Europa per avere un cambio di 2.0000 ....?
E' facile intuire come i rapporti di forza certamente potranno cambiare ma dei limiti, sia da una parte che dall'altra ci saranno sempre e un cambio euro/dollaro zero non lo vedremo mai.
Preso atto di questo dato oggettivo si può passare al punto 3 che è il vero punto di riflessione.

3) "I prezzi fra valute per la maggior parte del tempo non vanno da nessuna parte".
Lessi questa frase in qualche forum o sito specializzato un paio d'anni fa e mi colpì particolarmente.
Approfondii la riflessione e mi resi conto della disarmante verità di questo dato "quasi" oggettivo. Ci possono essere periodi di trend conclamato ma sono relativamnte brevi, e per la maggior parte del tempo il tasso di cambio fra valute non va da nessuna parte.
Una cosa però la fa sempre: oscilla....!!!
Adesso , con riferimento al grafico sopra dell'euro/dollaro, in base ai massimi e mini registrati da sempre, stabiliamo il prezzo medio che ha avuto nel corso di questi 17 anni ovvero ((1.6019-0.8225)/2)+0.8225= 1.2122 PMedio.
Conoscendo il PMedio e i minimi e massimi possiamo tranquillamente costruire una bella griglia in basso e in alto composta da 5 blocchi ovvero:
1.2122-0.8225= 0.3897 divido lo spazio fra Minimo e PMedio in 5 parti uguali del valore di 0.07794 che sottraggo per 5 volte al prezzo medio ottenendo così i seguenti prezzi: 1.13426 - 1.05632 - 0.97838 - 0.90044 - 0.8225.
Dopo aver costruito anche la griglia superiore abbiamo dei parametri certi con cui predisporre un'infinità di strategie. Un solo punto fermo ovvero sopra il Prezzo Medio si vende e sotto si compra.

Questo è il primo spunto .....!!! Ovviamente ho molto semplificato le cose però il concetto di fondo rimane valido: il prezzo oscilla sempre e sotto un valore minimo non potrà mai andare così come non potrà mai superare un valore massimo. Teoricamente uno Scale Trading ha senso nel Forex, molto poco con un Indice, nessun senso con un'azione.

natale lanza

unread,
Jun 30, 2017, 1:58:36 PM6/30/17
to quellidib...@googlegroups.com



#codiceTrading
Grazie, mi hai dato un'infinità di spunti sui quali lavorerò. Se ottengo qualche risultato utile, o che ritengo vada discusso, riprenderò l'argomento. Nel frattempo, torno sugli indici azionari.

Come anticipato un paio di giorni fa, oggi dovrebbe essersi chiuso un ciclo importante (il grafico è aggiornato a ieri). Devo precisare che, la mia, è una ciclicità poco ortodossa, in quanto non fondata sugli intervalli canonici. Forse non dovrei neanche usare il termine "ciclo".

Il modello che adotto, infatti, ignora i vincoli della teoria classica (due anomalie tipiche sono racchiuse negli ovali) e si preoccupa, piuttosto, di cercare quei ritmi che gli consentono di risultare vincente ed efficace, anche a scapito della perfezione ciclica. Finora ci è riuscito perfettamente.Per la cronaca, è stato studiato da tempo e regolarmente monitorato e tradato; non si tratta, dunque, di quei modelli ex-post che risultano vincenti per definizione.

Il punto di svolta calcolato dovrebbe cadere proprio oggi 30 giugno; se fosse automatizzato, il modello invertirebbe posizione questa sera, al valore di chiusura. Di fatto, il ciclo potrebbe chiudere lunedì o martedì. Deviazioni più ampie rappresenterebbero una defaillance. 

Per replicare la regolarità trascorsa, saranno necessarie intorno alle tre settimane; monitoreremo e verificheremo in prossimità della scadenza "adesso" presunta, da affinare sempre più man mano che si avvicina. L’obiettivo è che, alla fine, il valore dell’Eurostoxx risulti più elevato di quello attuale. Le oscillazioni intermedie, anche corpose e anche se dovessero toccare nuovi minimi, andrebbero ignorate. Fin qui il modello, letto con assoluta obiettività e senza opinioni personali. Che, poi, ciascuno di noi (mi metto in cima alla lista) abbia la “pancia” per assecondarlo è tutta un’altra questione.


Buon weekend a tutti.


xgx

unread,
Jul 1, 2017, 5:33:23 AM7/1/17
to quellidib...@googlegroups.com
Aspetto veramente con molta curiosità qualche riflessione di Natale ..... la mia idea sullo scale trading iniziale puo' sembrare molto scolastica e quasi banale ma vi assicuro che e' stata quella di partenza. Da quella idea attualmente opero con la piattaforma Metatrader 4 che gira H24 su un server dedicato situato in Francia. Sulla piattaforma gira un expert advisor (programma di trading automatico) scritto in linguaggio C (che ho dovuto studiare per 1 anno). Opero su un grafico a 5 Minuti prevalentemente con le coppie EurChf e EurUsd e dopo tanta fatica e tanto studio per la prima volta nella mia lunga esperienza con i mercati finanziari posso dire con onesta' intellettuale che non perdo più soldi. Dirò di più .... da inizio anno ad oggi stanno anche lentamente ma costantemente iniziando a rientrare ....
Il mio "stato dell'arte" è al momento il mio fondo LFS che può essere visionato su https://www.darwinex.com/darwin/LFS.4.16
Ci tengo a precisare che non mi sto facendo pubblicità ne la faccio per altri ma questo broker inglese ha avuto un'idea veramente geniale e mette in contatto investitori e trader. La mia strategia è quindi monitorata giornalmente e analizzata con loro algoritmi quindi essenzialmente "valutata" nel modo più oggettivo possibile. Tutto questo a suffragio della mia affermazione ... non perdo più denaro ....

natale lanza

unread,
Jul 1, 2017, 7:22:20 AM7/1/17
to Quelli di BorsAnalisi
La prendo come uno stimolo ulteriore. Dammi tempo; mi farò sentire al riguardo.

Ciao e buon weekend.


Il giorno sabato 1 luglio 2017 11:33:23 UTC+2, xgx ha scritto:
Aspetto veramente con molta curiosità qualche riflessione di Natale ..... la mia idea sullo scale trading iniziale puo' sembrare molto scolastica e quasi banale ma vi assicuro che e' stata quella di partenza. Da quella idea attualmente opero con la piattaforma Metatrader 4 che gira H24 su un server dedicato situato in Francia. Sulla piattaforma gira un expert advisor (programma di trading automatico) scritto in linguaggio C (che ho dovuto studiare per 1 anno). Opero su un grafico a 5 Minuti prevalentemente con le coppie EurChf e EurUsd e dopo tanta fatica e tanto studio per la prima volta nella mia lunga esperienza con i mercati finanziari posso dire con onesta' intellettuale che non perdo più soldi. Dirò di più .... da inizio anno ad oggi stanno anche lentamente ma costantemente iniziando a rientrare ....
Il mio "stato dell'arte" è al momento il mio fondo LFS che può essere visionato su https://www.darwinex.com/darwin/LFS.4.16
Ci tengo a precisare che non mi sto facendo pubblicità ne la faccio per altri ma questo broker inglese ha avuto un'idea veramente geniale e mette in contatto investitori e trader. La mia strategia è quindi monitorata giornalmente e analizzata con loro algoritmi quindi essenzialmente "valuata" nel modo più oggettivo possibile. Tutto questo a suffragio della mia affermazione ... non perdo più denaro ....

De Coubertin

unread,
Jul 1, 2017, 7:58:37 AM7/1/17
to Quelli di BorsAnalisi
Ciao a tutti, 
Quando scendono in campo certi calibri torna a tutti la voglia di giocare!
2 timori ed uno spunto:
1) Mi sono sempre temuto alla larga dal Forex per via dell'effetto leva esasperato: quando utilizzavo i CW mi sono fatto molto male, pur avendo il limite del capitale investito come perdita massima, figuiriamoci lavorare a margini...
2) L'idea che tu abbia studiato un anno il linguaggio C, partendo da basi superiori alle mie, ed il poco tempo a mia disposizione per studiare mi fa dubitare delle mie reali possibilità di riuscita
3) Quando vengo a contatto con idee molto semplici come quella di suddividere il grafico in griglie mi si apre un mondo. Nel grafico cosi suddiviso osservo che la permanenza dei prezzi nelle singole fasce è molto diversa, e mi pare che il fenomeno sia affine ma non identico alla volatilità, come affine ma non identico alla ciclicità. Pensate sia possibile lavorarci su?

Silvio

 giorno sabato 1 luglio 2017 11:33:23 UTC+2, xgx ha scritto:
Aspetto veramente con molta curiosità qualche riflessione di Natale ..... la mia idea sullo scale trading iniziale puo' sembrare molto scolastica e quasi banale ma vi assicuro che e' stata quella di partenza. Da quella idea attualmente opero con la piattaforma Metatrader 4 che gira H24 su un server dedicato situato in Francia. Sulla piattaforma gira un expert advisor (programma di trading automatico) scritto in linguaggio C (che ho dovuto studiare per 1 anno). Opero su un grafico a 5 Minuti prevalentemente con le coppie EurChf e EurUsd e dopo tanta fatica e tanto studio per la prima volta nella mia lunga esperienza con i mercati finanziari posso dire con onesta' intellettuale che non perdo più soldi. Dirò di più .... da inizio anno ad oggi stanno anche lentamente ma costantemente iniziando a rientrare ....
Il mio "stato dell'arte" è al momento il mio fondo LFS che può essere visionato su https://www.darwinex.com/darwin/LFS.4.16
Ci tengo a precisare che non mi sto facendo pubblicità ne la faccio per altri ma questo broker inglese ha avuto un'idea veramente geniale e mette in contatto investitori e trader. La mia strategia è quindi monitorata giornalmente e analizzata con loro algoritmi quindi essenzialmente "valuata" nel modo più oggettivo possibile. Tutto questo a suffragio della mia affermazione ... non perdo più denaro ....

xgx

unread,
Jul 1, 2017, 11:41:53 AM7/1/17
to Quelli di BorsAnalisi
Ciao Silvio .... ben risentito...!!!
Rispondo ai tuoi timori:
1 e 2) l'effetto leva è pericoloso solo se tu vuoi renderlo pericoloso. Come ho scritto quasi tutti i broker ti chiedono come margine 2 euro per movimentare 1000 euro ossia il lotto minimo 0.01 di lotto standard. Se tu vendi euro contro dollaro per 0.01 alla quotqzione di 1,00000 per perdere tutti i tuoi 100 euro la quotazione deve arrivare a 1,10000 (massimo storico 1,60000).
Per provare tutti i broker danno la possibilità di aprire un conto demo con soldi finti perfettamente funzionante come fossero veri e la piattaforma Metatrader 4 può tranquillamente essere usata anche per il trading manuale. Ti assicuro che dopo 1 mese la padroneggerai tranquillamente perché ben fatta e molto funzionale. Non a caso è il punto di riferimento per tutto il mondo del trading. La cosa complessa è la scelta del broker e ci sarebbe da parlare per giorni ... se vuoi provare comunque io uso principalmente www.activtrades.it oppure https://tickmill.com/ tutti e due con sede a Londra e regolamentati dalla FCA ovvero l'equivalente britannico della Consob.
3) Per le griglie ti do un ulteriore spunto riflessione:
se crei una grglia come ti ho scritto nel primo post (o anche più piccola) e metti ordini "limit" ovvero come il prezzo raggiunge la prima griglia superiore vendo e come il prezzo raggiunge la prima griglia inferiore compro, se il prezzo nel tempo attraversa tutta la griglia tu ti troverai 5 ordini in vendita e 5 ordini in acquisto con profitto blindato. Prova a fare i conti ....!!!

natale lanza

unread,
Jul 3, 2017, 3:00:16 AM7/3/17
to Quelli di BorsAnalisi
Buongiorno!

Ho scaricato Metatrader ed ho acquistato (fittiziamente) un lotto $ sulla base di una strategia grossolana. Al momento non mi interessa guadagnare, ma acquisire dimestichezza con la piattaforma e "sensibilità" con le variazioni del cambio.

Controindicazioni con un'analoga operatività sul future?

Grazie per l'eventuale risposta e saluti.

Natale

xgx

unread,
Jul 3, 2017, 4:49:48 AM7/3/17
to Quelli di BorsAnalisi
Buongiorno ....
lasciando da parte che mi sento come un tossicodipendente che ha fatto assaggiare una nuova droga ad un altro tossicodipendente .... ritengo che non ci siano particolari controindicazioni per una medesima operatività con i future.
Non so con quale broker hai aperto il conto ma se è uno di quelli da me indicati offrono operatività con i CFD su molti indici e materie prime. C'è solo da stare attenti agli spread o commissioni che possono essere più alti rispetto al Forex.
Per quello che riguarda la Metatrader 4 vedrai che dopo una settimana ti sembrerà di averla usata da sempre. Per non parlare poi dello scrittore di linguaggio Mataquotes che è incorporato e permette di scrivere gli expert advisor. 
Se hai aperto un conto in demo questi di solito sono operativi per 1 mese. Ai primi di agosto avrai sicuramente qualcosa tu da insegnarmi ....!!!!

natale lanza

unread,
Jul 3, 2017, 5:24:43 AM7/3/17
to Quelli di BorsAnalisi
Sto utilizzando la demo di Tickmill. In effetti la piattaforma è molto intuitiva, mentre più complesso mi sembra il linguaggio; con un po' di applicazione ci si può riuscire.

In un mese avrò deciso sicuramente se passare in reale oppure no. Ti terrò aggiornato, IMprobabile "allievo" :-) 

Ciao.

xgx

unread,
Jul 3, 2017, 6:21:30 AM7/3/17
to Quelli di BorsAnalisi
Molto bene Tickmill al momento a mio avviso è il migliore in circolazione. Spread molto bassi e basse commissioni. E' un broker ECN ovvero il tuo ordine passa direttamente a mercato senza mediazione del broker. Il linguaggio non è particolarmente complesso se si hanno dei rudimenti di programmazione. La cosa positiva è che esiste una mole impressionante di documentazione da cui attingere. Basta fare una ricerca con google iniziando con "mql4" e hai solo da scegliere. Inizialmente questo articolo https://www.mql5.com/en/articles/1404 su come si gestiscono gli ordini  mi aiutò molto. Buon lavoro ...!!!

natale lanza

unread,
Jul 3, 2017, 6:43:29 AM7/3/17
to quellidib...@googlegroups.com
Sei preziosissimo. Grazie ancora.

xgx

unread,
Jul 4, 2017, 11:55:06 AM7/4/17
to Quelli di BorsAnalisi
Inserisco un programmino molto semplice di un Expert Advisor che teoricamente dovrebbe inseguire il Trend.
La logica è questa:
- La direzione del primo ordine viene scelta all'avvio del programma (Buy o Sell).
- Il sistema Compra o vende e inserisce ad una distanza sempre stabilita all'avvio un ordine Stop in caso le quotazioni girassero dalla parte opposta.
- Sempre in avvio si può stabilire il numero massimo di ordini aperti per la chiusura di tutte le posizioni oppure una perdita massima o entrambi
- Sempre all'avvio si stabilisce il profitto per la chiusura delle posizioni.
La particolarità del programma (e vi garantisco che c'ho sputato sangue) è che segue il trend ovvero se ho chiuso un Buy in profitto continua con il Buy se invece ho perso pone come primo ordine successivo un Sell.
Questo è solo a scopo didattico per dare una piccola idea delle enormi potenzialità della piattaforma MT4.
NON USATE ASSOLUTAMENTE IL PROGRAMMA CON SOLDI VERI.
L'ho sistemato in 10 minuti dato che è uno dei primi che ho scritto e non sono assolutamente sicuro del fatto che giri correttamente.
//+------------------------------------------------------------------+
//|                                                     UpndDown.mq4 |
//|                                 Copyright 2016, Luigi Giammarini |
//|                                              
//+------------------------------------------------------------------+
#property copyright "Luigi Giammarini"
#property link      ""
#property version   "1.5"
#property strict

extern double CapIniziale  = 100.0; // Capitale Iniziale
extern int  _MagicNumber   = 1010;  // Magic Number
extern double Lot          = 0.01;  // Lotti
extern int PuntiGapStop    = 100;   // Distanza in Pip fra gli ordini
extern bool DBuy           = true;  // se vuole iniziare con Buy true altrimenti false
extern bool DSell          = false; // se vuole iniziare con Sell true altrimenti false
extern int MaxOrdiniClose  = 10;    // Numero massimo di Ordini aperti
extern double Perdita      = 20.0;  // Perdita Massima totale
extern double Utile        = 1.0;   // Utile per chiusura ordini
extern int  MaxSlip        = 0;     // massimo slippage

//------------------------------------ Variabili globali
double _Lot;
double Prezzo=Bid;
double openbuylots=0;
double openselllots=0;
double TotLottiAperti=0;
double      Grid1=0;
double      Grid0=0;
double      Grid_1=0;

int Conto=0;
int MaxOrdiniAperti;

//-------------------------------------

int start()

{  
   
    int _GetLastError = 0;


//----------------------------------------Calcolo Ordini Aperti 

int total = OrdersTotal();
int i=0;
int OpenLongOrders = 0, OpenShortOrders = 0, PendLongs =0, PendShorts =0;
int PendLimitLongs = 0, PendLimitShorts = 0;
 for( i=0;i<total;i++)       
   {
    if (OrderSelect(i, SELECT_BY_POS ))
         {
    if ( OrderSymbol() == Symbol() && OrderMagicNumber() == _MagicNumber)
         {
           int type = OrderType();

if (type == OP_BUY )        {OpenLongOrders=OpenLongOrders+1;}
if (type == OP_SELL )       {OpenShortOrders=OpenShortOrders+1;}
if (type == OP_BUYSTOP )    {PendLongs=PendLongs+1;}
if (type == OP_SELLSTOP )   {PendShorts=PendShorts+1;}
if (type == OP_BUYLIMIT )   {PendLimitLongs=PendLongs+1;}
if (type == OP_SELLLIMIT )  {PendLimitShorts=PendShorts+1;}
  
   }
   }
   }
//--------------------------------calcolo lotti aperti

  openbuylots = 0; 
  openselllots = 0;    //  set the variables to zero
  int iPos=0;
   for(iPos=OrdersTotal()-1; iPos>=0; iPos--)
   if (OrderSelect(iPos,SELECT_BY_POS,MODE_TRADES)
   &&  OrderMagicNumber()==_MagicNumber
   &&  OrderSymbol()     ==Symbol() 
   ){
      if(OrderType()==OP_BUY)     openbuylots  = openbuylots+OrderLots();
      if(OrderType()==OP_SELL)    openselllots = openselllots+OrderLots();
   }   
//--------------------------------CALCOLO PROFITTO PER SIMBOLO
        
         double Profit=0;        

//---------------------------------------------ORDINI APERTI

         for(int cnt=0; cnt<OrdersTotal(); cnt++)
         {
         if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==_MagicNumber) 
         {
         Profit = Profit + OrderProfit();                 
         }
         }
          int TotOrdiniAperti= OpenLongOrders+OpenShortOrders;
         
         
            MaxOrdiniAperti = TotOrdiniAperti;
            TotLottiAperti = openbuylots+openselllots;
             
//--------------------------------------------------- Stringhe per Informazioni
        
         string Profitto=DoubleToString(Profit, 2);
         string MassimoOrdiniAperti=DoubleToString(MaxOrdiniAperti,0);
         string LongAperti=DoubleToString(openbuylots, 2);
         string ShortAperti=DoubleToString(openselllots, 2);
         string LottiAperti=DoubleToString(TotLottiAperti,2);
         string Capitale=DoubleToString(AccountBalance(),2);

//-----------------------------------------------------INFORMAZIONI 
         ObjectsDeleteAll(0, OBJ_LABEL);

//--------------------------------------------------------------------OpenBuy         
         ObjectCreate("Commento2", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Commento2", "LottiBuy",10, "Verdana", Black);
         ObjectSet("Commento2", OBJPROP_CORNER, 1);
         ObjectSet("Commento2", OBJPROP_XDISTANCE, 27);
         ObjectSet("Commento2", OBJPROP_YDISTANCE, 40);         
          
         ObjectCreate("OpenBuy", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("OpenBuy", LongAperti,10, "Verdana", Black);
         ObjectSet("OpenBuy", OBJPROP_CORNER, 1);
         ObjectSet("OpenBuy", OBJPROP_XDISTANCE, 95);
         ObjectSet("OpenBuy", OBJPROP_YDISTANCE, 40);
         
//--------------------------------------------------------------------OpenSell                    
         ObjectCreate("Commento3", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Commento3", "LottiSell",10, "Verdana", Black);
         ObjectSet("Commento3", OBJPROP_CORNER, 1);
         ObjectSet("Commento3", OBJPROP_XDISTANCE, 27);
         ObjectSet("Commento3", OBJPROP_YDISTANCE, 60);
         
         ObjectCreate("OpenSell", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("OpenSell", ShortAperti,10, "Verdana", Black);
         ObjectSet("OpenSell", OBJPROP_CORNER, 1);
         ObjectSet("OpenSell", OBJPROP_XDISTANCE, 95);
         ObjectSet("OpenSell", OBJPROP_YDISTANCE, 60); 
         
//--------------------------------------------------------------------Profitto                    
         ObjectCreate("Commento4", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Commento4", "Profitto",12, "Verdana", Black);
         ObjectSet("Commento4", OBJPROP_CORNER, 1);
         ObjectSet("Commento4", OBJPROP_XDISTANCE, 20);
         ObjectSet("Commento4", OBJPROP_YDISTANCE, 80);
         
         ObjectCreate("Profitto", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Profitto", Profitto,12, "Verdana", Black);
         ObjectSet("Profitto", OBJPROP_CORNER, 1);
         ObjectSet("Profitto", OBJPROP_XDISTANCE, 95);
         ObjectSet("Profitto", OBJPROP_YDISTANCE, 80);
         
//--------------------------------------------------------------------MaxOrdini                    
         ObjectCreate("Commento5", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Commento5", "Aperti",10, "Verdana", Black);
         ObjectSet("Commento5", OBJPROP_CORNER, 1);
         ObjectSet("Commento5", OBJPROP_XDISTANCE, 42);
         ObjectSet("Commento5", OBJPROP_YDISTANCE, 20);
         
         ObjectCreate("Aperti", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Aperti", MassimoOrdiniAperti,10, "Verdana", Black);
         ObjectSet("Aperti", OBJPROP_CORNER, 1);
         ObjectSet("Aperti", OBJPROP_XDISTANCE, 95);
         ObjectSet("Aperti", OBJPROP_YDISTANCE, 20); 
         
//--------------------------------------------------------------------Capitale                   
         ObjectCreate("Commento6", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Commento6", "Capitale",10, "Verdana", Black);
         ObjectSet("Commento6", OBJPROP_CORNER, 1);
         ObjectSet("Commento6", OBJPROP_XDISTANCE, 27);
         ObjectSet("Commento6", OBJPROP_YDISTANCE, 100);
         
         ObjectCreate("Capitale", OBJ_LABEL, 0, 0, 0);
         ObjectSetText("Capitale", Capitale,10, "Verdana", Black);
         ObjectSet("Capitale", OBJPROP_CORNER, 1);
         ObjectSet("Capitale", OBJPROP_XDISTANCE, 95);
         ObjectSet("Capitale", OBJPROP_YDISTANCE, 100);                             
         
          ChartRedraw();
          
//-------------------------------------------------- Inizio Sequenza Ordini (Buy)
               
           if (
               PendLongs==0 &&
               PendShorts==0 &&
               OpenLongOrders==0 &&
               OpenShortOrders==0 &&           
               Conto==0 &&
               DBuy==true             
              )     
              {
        double Base=Bid;
         int PrimoGap=PuntiGapStop;
         int Gap=PuntiGapStop;
              
      Grid0=NormalizeDouble (Base, Digits);     
      Grid1=NormalizeDouble(Grid0+(PrimoGap*Point),Digits);
      Grid_1=NormalizeDouble(Grid0-(PrimoGap*Point),Digits);
      
      Conto=1;
        
        
            }    
     
      if (
          (Close[0] >= Grid0) &&
          (PendLongs==0 && PendShorts==0)&&
          (PendLimitLongs==0 && PendLimitShorts==0) &&
           Conto==1
          )
         { 
    
     if(OrderSend(Symbol(), OP_BUY, Lot, Ask, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }       

     
     if(OrderSend(Symbol(), OP_SELLSTOP, Lot, Grid_1, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }
          }
//+------------------------------------------------------------------Ordini contrapposti
          
         if (
             (Close[0] <= Grid_1)&&
             (PendLimitLongs==0 && PendLimitShorts==0) &&
             (PendLongs==0 && PendShorts==0)&&
             Conto==1
             )
         { 
    
     if(OrderSend(Symbol(), OP_BUYSTOP, Lot  , Grid0, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }       
     
     if(OrderSend(Symbol(), OP_SELL, Lot, Bid, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }
     
         }          
//+------------------------------------------------------------Inizio Sequenza Ordini (Sell)


        if (
               PendLongs==0 &&
               PendShorts==0 &&
               OpenLongOrders==0 &&
               OpenShortOrders==0 &&           
               Conto==0 &&
               DSell==true             
              )     
              {
        double Base=Bid;
         int PrimoGap=PuntiGapStop;
         int Gap=PuntiGapStop;
         int SL=200;
         int TP=0;
        
      
      Grid0=NormalizeDouble (Base, Digits);     
      Grid1=NormalizeDouble(Grid0+(PrimoGap*Point),Digits);
      Grid_1=NormalizeDouble(Grid0-(PrimoGap*Point),Digits);
      
      Conto=2;
        
        
            }    
     
      if (
          (Close[0] >= Grid1) &&
          (PendLongs==0 && PendShorts==0)&&
          (PendLimitLongs==0 && PendLimitShorts==0) &&
          Conto==2
          )
         { 
    
     if(OrderSend(Symbol(), OP_BUY, Lot, Ask, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }       

     
     if(OrderSend(Symbol(), OP_SELLSTOP, Lot, Grid0, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }
     
          }
//+--------------------------------------------------------------Ordini contrapposti
          
         if (
             (Close[0] <= Grid0)&&
             (PendLimitLongs==0 && PendLimitShorts==0) &&
             (PendLongs==0 && PendShorts==0)&&
             Conto==2
             )
         { 
    
     if(OrderSend(Symbol(), OP_BUYSTOP, Lot  , Grid1, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }       
     
     if(OrderSend(Symbol(), OP_SELL, Lot, Bid, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }
         }          
//+------------------------------------------------------------------+
//        CHISURA ORDINI         
//+------------------------------------------------------------------+
         double Stop = Perdita*(Lot*100);
         double Target = Utile*(Lot*100);
         
         if (
            Profit > Target ||
           (OpenLongOrders+OpenShortOrders)>MaxOrdiniClose ||
            Profit < - Stop
            )                       
            {
            
             if (Profit > Target && openbuylots>openselllots)
               {DBuy=true; DSell=false;}
             if (Profit > Target && openselllots>openbuylots)
               {DBuy=false; DSell=true;}
  Conto=0;
 
  int totals = OrdersTotal();
  for(int ii=totals-1;ii>=0;ii--)
  {
    if (OrderSelect(ii, SELECT_BY_POS))
    {
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
      Conto=0;
    
    if(result == false)
    {
      Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
    }
    }   
    
    return(0);
    }
      
    return(0);
     }
 //-------------------------------------------------------------------------- 

Non solo è anche scritto in maniera disordinata e per un purista di programmazione è praticamente un abominio.
Comunque dovrebbe funzionare ....!!!

natale lanza

unread,
Jul 5, 2017, 2:27:59 AM7/5/17
to Quelli di BorsAnalisi
Visto che ti proponi, io ne approfitto :-)

PARAMETRI:

Lotti = 0,01
Ho visto che anche MT 4 consente di operare su frazioni di lotto. Me lo confermi? Fino ad ora ero convinto che 1 lotto intero fosse la quantità minima negoziabile.
Perdita massima totale = 20 (Dovrebbe essere una sorta di stop loss; giusto?)
Utile per chiusura ordini = 1 (Cosa rappresenta? Non mi sembra sia un take profit o sbaglio?)

E veniamo al pratico, a prescindere dall'esempio proposto.
Con quale frequenza opera il metodo che adotti? Mi basta sapere se è infragiornaliero o plurigiornaliero. Capisco che tutto dipende dai livelli che poni, ma mi basta una risposta orientativa, più o meno una media della frequenza.
Io ho cambiato completamente prospettiva rispetto a qualche anno fa. Adesso sono orientato su poche operazioni di durata multigiornaliera. Star dietro all'andamento infragiornaliero comporta uno stress che non posso più permettermi. E, inoltre, mi sono accorto che così facendo il trading diventa molto più redditizio (almeno su Dax ed Eurostoxx).

Ulteriore vantaggio è che non ho necessariamente bisogno di u n programma automatizzato.

A risentirci. Grazie.

Natale






xgx

unread,
Jul 5, 2017, 10:09:58 AM7/5/17
to quellidib...@googlegroups.com
Si confermo che il lotto minimo per gran parte dei broker è 0.01 (sono i broker che lo stabiliscono la MT4 si adegua).
Per i parametri confermo che la Perdita massima totale funziona come stop loss e Utile per chiusura ordini è il take profit.
I parametri sono espressi in valuta (mi accorgo che non è indicato). Tutto è abbastanza chiaro nel pezzo di codice che gestisce la chiusura degli ordini che si attiva al verificarsi di queste condizioni
 if (
           Profit > Target ||
          (OpenLongOrders+OpenShortOrders)>MaxOrdiniClose ||
           Profit < - Stop
           )            
ovvero se il profitto è maggiore del target (il take profit di prima) se il numero totale degli ordini supera il massimo impostato o se si raggiunge lo stop loss.
Il programma ha veramente una funzione esclusivamente "scolastica" e raramente guadagna. La MT4 ha un'egregia funzione di test (View->Stategy Tester) dove in modalità visualizzazione si può controllare "in diretta" come lavora l'expert advisor e soprattutto si verifica la sua efficacia. Il funzionamento non è immediato e quindi è necessario perderci un pò di tempo. Ti assicuro che come si acquisisce familiarità con lo strumento questo diventa essenziale per capire se si sta procedendo per il giusto verso.

Per ciò che concerne la mia strategia dopo innumerevoli test e modifiche di parametri sono arrivato al grafico a 5M ma è assolutamente fuorviante per comprendere il metodo con cui opero. Con i dovuti aggiustamenti ho testato il sistema anche su dati giornalieri e i risultati sono abbastanza soddisfacenti. Molto sul suo funzionamento si riesce a comprendere al link che ho indicato https://www.darwinex.com/darwin/LFS.4.16 dove la strategia è veramente costantemente monitorata. Se perdi un attimo di tempo a vedere tutte le informazioni statistiche che li sono riportate soprattutto quelle relative all'underlying strategy (come la chiamano loro) vedrai che non è poi così complesso intuire a grandi linee la filosofia di fondo del sistema ovvero:
- il prezzo per la maggior parte del tempo non va da nessuna parte
I periodi di trend definito, in particolar modo per le valute, ma vale anche per gli indici, le materie prime ecc.ecc. sono statisticamente di minor durata rispetto ai periodi laterali. Se quindi si riesce a gestire senza troppi danni il periodo di trend e si guadagna nel laterale si porta la statistica dalla propria parte ....
Ci tengo tantissimo a precisare che assolutamente non sono un fenomeno e non me la sto "tirando". Dopo molto lavoro a inizio anno sono riuscito a trovare una quadratura all'idea generale che avevo e per il momento sembra funzionare. Non mi fido assolutamente soprattutto di me stesso (sempre su Darwinex basta vedere il forte drawdown iniziale dovuto all'aver male impostato lo stop loss) e le somme dedicate alla verifica sono molto ma molto basse (con 100 euro si riesce a far girare tranquillamente il micro lotto da 0.01). Ho 2-3 conti demo aperti dove girano somme più elevate di soldi virtuali e da inizio anno sto raccogliendo i dati. A fine 2017 e con dati confortanti ragionevolmente potrò pensare di tentare qualcosa di più serio. ..... mi sono fatto male troppe volte.

riccar...@gmail.com

unread,
Jul 5, 2017, 10:14:14 AM7/5/17
to Quelli di BorsAnalisi
Grazie
È un piacere ascoltarvi e imparare da voi!
Sto cercando di seguire e immaginare una possibile operatività col forex.
Adesso voglio provare a studiare per applicare anche i miei metodi astrociclici alle valute. Cosa che per ora non ho ancora tentato di fare..

natale lanza

unread,
Jul 5, 2017, 11:59:43 AM7/5/17
to Quelli di BorsAnalisi
 
>>I periodi di trend definito, in particolar modo per le valute, ma vale anche per gli indici, le materie prime ecc.ecc. sono statisticamente di minor durata rispetto ai periodi laterali. Se quindi si riesce a gestire senza troppi danni il periodo di trend e si guadagna nel laterale si porta la statistica dalla propria parte ...


Hai centrato il punto, ma la mia visione è un po' più statica. Non voglio star dietro ai movimenti laterali e vado a caccia solo dei trend. Ultimamente sto utilizzando uno schema (abbastanza simile ai cicli, ma diverso in alcuni punti cruciali; quello che ho postato qui qualche giorno fa) profittevole per Eurostoxx e Dax. Vado direttamente sul future Eurostoxx in direzione del trend (attualmente long) e vendo call sul Dax quando il mercato prende fiato.
Sto studiando come applicare lo stesso schema al dollaro, comprando future per il long; non ho ancora deciso se star fuori o vendere future per gli short. In ogni caso, sono in attesa del prossimo segnale dal sistema. Dire future è un po' eccessivo dal momento che, come periodo di test, penso che opererò con un paio di micro-future. Poi si vedrà sia per continuare con le valute e sia per passare eventualmente al mercato cash.

Ti farò sapere.

xgx

unread,
Jul 5, 2017, 4:40:35 PM7/5/17
to Quelli di BorsAnalisi
Sembra interessante. Avevo creato un foglio google che calcolava i cicli sull'eurusd in modo automatico con la regressione trigonometrica ma non ricordo dove l'ho messo ...
Comunque io lascerei perdere i microfuture. Rinunciare all'immensa liquidita' del Forex mi sembra un peccato. Non vorrei che i microfuture (che non conosco) abbiano degli spread improponibili o possano avere problemi di liquidità.
Altro spunto di riflessione:
- la definizione di trend è relativa. Ad esempio un indice che storicamente ha oscillato del 100% (da 100 a 200) e' in trend se in un dato periodo di tempo guadagna o perde il 10% ...? probabilmente la risposta più sensata è forse. Lo è sicuro (in trend) se si muove del 50-60%. Se però si riesce a costruire un sistema profittevole che considera laterale un'oscillazione del 100% quell'indice sarebbe sempre in laterale fino a che rimane nei limiti 100/200.

natale lanza

unread,
Jul 6, 2017, 2:45:17 AM7/6/17
to Quelli di BorsAnalisi



Hai ovviamente ragione su tutto, ma il mio intento è di verificare se e dove aggiustare il tiro.

Per i microfuture gli spread sono normalissimi. In questo momento 1,1381/1,1382. Non so se ci sono altri inconvenienti. E' probabile che siano poco liquidi viste le dimensioni ridotte. Consideriamolo come un giocattolo prima di passare al prodotto più serio: future o cash. Ormai, vista l'età, lo stress è l'ultima cosa che cerco.
Per i trend non mi porrei tanti problemi (peraltro reali) che andrebbero estesi anche a qualunque altro prodotto finanziario. Anche qui, non volendo star lì a stressarmi, voglio osservare solo i movimenti giornalieri. Per il trend principale lascio fare a un qualche tipo di regressione sui valori giornalieri (cfr. immagine allegata). Dentro il mercato nelle  fasi intermedie in direzione del trend, fuori dal mercato (o comunque in atteggiamento passivo) nelle fasi controtrend. Come ho detto, devo verificare se il mio schema pseudo-ciclico sugli indici funziona anche con le divise. Sulla carta funziona; chiaro che i fatti ci smentiscono sempre ma, appunto, bisogna pur provare.

Intanto aspetto il primo segnale che, secondo il mio foglio excel, si farà attendere ancora per qualche giorno.


xgx

unread,
Jul 7, 2017, 4:12:50 AM7/7/17
to Quelli di BorsAnalisi


Il giorno giovedì 6 luglio 2017 08:45:17 UTC+2, natale lanza ha scritto:

 Come ho detto, devo verificare se il mio schema pseudo-ciclico sugli indici funziona anche con le divise. 


Dimmi se ho capito bene il funzionamento degli pseudo-cicli (come li chiami tu).
C'è un momento nel tempo, calcolato sulla base della regressione trigonometrica (con l'aggiunta di altro immagino) in cui tutte le operazioni Long hanno maggiori probabilità di andare in utile rispetto alle operazioni Short e viceversa quando il ciclo si inverte ....?
Se questa mia lettura è corretta una gestione di questo parametro sia preso da solo che in armonia con altri all'interno di una strategia potrebbe tornare veramente utile ....

natale lanza

unread,
Jul 7, 2017, 6:33:16 AM7/7/17
to Quelli di BorsAnalisi
E' esatto con una precisazione: se non vuoi complicarti la vita, puoi ricorrere alla regressione parabolica, realizzabile con un foglio excel e formule semplicissime (una variabile Y e due variabili X, cioè x e x^2). Un'avvertenza è di non farla eccessivamente lunga, perché il trend tende ad adattarsi ANCHE ai dati vecchi, non più significativi.

All'interno, puoi adottare la strategia che preferisci. Come minimo, hai una visione delle oscillazioni (o della successione dei box) migliore che con altre tecniche (almeno, così è per me).

xgx

unread,
Jul 9, 2017, 11:48:40 AM7/9/17
to Quelli di BorsAnalisi
Come detto sopra le risorse disponibili per la Metatrader sono quasi infinite.
Ho fatto una ricerca per parabolic regression e a questo link:
https://www.mql5.com/en/code/8417 e' possibile fare il download dell'indicatore i-Regr.
Dalle istruzioni cambiando il parametro "degrees" passa da regressione lineare a parabolica.
C'e' anche un expert advisor collegato scaricabile ma sembra che non funzioni.
Non ho letto con attenzione il codice ma l'ho attaccato ad un grafico e il suo funzionamento sembra corretto.
Andrebbe verificato con il tuo foglio excel.
Per scaricare l'indicatore .mq4  basta fare clic sul link con l'editor di linguaggio metatrader aperto e il programma lo salva direttamente nella directory /indicator rendendolo quindi disponibile sulla piattaforma previa sua compilazione (tasto compila in alto nel menu). Se i dati che mette a disposizione sono corretti e' poi semplice renderli disponibili all'utilizzo su qualsiasi expert.
Ho fatto poi una ricerca google con "mql4 fourier trigonometric cycle" ed e' uscita fuori una discussione nel forum a questo link https://www.mql5.com/en/forum/178842/page11 che a colpo d'occhio sembra molto interessante e con molto materiale. Peccato che e' in inglese e di 108 pagine. Ci sara' da studiare ....

natale lanza

unread,
Jul 10, 2017, 3:33:56 AM7/10/17
to Quelli di BorsAnalisi



Il grafico superiore, a due incognite, è quello parabolico.
Il grafico inferiore, a tre incognite, è quello polinomiale.
Entrambi i grafici vanno maneggiati con cura perché adattivi, soprattutto il secondo.
Tu hai già un modello di scale trading che funziona. Poiché cavallo vincente non si cambia, la mia opinione è che la regressione polinomiale non faccia al caso tuo. Il grafico parabolico, invece, ti permette di individuare meglio le fasi di trend intermedie, senza forzare troppo.
Per lo stesso motivo (rischio di adattamento fuorviante), non utilizzerei molti dati. Nel grafico ne ho utilizzati 450. Personalmente non vado oltre i 250/300.
La situazione diventa ancora più ingannevole se cambi il parametro della deviazione standard (kstd). Io lo lascerei a due, che mi sembra il più appropriato. Shift "zero" ok!
E veniamo a Fourier, per l'individuazione dei cicli dominanti. Per i miei gusti è poco utile. Ti calcola i cicli che "mediamente" si adattano meglio al mercato. Purtroppo, con quel "mediamente" si fanno pochi quattrini. Personalmente, modificando qualcosina, ne ho ricavato un indicatore che uso in parallelo ad altri tipi di indagine, ma solo come verifica. Di fatto, non lo uso come "ricerca" di cicli (preferirei chiamarli "ritmi" per non fare confusione con altre tecniche), ma lo "costringo" a rendere graficamente visibile quello a cui arrivo empiricamente.

Scusa il tono un po' professorale. Fai conto che abbia parlato a me stesso. Il fatto è che mi sento responsabile per averti messo una pulce nell'orecchio. Tu però l'hai messa a me con la faccenda del dollaro e perciò siamo pari :-)

xgx

unread,
Jul 10, 2017, 10:30:41 AM7/10/17
to quellidib...@googlegroups.com
La pulce l'avevi messa già un paio d'anni fa con il link sui cicli dominanti di Fourier (link ancora presente qui nel forum).
Concordo in pieno con te comunque nel non considerare Fourier attendibile o perlomeno non profittevole.
Per ciò che riguarda l'indicatore i-regr con il parametro a 2 variabili (parabolico) temo che non possa essere un filtro efficiente per la mia strategia come affermi giustamente. Le operazioni che andrebbe a filtrare sono troppe e probabilmente andrebbe a togliere anche gran parte di quelle "buone". Una funzione simile la svolge la media a 200 periodi (per l'individuazione del trend dominante) e ho già verificato che non funziona.
Una cosa che sembra molto interessante è l'individuazione dell'ipercomprato e dell'ipervevnduto che svolgono le due variabili legate alla deviazione standard. I prezzi vengono veramente risucchiati verso la linea centrale della regressione come il limite della stdev viene raggiunto. L'indicatore i-regr supporta fino ad 8 variabili e settato al massimo sembra dare diversi segnali profittevoli.
Rimango perplesso del fatto che all'aumentare della volatilità (misurata con la deviazione standard) l'ampiezza del canale si riduce in maniera considerevole e questo mi sembra contro logica di buon senso. Prova ad attaccare l'indicatore ad un grafico settato a lungo (300-400 periodi) e con degrees a 8 su time frame molto breve. Se esplode la volatilità il canale si riduce moltissimo. Non ho studiato ancora bene le formule utilizzate dall'indicatore e sinceramente non ne ho ancora compreso pienamente la logica. Quella del canale è questa:
//-----------------------------------Std-----------------------------------------------------------------------------------
   sq=0.0;
   for(n=i0;n<=i0+p;n++)
     {
      sq+=MathPow(Close[n]-fx[n],2);
     }
   sq=MathSqrt(sq/(p+1))*kstd;

   for(n=i0;n<=i0+p;n++)
     {
      sqh[n]=fx[n]+sq;
      sql[n]=fx[n]-sq;
     }
e per il momento l'ampiezza di banda (sq) mi rimane ostica.

Se riesco a trovare un pò di tempo preparo un EA con base l'indicatore che vende all'ipercomprato e compra all'ipervenduto.
Lo lasciamo libero qui nel forum e se i test sono positivi cerchiamo di svilupparlo.

natale lanza

unread,
Jul 10, 2017, 2:26:19 PM7/10/17
to quellidib...@googlegroups.com


Non sono sicuro che stiamo dicendo le stesse cose. Io penso che la regressione sia una tecnica troppo adattiva per essere utilizzata operativamente. Quando l'ho tirata fuori (il 6 luglio) era solo per rispondere alla tua giusta obiezione su come individuare un trend. Allora ho postato un grafico che corrisponde a quello parabolico a 200 giorni di MT4. L'intento era di dire che mi sento a mio agio quando opero in direzione di trend. Poiché è mia opinione che la regressione parabolica (purché non molto lunga) sia preferibile alla media mobile per l'individuazione del trend, la mia esigenza è soddisfatta. Si può anche verificare con un grafico in Excel ed aggiungendo "la linea di tendenza": il risultato non cambia.

Devo aggiungere che le mie esperienze di utilizzo delle deviazioni standard per individuare le zone di ipercomprato e ipervenduto sono sempre state disastrose. Sul grafico sono bellissime e sembrano infallibili. Nella realtà, Il sottostante continuava a salire o a scendere e la regressione continuava ad adattarsi. Ci sono stati dei momenti efficaci, questo sì, ma nel complesso ci ho sempre rimesso le penne. Ancora di più si adatta la regressione a tre variabili; figuriamoci poi quella ad 8! 
Tutto quanto detto forse è diverso per le dinamiche del dollaro. Se realizzi un EA, lo seguirò con attenzione.

xgx

unread,
Jul 10, 2017, 6:29:58 PM7/10/17
to Quelli di BorsAnalisi
Molto piu' semplice di quanto immaginassi.
In allegato il file mq4 e di seguito il listato.
//+------------------------------------------------------------------+
//|                                                BA-Regression.mq4 |
//|                            Copyright 2017, Quelli di Borsanalisi |
//|                          http://quellidiborsanalisi.blogspot.it/ |
//+------------------------------------------------------------------+
#property version   "1.0"
#property strict

extern int  _MagicNumber   = 1010;  // Magic Number
extern double Lot          = 0.01;  // Lotti
extern int  MaxSlip        = 0;     // massimo slippage
input  int degree          =3;
input  double kstd         =2.0;
input  int bars            =250;
input  int shift           =0;

//------------------------------------ Variabili globali
double _Lot;
double Prezzo=Bid;
double openbuylots=0;
double openselllots=0;
double TotLottiAperti=0;
double LineaAlta;
double LineaBassa;
double LineaRegressione;
          

int Conto=0;
int MaxOrdiniAperti;

//-------------------------------------

int start()

{  
   
    int _GetLastError = 0;
    
//---------------------------------------- Assegno parametri
int    A=degree;
double B=kstd;
int    C=bars;
int    D=shift;
//-------------------------------------------------- Indicatore

   LineaAlta = iCustom(NULL,0,"i-Regr",A,B,C,D,1,0);
   LineaBassa = iCustom(NULL,0,"i-Regr",A,B,C,D,2,0);
   LineaRegressione = iCustom(NULL,0,"i-Regr",A,B,C,D,0,0);
          
//-------------------------------------------------- Inizio Sequenza Ordini (Buy)
               
           if (
               OpenLongOrders<1 &&
               Close[0] < LineaBassa           
              )     
              {
    
     if(OrderSend(Symbol(), OP_BUY, Lot, Ask, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }       
              }

//+------------------------------------------------------------Inizio Sequenza Ordini (Sell)


        if    (
               OpenShortOrders<1 &&           
               Close[0] > LineaAlta           
              )     
              {
     
     if(OrderSend(Symbol(), OP_SELL, Lot, Bid, MaxSlip , 0.0, 0.0,
           "Buystop",_MagicNumber, 0, Red ) < 0 )
         {
            _GetLastError = GetLastError();
            Alert( "Error OrderSend buy primo № ", _GetLastError );
            return(-1);
         }
              }          
//+------------------------------------------------------------------+
//        CHISURA ORDINI         
//+------------------------------------------------------------------+
        
         
         if (
            (OpenLongOrders  > 0 && Close[0] > LineaRegressione) ||
            (OpenShortOrders > 0 && Close[0] < LineaRegressione) 
            )                       
            {
            
  int totals = OrdersTotal();
  for(int ii=totals-1;ii>=0;ii--)
  {
    if (OrderSelect(ii, SELECT_BY_POS))
    {
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
     
    
    if(result == false)
    {
      Alert("Order " , OrderTicket(), " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
    }
    }   
    
    return(0);
    }
      
    return(0);
     }
 //-------------------------------------------------------------------------- 
poche righe di codice e tutto molto semplice.
Nei parametri dell'EA sono riportati i parametri dell'indicatore (i-Regr) e possono essere modificati a piacimento.
Per vedere come funziona basta far partire il tester (in modalita' visualizzazione meglio) e logicamente attaccare al grafico l'indicatore con gli stessi parametri cosi' da poter verificarne "in diretta" il corretto funzionamento.
Il programma in sostanza vende al superamento della banda alta e compra sotto quella bassa. Chiude l'ordine quando raggiunge la linea di regressione senza alcun tipo di stop o take profit. Logicamente il tutto e' solo un semplice esercizio.
Sono assolutamente d'accordo con te circa l'eccesso di capacita' di adattamento della regressione. Se si prova a far girare l'Expert con un time frame basso (5M) e' assolutamente la prima caratteristica che salta all'occhio ovvero risulta un sistema quasi perfetto per i dati passati e molto meno per quelli attuali. Di certo comunque e' utile per individuare con relativa tranquillita' un trend.
La deviazione standard la considero in assoluto il,parametro piu' importante nell'analisi dei prezzi. Non la uso mai come "segnale" ma nella regolazione di quasi tutte le variabili sensibili.
Il programmino comunque gira bene e mi e' servito per usare per la prima volta la funzione nativa "iCustom" che permette di importare ed utilizzare i dati di qualsiasi indicatore personalizzato senza che il file relativo sia aperto e attaccato al grafico. Non solo, si possono anche modificarne i parametri. Veramente molto utile e quasi "miracoloso".
BA-Regression_1_0.mq4

natale lanza

unread,
Jul 11, 2017, 2:32:29 AM7/11/17
to Quelli di BorsAnalisi
Ok. Sperando di averlo installato correttamente, vediamo che succede.

Buona giornata.

xgx

unread,
Jul 11, 2017, 3:26:20 AM7/11/17
to Quelli di BorsAnalisi
L'expert advisor va salvato sotto l'omonima directory nell'editor di linguaggio e va compilato. La compilazione genera sempre nella stessa directory l'eseguibile con estensione .ex4 che viene reso immediatamente disponibile nella piattaforma. Se non compare basta usare la funzione aggiorna (tasto destro del mouse nel riquadro navigatore).L'indicatore i-regr deve essere presente nella directory /indicator.

natale lanza

unread,
Jul 11, 2017, 3:34:29 AM7/11/17
to Quelli di BorsAnalisi
Sì, credo di averlo installato correttamente. Il problema è che il tester presenta una barra di avanzamento verde (come se stesse scaricando perennemente qualcosa) e mi rallenta il funzionamento del computer.  :-( ??????

xgx

unread,
Jul 11, 2017, 3:46:54 AM7/11/17
to Quelli di BorsAnalisi
Si stai scaricando tutti i dati a disposizione dal 1970 !!!
Devi mettere la spunta alla casella Data Utilizzo e selezionare un periodo relativamente breve (1/2 mesi va bene).
Poi devi allargare il box di visualizzazione strategia (basta fare clic sul bordo superiore e trascinare verso l'alto) e comparirà l'opzione visualizzazione con la barra della celocità di rappresentazione

xgx

unread,
Jul 11, 2017, 5:48:41 AM7/11/17
to quellidib...@googlegroups.com
Sono curioso di sapere se sei riuscito. Non tanto per il programma ma quanto per l'uso del tester di MT4. Se riesci a "giocarci" un pò ti accorgerai dell'estrema utilità della funzione. Se una strategia funziona col tester funziona anche sicuramente in reale. Lo strumento è molto preciso ed è utilissimo per verificare le idee di trading.

natale lanza

unread,
Jul 11, 2017, 6:19:40 AM7/11/17
to Quelli di BorsAnalisi
Ho impostato dall'1 giugno 2017 ad oggi. Però la barra verde rimane. Immagino stia scaricando tutti i dati tick by tick. 

xgx

unread,
Jul 11, 2017, 9:31:55 AM7/11/17
to Quelli di BorsAnalisi
La barra verde in basso ha 2 funzioni di visualizzazione. Come si da lo start carica i dati se non li ha già in archivio e sopra la barra a sinistra compare la scritta " sto adoperando M1 .. o M5 ecc.ecc." poi torna a zero ed inizia il test che può essere visto in diretta selezionando in basso il tab "Grafico" o meglio se si spunta "Visualizzazione" il tester crea una nuova finestra marcata con la scritta "visual" dove è possibile vedere il susseguirsi delle barre con i vari ordini

natale lanza

unread,
Jul 11, 2017, 9:39:40 AM7/11/17
to Quelli di BorsAnalisi
Allora è tutto a posto. Grazie.

xgx

unread,
Jul 11, 2017, 9:49:03 AM7/11/17
to Quelli di BorsAnalisi
Comunque questo qui sotto è il grafico del test su eurusd timeframe 5Minuti con parametri 2(parabolica) 2 stdev a 250 periodi dal 1 febbraio al 2 luglio. Miracolosamente guadagna ...!!!!

natale lanza

unread,
Jul 11, 2017, 10:27:28 AM7/11/17
to Quelli di BorsAnalisi



Questo è il report su un lotto con base oraria dall'1/1 a oggi. Non è un gran guadagno, ma merita due osservazioni:

1) ho imparato come funziona l'expert advisor;
2) ci si può lavorare sopra.

xgx

unread,
Jul 11, 2017, 10:41:09 AM7/11/17
to Quelli di BorsAnalisi
Beh siamo a circa un 40% a 7 mesi con un drawdown relativamente non eccessivo. Se consideriamo la semplicità estrema delle condizioni direi che la base per lavorare c'è.
Il tab alla destra del grafico "rapporto" fa la sintesi delle operazioni e le analizza statisticamente. 
Se poi si lavora sull'ottimizzazione (casella di spunta a destra sotto il timeframe e lo spread) c'è la possibilità di testarlo con diversi parametri e confrontarne i risultati.

natale lanza

unread,
Jul 11, 2017, 12:24:42 PM7/11/17
to Quelli di BorsAnalisi
E certo! Avevo letto le cifre finali, senza accorgermi che eravamo passati dai 10.000 ai 14.000. La musica cambia completamente!
Reply all
Reply to author
Forward
0 new messages