Date post: | 27-Jan-2017 |
Category: |
Education |
Upload: | stefano-gianti |
View: | 337 times |
Download: | 2 times |
Metatrader 4Brevi cenni storici e funzionamento
http://mql4academy.blogspot.it/
Sviluppata da MetaQuotes Software2002 : partenza del progetto Metatrader. 2005: Sviluppo e primo rilascio di MetaTrader 4.Dal 2007 al 2010: sempre più brokers aggiungono la MT4 come alternativa opzionale alle piattaforme già esistenti. La rapida diffusione provoca l’esplosione di codici e di EA, sia freeware che a pagamento.Ottobre 2009: codifica della MetaTrader 5 in public beta testing.Settembre 2010: viene rilasciata la prima MT5.2013 e 2014: linguaggio MQL4 completamente rivisto, raggiungendo il livello di MQL5. Dalla build 600, MQL4 and MQL5 usano un MetaEditor unificato e comune.
http://mql4academy.blogspot.it/
Sviluppato per ambiente Windows, anche in Linux e su Mac (Wine o WineBottler, oppure in machine virtuali windows)
iOS o Android
il cuore del Sistema, serve per soddisfare le richieste dei client (quotazioni, ordini, news, ecc.), mantiene gli archivi, non ha interfaccia separata.
http://mql4academy.blogspot.it/
Prodotti di tradingIl focus è il margin trading, che permette di lavorare a leva. Mercati: Forex, CFD, equities, commodities, ecc.Timeframe: 1 m, 5 m, 15m, 30m, 1h, 4h, 1D, 1W, 1M. Possibili altri timeframe, ma solo con l’uso di indicatori appositi che aggregano le candele presentate nei timeframe di default.Grafici: a barre, a candele, a linea. Altri tipi possibili ma solo con aggiunta di scripts.
http://mql4academy.blogspot.it/
Linguaggio MQL4Brevi cenni storici e funzionamento
http://mql4academy.blogspot.it/
Come vengono indicizzate le barreLa barra 0 è quella in corso, non ancora finita.
La barra precedente è la barra 1, la barra prima ancora è la 2, e così via
http://mql4academy.blogspot.it/
Barre e vettori sono la stessa cosa, o no?datetime TimeAsSeries[];//--- set access to the array like to a timeseries ArraySetAsSeries(TimeAsSeries,true);
datetime ArrayNotSeries[]; ArraySetAsSeries(ArrayNotSeries,false);
http://mql4academy.blogspot.it/
Expert Advisor: Supertrend
Ovvero come si costruisce un trading system, test ed errori compresi
http://mql4academy.blogspot.it/
Idea di fondo: SupertrendSi trova l’indicatore e si comincia a costruire il trading system
14 – 2
10 – 1.7
http://mql4academy.blogspot.it/
Idea di fondo: Supertrend – 15min
Prime difficoltà:
14 – 2
10 – 1.7
http://mql4academy.blogspot.it/
Continuano le difficoltà…
21 – 2.5
50 – 2,5
http://mql4academy.blogspot.it/
Va bene, capito, metto filtri e ritesto il sistema….Aggiungo un trailing stop con il SAR, le entrate le lascio al supertrend, e ci metto pure delle Bollinger bands per uscite “di emergenza”, nel caso la volatilità esploda e il prezzo si muova in modo contrario… ritesto… riottimizzo… il Massimo che ottengo è questo!
Verrebbe voglia di buttare tutto… Potrei però usarlo in modo opposto… Ma questa è un’altra storia…
Mi resta solo da testarlo su altri timeframes e vedere cosa succede, prima di buttare tutto e accettare la sconfitta…
http://mql4academy.blogspot.it/
TF = 30MQualcosa c’è stavolta
60 - 2
http://mql4academy.blogspot.it/
Cambio: TF = H1, meglio ancora
Dopo un po’ di ottimizzazioni finalmente si raggiunge qualcosa che abbia sensoper il trading system:
Ulteriormente ottimizzabile, ma timore di sovraottimizzare presente…
Perché scelti questi parametri?
http://mql4academy.blogspot.it/
5 - 3
http://mql4academy.blogspot.it/
TF = H4
http://mql4academy.blogspot.it/
http://mql4academy.blogspot.it/
http://mql4academy.blogspot.it/
Expert Advisor: In-OutRisultati
http://mql4academy.blogspot.it/
Inside Bar(Harami) Outside Bar
(Engulfing)
http://mql4academy.blogspot.it/
INSIDE = high1 < high2 AND low1 > low2; //inside conditionOUTSIDE = high1 > high2 AND low1 < low2; //outside conditionLongStopEntry = Max(high2, high1); //define a long order price ShortStopEntry = Max(low2, low1); //define a short order price
If ( OUTSIDE == true) Long & Short pending// Pending order LongticketL = OrderOpen(Symbol(), OP_BUYSTOP, Lots, LongStopEntry, iSlipp, buySL, buyTP, "Pending Long", MagicNumber, _ExpDate, Blue);// Pending order Short ticketS = OrderOpen(Symbol(),OP_SELLSTOP, Lots, ShortStopEntry, iSlipp, sellSL, sellTP, "Pending Short", MagicNumber, _ExpDate, Blue);
Logica di funzionamento if( INSIDE == true) Long & Short pending// Pending order LongticketL = OrderOpen(Symbol(), OP_BUYSTOP, Lots, LongStopEntry, iSlipp, buySL, buyTP, "Pending Long", MagicNumber, _ExpDate, Blue);// Pending order Short ticketS = OrderOpen(Symbol(),OP_SELLSTOP, Lots, ShortStopEntry, iSlipp, sellSL, sellTP, "Pending Short", MagicNumber, _ExpDate, Blue);
http://mql4academy.blogspot.it/
http://mql4academy.blogspot.it/
Logica di funzionamento
Chiusure trades
Stop lossFisso con parametro
Trailing stop•If Long: move stop on previous candle low•If Short: move stop on previous candle high
Tante piccole perdite, pochi grandi guadagni!!!
In modo discrezionale sarebbe difficile da reggere psicologicamente, in modo automatico dobbiamo solo lasciare andare
http://mql4academy.blogspot.it/
EURUSD TF = Daily
http://mql4academy.blogspot.it/
http://mql4academy.blogspot.it/
EURUSD TF = Daily
http://mql4academy.blogspot.it/
TF = 30M
http://mql4academy.blogspot.it/
TF = 30M
http://mql4academy.blogspot.it/
TF = 15M
http://mql4academy.blogspot.it/
EURAUDTF = H4
http://mql4academy.blogspot.it/
Expert Advisor: BollingerBO
Risultati
http://mql4academy.blogspot.it/
Logica dell’EA
http://mql4academy.blogspot.it/
Logica dell’EA
double lotTradeSize(){int Digit_Factor = 1; double equity = AccountBalance(); //How to use the Lotsize and Lotstep values below to adjust //the tradesize for different brokers automatically? double lotSize = MarketInfo(Symbol(),MODE_LOTSIZE); double lotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
double One_Tick = MarketInfo(Symbol(),MODE_TICKVALUE) * Digit_Factor; double MaxLot = MarketInfo(Symbol(), MODE_MAXLOT); double MinLot = MarketInfo(Symbol(),MODE_MINLOT); double spread = Ask - Bid; double Risk_In_Money = ((Stop_Diff+spread)/Point/Digit_Factor) * One_Tick; double DeltaValuePerLot = MarketInfo(Symbol(), MODE_TICKVALUE) / MarketInfo(Symbol(), MODE_TICKSIZE); // %risk = $ loss >>> SL = allowed volume double tradesize = ( (equity * Percent/100) / Risk_In_Money) * DeltaValuePerLot; tradesize = MathFloor( MathMax( 0, tradesize ) / lotStep) * lotStep; if (tradesize > MaxLot) tradesize = MaxLot; if (tradesize < MinLot) tradesize = MinLot; //Alert("Tradesize: ", tradesize," - At risk : €",DoubleToStr(Stop_Diff*tradesize,2)); return (tradesize);}
Lotti non costantiUna volta deciso quale percentuale del totale mettere a rischio, l’EA calcola i massimi lotti possibili sulla base dello
stoploss impostato.
Esempio:Conto = 10.000 euro
5% a rischio = € 500 ogni tradeSe lavorassimo con 1 lotto std di
EURUSD (100.000), il valore di ogni pip sarebbe di € 8.93, per cui se avessimo
uno stop a 40 pip il massimo numero di lotti sarebbe:
500/(40*8,93) = 1,4 lotti (1,399)
http://mql4academy.blogspot.it/
TF = 30M
http://mql4academy.blogspot.it/
Expert Advisor: MACloud
Risultati
http://mql4academy.blogspot.it/
Logica dell’EA
http://mql4academy.blogspot.it/
Semplice stop & reverse della
posizione
Lavora in apertura di barra successiva
no SL, no TP
Logica dell’EA
http://mql4academy.blogspot.it/
if (C[1] > MA1[1] && C[1] > MA2[1]) TrendNow = 1;else if (C[1] < MA1[1] && C[1] < MA2[1]) TrendNow = -1;else TrendNow = 0;
if (TrendNow > 0) res = OrderOpenF(Symbol(), OP_BUY, Lots, Ask, Slip, 0, 0, "OpenLong", MagicNumber, NULL, Blue);else if (TrendNow < 0) res = OrderOpenF(Symbol(), OP_SELL, Lots, Bid, Slip, 0, 0, "OpenShort", MagicNumber, NULL, Red);
Risultati – AUDUSD (30 min)
http://mql4academy.blogspot.it/
Estremi medie: 25 – 40, exp
Risultati – AUDUSD (30 min)
http://mql4academy.blogspot.it/
Risultati – #DE30 (30 min)
http://mql4academy.blogspot.it/
Risultati – EURUSD(H4)
http://mql4academy.blogspot.it/
Expert Advisor: TimeSeriesForecast
Risultati
http://mql4academy.blogspot.it/
Logica dell’EA
http://mql4academy.blogspot.it/
Semplice stop & reverse della
posizione
Lavora in apertura di barra successiva
no SL, no TP
Logica dell’EA
http://mql4academy.blogspot.it/
if ( iClose(Symbol(), Period(), 1) > TSF[1] && TSF[1] > TSF[2] && TSF[2] <= TSF[3] && ShortOpenOrders == 0) Long
if ( iClose(Symbol(), Period(), 1) < TSF[1] && TSF[1] < TSF[2] && TSF[2] >= TSF[3] && LongOpenOrders == 0) Short
var0 = TimeSeriesForecast( Length, BarsPlus ) ;condition1 = Close > var0 and var0 > var0[1] and var0[1] <= var0[2] ;if condition1 then sellshort next bar at marketelsebegincondition1 = Close < var0 and var0 < var0[1] and var0[1] >= var0[2] ;if condition1 then buy next bar at market;end;
Ottimizzazione GBPUSD H1 - da 1/1/15 a 30/9/15 (IS)
http://mql4academy.blogspot.it/
Parametri: Length = 12 – BarPlus = 10
Ottimizzazione GBPUSD H1 - da 1/10/15 a 2/3/16 (00S)
http://mql4academy.blogspot.it/
Parametri: Length = 12 – BarPlus = 10
EURUSD H1 - da 1/10/15 a 2/3/16 (00S)
http://mql4academy.blogspot.it/
Parametri: Length = 12 – BarPlus = 10Stessi parametri di prima!
Risultati – #DE30 (15 min)
Parametri: 14-12
http://mql4academy.blogspot.it/
Vi ringrazio per l’attenzione
http://mql4academy.blogspot.it/