Announcement

Collapse
No announcement yet.

EA non apre posizioni

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Gino2000
    replied
    Originally posted by senapazio View Post

    Comunque il tizio alla fine del video non prova la strategia, quindi non verifica se tutto funziona. In più nei commenti youtube si legge che chi ha provato riceve errori nel provare il codice che descrive lui.
    Se intendi la strategia descritta in questo video https://www.youtube.com/watch?v=iNFF2wn_kgc , il codice è scaricabile e a me funziona senza problemi. In ogni caso io sono neofita e sicuramente qualcosa mi sfugge. In ogni caso grazie per il tuo supporto.

    Leave a comment:


  • senapazio
    replied
    Originally posted by Gino2000 View Post

    Grazie per la tua risposta, proprio quel video ho preso come spunto e prevede 2 condizioni nel codice if.
    Comunque il tizio alla fine del video non prova la strategia, quindi non verifica se tutto funziona. In più nei commenti youtube si legge che chi ha provato riceve errori nel provare il codice che descrive lui.

    Leave a comment:


  • Gino2000
    replied
    Originally posted by senapazio View Post

    scusami, ho forse scritto una sciocchezza. E' più probabile che l'errore stia in questi if

    PHP Code:
    {
    OrderSelect(Ticket,SELECT_BY_TICKETMODE_TRADES);
    if((
    OrderCloseTime() == 0) && (OrderType() == OP_SELL))
    {
    OrderClose(OrderTicket (),OrderLots(),Ask,1,clrMagenta);
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }
    else if (
    OrderCloseTime() != 0)
    {
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }


    non ho mai considerato di usare la OrderCloseTime() in questi contesti, prova a toglierla dalla seconda condizione

    PHP Code:
    {
    OrderSelect(Ticket,SELECT_BY_TICKETMODE_TRADES);
    if((
    OrderCloseTime() == 0) && (OrderType() == OP_SELL))
    {
    OrderClose(OrderTicket (),OrderLots(),Ask,1,clrMagenta);
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }
    else
    {
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }


    Grazie per la tua risposta, purtroppo non funziona...

    Leave a comment:


  • Gino2000
    replied
    Originally posted by senapazio View Post

    dovresti mettere una sola condizione per definire un incrocio in maniera corretta

    tipo
    PHP Code:
    if (media_veloce_vecchia media_lenta_vecchia
    sarebbe piu' corretto utilizzare un IF per ciascuna condizione, giusto ?
    Grazie.

    Leave a comment:


  • Gino2000
    replied
    Originally posted by umbertosm View Post
    ciao Gino, ci sono molti tutorial gratuiti su Internet, anche in italiano, prova a vedere ad esempio questo qui, in cui spiega l'incrocio dell medie: https://www.youtube.com/watch?v=iNFF2wn_kgc
    Grazie per la tua risposta, proprio quel video ho preso come spunto e prevede 2 condizioni nel codice if.

    Leave a comment:


  • senapazio
    replied
    Originally posted by Gino2000 View Post
    senapazio Grazie mille per la tua rapida risposta, ho provato anche ad aumentare i periodi di riferimento delle medie mobili ma il risultato non cambia ...
    scusami, ho forse scritto una sciocchezza. E' più probabile che l'errore stia in questi if

    PHP Code:
    {
    OrderSelect(Ticket,SELECT_BY_TICKETMODE_TRADES);
    if((
    OrderCloseTime() == 0) && (OrderType() == OP_SELL))
    {
        
    OrderClose(OrderTicket (),OrderLots(),Ask,1,clrMagenta);
        
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }
    else if (
    OrderCloseTime() != 0)
    {
        
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }


    non ho mai considerato di usare la OrderCloseTime() in questi contesti, prova a toglierla dalla seconda condizione

    PHP Code:
    {
    OrderSelect(Ticket,SELECT_BY_TICKETMODE_TRADES);
    if((
    OrderCloseTime() == 0) && (OrderType() == OP_SELL))
    {
        
    OrderClose(OrderTicket (),OrderLots(),Ask,1,clrMagenta);
        
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }
    else
    {
        
    TicketOrderSend(Symbol(),OP_BUY1Ask0NULLNULLNULL123456,0clrGreen);
    }


    Last edited by senapazio; 06-12-2020, 13:10.

    Leave a comment:


  • umbertosm
    replied
    ciao Gino, ci sono molti tutorial gratuiti su Internet, anche in italiano, prova a vedere ad esempio questo qui, in cui spiega l'incrocio dell medie: https://www.youtube.com/watch?v=iNFF2wn_kgc

    Leave a comment:


  • Gino2000
    replied
    senapazio Grazie mille per la tua rapida risposta, ho provato anche ad aumentare i periodi di riferimento delle medie mobili ma il risultato non cambia ...

    Leave a comment:


  • senapazio
    replied
    Ciao Gino2000,
    così ad occhio ti dico che difficilmente puoi ottenere quel genere di incrocio medie nello "spazio di due candele".
    Nel dettaglio:
    PHP Code:
    if ((media_veloce_vecchia media_lenta_vecchia)&& (media_veloce_nuova media_lenta_nuova)) 
    In questa riga hai definito un doppio incrocio.

    Leave a comment:


  • Gino2000
    started a topic EA non apre posizioni

    EA non apre posizioni

    Buongiorno,
    sono un neofita del linguaggio MQL4 e del trading.
    Non ho esperienza come programmatore, salvo esperienze minime.
    Sto studiando da diversi mesi su libri e webinar.
    Sono nuovo di questo forum quindi spero di scrivere questo post nel modo corretto.
    Ho scritto un expert che riporto sotto.
    MT4 non mi da errori in fase di compilazione, però se faccio "girare" l'EA (in backtest) , questo non apre posizioni.
    Potete darmi qualche suggerimento ?
    Per il momento l'EA è impostato solo per ordini Long, in un secondo momento sistemerò anche la parte per gli ordini Short.
    Allego copia del file per semplicità.
    Grazie.

    //+------------------------------------------------------------------+
    //| Expert initialization function |
    //+------------------------------------------------------------------+


    int OnInit()
    {
    //---

    //---
    return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    //---

    }
    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+


    void OnTick()
    {

    if(OrdersTotal() == 0){
    Apri_BUY ();
    Chiudi_BUY ();
    Comment ("prezzo chiusura ultima candela " , Prezzo_chiusura_BUY_recente, "\n SMA 10 Periodi: ", SMA10_corrente);

    }

    }

    //++++++++++++++++
    int Ticket=0;
    double media_veloce_vecchia = iMA(Symbol(),PERIOD_CURRENT ,10, 0,MODE_SMA, PRICE_CLOSE,2); //EMA 10 periodi su 2 candele fa;
    double media_veloce_nuova = iMA(Symbol(),PERIOD_CURRENT ,10, 0,MODE_SMA, PRICE_CLOSE,1); //EMA 10 periodi su 1 candele fa;
    double media_lenta_vecchia = iMA(Symbol(),PERIOD_CURRENT ,50, 0,MODE_SMA, PRICE_CLOSE,2); //EMA 50 periodi su 2 candele fa;
    double media_lenta_nuova = iMA(Symbol(),PERIOD_CURRENT ,50, 0,MODE_SMA, PRICE_CLOSE,1); //EMA 50 periodi su 1 candele fa;
    int val_index_recente=iClose (Symbol(),PERIOD_CURRENT,-1);
    int val_index_passato=iClose (Symbol(),PERIOD_CURRENT,-2);
    double Prezzo_chiusura_BUY_recente = Close [val_index_recente];
    double Prezzo_chiusura_BUY_passato = Close [val_index_recente];
    double SMA10_corrente = iMA(Symbol(),PERIOD_CURRENT ,10, 0,MODE_SMA, PRICE_CLOSE,0);

    //+++++++++++++++

    void Apri_BUY () {

    if ((media_veloce_vecchia < media_lenta_vecchia)&& (media_veloce_nuova > media_lenta_nuova))
    {
    OrderSelect(Ticket,SELECT_BY_TICKET, MODE_TRADES);
    if((OrderCloseTime() == 0) && (OrderType() == OP_SELL))
    {
    OrderClose(OrderTicket (),OrderLots(),Ask,1,clrMagenta);
    Ticket= OrderSend(Symbol(),OP_BUY, 1, Ask, 0, NULL, NULL, NULL, 123456,0, clrGreen);
    }
    else if (OrderCloseTime() != 0) {
    Ticket= OrderSend(Symbol(),OP_BUY, 1, Ask, 0, NULL, NULL, NULL, 123456,0, clrGreen);}

    }

    }

    void Chiudi_BUY () {
    if ((Prezzo_chiusura_BUY_recente < SMA10_corrente) &&
    (Prezzo_chiusura_BUY_passato >= SMA10_corrente)); { //se il prezzo incrocia la media veloce corrente
    OrderSelect(Ticket,SELECT_BY_TICKET, MODE_TRADES);
    if((OrderCloseTime() == 0) && (OrderType() == OP_BUY))
    {
    OrderClose(OrderTicket (),OrderLots(),Bid,1,clrBeige);
    }

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

    Attached Files
Working...
X