Download - Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Transcript
Page 1: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

www.sapienzafinanziaria.com

Corso Sapienza Trading Automatico

la formazione finanziaria è il miglior investimento per il tuo domani

Page 2: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Coaching n. 3 Edizione marzo 2015

Ordini, altre funzioni custom ed errori comuni

www.sapienzafinanziaria.com

Page 3: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• Conoscere le funzioni per gestire le operazioni di trading

• Creare una funzione per verificare i livelli di ingresso a mercato e stoploss

• Creare una funzione per il calcolo del size

Obiettivi di questa coaching

Page 4: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

I tipi di ordine

Tipo Ordine Prezzo Apertura Prezzo chiusura

Buy Ask Bid

Sell Bid Ask

Page 5: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

I tipi di ordine

Tipo Ordine Prezzo apertura ordine pendente Trasformazione da ordine pendente a ordine effettivo

Buy Stop Sopra il prezzo Ask corrente Il prezzo Ask raggiunge il prezzo di apertura ordine

Buy Limit Sotto il prezzo Ask corrente Il prezzo Ask raggiunge il prezzo di apertura ordine

Sell Stop Sotto il prezzo Bid corrente Il prezzo Bid raggiunge il prezzo di apertura ordine

Sell Limit Sopra il prezzo Bid corrente Il prezzo Bid raggiunge il prezzo di apertura ordine

Page 6: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• int OrdersTotal()

• bool OrderSelect( int index, int select, int pool )

Funzioni di trading

//Selezione di un ordine attivo usando il suo indice OrderSelect(12, SELECT_BY_POS); OrderSelect{14, SELECT_BY_POS, MODE_TRADES); //Selezione di un ordine storico usando il suo indice OrderSelect (2, SELECT_BY_POS, MODE_HISTORY) ; //Selezione di un ordine attivo usando il suo ticket OrderSelect(41926833, SELECT_BY_TICKET); //Ciclo per selezione degli ordini attivi usando i loro indici for(int i=0; i<OrdersTotal() ; i++) { OrderSelect(i, SELECT_BY_POS); //fai qualcosa }

Page 7: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• bool OrderClose(int ticket, double lots, double price, int slippage, color

arrow_color)

• bool OrderDelete( int ticket, color arrow_color )

• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss,

double takeprofit, string comment, int magic, datetime expiration, color arrow_color)

• bool OrderModify(int ticket, double price, double stoploss, double takeprofit, datetime

expiration, color arrow_color)

Funzioni di trading

Page 8: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• int OrderTicket()

• int OrderMagicNumber()

• int OrderType()

• string OrderSymbol()

• double OrderOpenPrice()

• double OrderStopLoss()

• double OrderTakeProfit()

• double OrderLots()

• double OrderProfit()

Funzioni di trading

Page 9: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di conteggio ordini

Page 10: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di conteggio ordini

int CountOrders(int tipo,int NumeroMagico) { int result; int OrderCount=0; for(int i=0;i<OrdersTotal();i++) { result=OrderSelect(i,SELECT_BY_POS); if(OrderMagicNumber()==NumeroMagico && OrderSymbol()==Symbol() && OrderType()==tipo) { OrderCount++; } } return(OrderCount); }

Page 11: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di chiusura ordini

Page 12: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di chiusura ordini

void CloseOrder(int tipo,int NumeroMagico) { int result; int slippage_points =5; for(int i=0;i<OrdersTotal();i++){ result=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(tipo==OP_BUY && OrderType()==OP_BUY){ if(OrderSymbol()==Symbol() && OrderMagicNumber()==NumeroMagico) { RefreshRates(); while(IsTradeContextBusy()) { Sleep(10); } result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage_points,Magenta); } } if(tipo==OP_SELL && OrderType()==OP_SELL) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==NumeroMagico) { RefreshRates(); while(IsTradeContextBusy()) { Sleep(10); } result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage_points,Magenta); } } }//fine istruzione for }// fine funzione CloseOrder

Page 13: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• bool SendNotification(…)

• bool SendMail( string oggetto, string testo mail)

Le funzioni comuni

SendNotification (“Trading signal :”+Close[1]);

SendMail (“EA xyz”,“Trading signal :”+Close[1]);

Page 14: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

• double Marketlnfo(string symbol, int tipo)

Funzioni di interrogazione mercato

tipo valore descrizione

MODE_LOW 1 Livello di prezzo minimo di giornata

MODE_HIGH 2 Livello di prezzo massimo di giornata

MODE_TIME 5 Orario dell’ultima quotazione (Tick) ricevuta (ultimo orario comunicato dal server del brocker)

MODE_BID 9 Ultima quotazione di prezzo BID (offerta) ricevuta

MODE_ASK 10 Ultima quotazione di prezzo ASK (richiesta) ricevuta

MODE_POINT 11 Valore di un punto nella quotazione di un dato strumento

MODE_DIGITS 12 Numero di Digits dopo il punto decimale della quotazione di uno stumento finanziario

MODE_SPREAD 13 Valore dello Spread in punti

MODE_STOPLEVEL 14 Valore dello StopLevel in punti (distanza minima tra prezzo di ingresso e stoploss)

MODE_LOTSIZE 15 Dimensione di un contratto (Lotto) espressa nella valuta base dello strumento di trading

MODE_TICKVALUE 16 Valore del Tick di prezzo espresso nella valuta del proprio conto trading (se il conto è in EURO questo valore sarà

EURO)

MODE_TICKSIZE 17 Fornisce a dimensione del Tick nella quotazione di un dato strumento (da quanti Tick è formato un punto di

prezzo)

MODE_MINLOT 23 Minimo valore di volume ammesso per una operazione singola (in lotti)

MODE_LOTSTEP 24 Step minimo di variazione del volume di una operazione (in lotti)

MODE_MAXLOT 25 Massimo valore di volume ammesso per una operazione singola (in lotti)

Comment (MarketInfo(NULL, MODE_SPREAD) );

Page 15: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di Verifica Stoplevel

Page 16: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

double Verifica_StopLevel(double PrezzoRiferimento, double PrezzoControllo){ double NR_PUNTI_DIFF=MathAbs(PrezzoRiferimento-PrezzoControllo)/MarketInfo(Symbol(),MODE_POINT); double NR_PUNTI_STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL); if( NR_PUNTI_DIFF > (NR_PUNTI_STOPLEVEL+1)) { return (PrezzoControllo); }else{ double STOPLEVEL_REALE =( MarketInfo(Symbol(),MODE_STOPLEVEL)+1 )*Point; double NuovoPrezzoControllo; if(PrezzoRiferimento>PrezzoControllo) { NuovoPrezzoControllo=NormalizeDouble((PrezzoRiferimento-STOPLEVEL_REALE),Digits); }else{ NuovoPrezzoControllo=NormalizeDouble((PrezzoRiferimento+STOPLEVEL_REALE),Digits); } return (NuovoPrezzoControllo); } }

Funzione di Verifica Stoplevel

Page 17: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Funzione di Money Management

Page 18: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

L’identificatore di una variabile coincide con una parola riservata

Caratteri speciali nei nomi di variabili e funzioni

Gli errori più comuni di compilazione

Page 19: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Sintassi non corretta

Funzioni che non restituiscono nessun risultato (eccetto le void)

Gli errori più comuni di compilazione

Page 20: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Errore Zero Divide

Uso di 0 al posto di NULL

In questo caso non viene dato nessun errore però l’EA manifesta comportamenti anomali

Gli errori più comuni di esecuzione

Page 21: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

errori strani dovuti ad una serie storica non di buona qualità

impostazione errata di SL/TP oppure SL/TP inferiore a STOPLEVEL

impostazione errata volume operazione

errore di requote nell'istruzione OrderSend()

Troppi ordini pendenti

Gli errori più comuni in real time 2 ERR_COMMON_ERROR

0 ERR_NO_ERROR

129 ERR_INVALID_PRICE

130 ERR_INVALID_STOPS

131 ERR_INVALID_TRADE_VOLUME

138 ERR_REQUOTE

148 ERR_TRADE_TOO_MANY_ORDERS

Page 22: Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment,

Ora siamo in possesso di tutti gli elementi di MQL necessari per poter tradurre in codice una qualsiasi strategia.

Da qui in poi assumerà una grande importanza la capacità di ciascuno di noi a costruire una valida logica attorno alla nostra strategia mettendo assieme le cose fin qui apprese.

Le prossime lezioni saranno dedicate alla costruzione di strategie automatiche mediante la programmazione MQL.

Conclusioni