Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double...

of 22 /22
www.sapienzafinanziaria.com Corso Sapienza Trading Automatico la formazione finanziaria è il miglior investimento per il tuo domani

Embed Size (px)

Transcript of Corso Sapienza Trading Automatico - Amazon S3...• int OrderSend(string symbol, int cmd, double...

  • www.sapienzafinanziaria.com

    Corso Sapienza Trading Automatico

    la formazione finanziaria è il miglior investimento per il tuo domani

  • Coaching n. 3 Edizione marzo 2015

    Ordini, altre funzioni custom ed errori comuni

    www.sapienzafinanziaria.com

  • • 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

  • I tipi di ordine

    Tipo Ordine Prezzo Apertura Prezzo chiusura

    Buy Ask Bid

    Sell Bid Ask

  • 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

  • • 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

  • • 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

  • • int OrderTicket()

    • int OrderMagicNumber()

    • int OrderType()

    • string OrderSymbol()

    • double OrderOpenPrice()

    • double OrderStopLoss()

    • double OrderTakeProfit()

    • double OrderLots()

    • double OrderProfit()

    Funzioni di trading

  • Funzione di conteggio ordini

  • Funzione di conteggio ordini

    int CountOrders(int tipo,int NumeroMagico) { int result; int OrderCount=0; for(int i=0;i

  • Funzione di chiusura ordini

  • Funzione di chiusura ordini

    void CloseOrder(int tipo,int NumeroMagico) { int result; int slippage_points =5; for(int i=0;i

  • • bool SendNotification(…)

    • bool SendMail( string oggetto, string testo mail)

    Le funzioni comuni

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

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

  • • 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) );

  • Funzione di Verifica Stoplevel

  • 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

  • Funzione di Money Management

  • L’identificatore di una variabile coincide con una parola riservata

    Caratteri speciali nei nomi di variabili e funzioni

    Gli errori più comuni di compilazione

  • Sintassi non corretta

    Funzioni che non restituiscono nessun risultato (eccetto le void)

    Gli errori più comuni di compilazione

  • 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

  • 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

  • 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