Come codificare? - pagina 341

 

Qualcuno può essere così gentile da aiutarmi a risolvere questo problema:

C'è un problema con il codice che ho allegato sotto questo messaggio..., dà sempre il segnale all'inizio della formazione di una candela!

Questo mi ha portato ad entrare in ritardo nel trading soprattutto nei time frame più alti. Potete gentilmente aiutarci in modo che l'iny dia l'allarme solo quando il prezzo attuale ponte MA o su per comprare e giù per vendere, invece di aspettare l'inizio di un'altra candela

Grazie File allegati

File:
smacd.mq4  4 kb
 

Ciao Mladen, sai cosa posso usare per far scattare il mio criterio di apertura del trade?

Quello che voglio sapere è come posso innescare un trade se la candela chiude sopra o sotto la linea della media mobile di 10pips.

Il sistema farà scattare il trade in base al fatto che chiuda sopra o sotto la linea della media mobile.

Sto pensando di usare iClose, ma non ho idea di come implementarlo. Apprezzo il vostro aiuto.

Grazie.

Ryan

 
tkuan77:
Ciao Mladen, sai cosa posso usare per attivare i miei criteri di apertura?

Quello che voglio sapere è come posso attivare un trade se la candela chiude sopra o sotto la linea della media mobile di 10pips.

Il sistema farà scattare il trade in base al fatto che chiuda sopra o sotto la linea della media mobile.

Sto pensando di usare iClose, ma non ho idea di come implementarlo. Apprezzo il vostro aiuto.

Grazie.

Ryan

Ciao Mladen,

Ho fatto il codice, sembra funzionare, tuttavia, il trade a volte non viene attivato quando i criteri sono soddisfatti e non ho idea di come procedere da qui in poi.

//+------------------------------------------------------------------+

//---- parametri di input

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//| funzione di inizializzazione dell'esperto |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di deinizializzazione esperto |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di avvio esperto |

//+------------------------------------------------------------------+

doppio pBid, pAsk;

datetime newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- Commercio di trigger

//+------------------------------------------------------------------+

int biglietto, totale;

doppio CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // controlla il numero totale di trade attualmente aperti

se(totale < 2)

{

if (CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st && Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Il mio EA",Entry_magicNo_1st,0,Verde);

return(0);

}

se (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"Il mio EA",Entry_magicNo_1st,0,Rosso);

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

 
tkuan77:
Ciao Mladen,

Ho fatto il codice, sembra funzionare, tuttavia, il trade a volte non viene attivato quando i criteri sono soddisfatti e non ho idea di come procedere da qui in poi.

//+------------------------------------------------------------------+

//---- parametri di input

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//| funzione di inizializzazione dell'esperto |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di deinizializzazione esperto |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di avvio esperto |

//+------------------------------------------------------------------+

doppio pBid, pAsk;

datetime newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- Commercio di trigger

//+------------------------------------------------------------------+

int biglietto, totale;

doppio CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // controlla il numero totale di trade attualmente aperti

se(totale < 2)

{

if (CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st && Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"Il mio EA",Entry_magicNo_1st,0,Verde);

return(0);

}

se (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"Il mio EA",Entry_magicNo_1st,0,Rosso);

return(0);

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

Puoi mostrare alcuni casi in cui avrebbe dovuto innescare un trade e non l'ha fatto?

 

Ciao Mladen,

Trovi allegato lo screenshot.

Saluti

Ryan

File:
untitled.jpg  42 kb
 

Ciao Mladen, potrebbe essere una forma di errore in alcune linee che sta causando questo errore?

Saluti

 
tkuan77:
Ciao Mladen, potrebbe essere qualche forma di errore in alcune linee che sta causando questo errore? Saluti

tkuan77

Come primo passo controlla il diario e la scheda esperti del terminale se c'è scritto qualche messaggio di errore

 
mladen:
tkuan77 Come primo passo controlla il diario e la scheda esperti del terminale se qualche messaggio di errore è scritto lì

Ciao mladen, grazie, il problema è già stato risolto.

Tuttavia, la mia prossima domanda è come faccio a ordinare i trade di conseguenza?

Per esempio:

Quantità totale di compravendite in qualsiasi momento = 2

1 trade per ogni serie di criteri. Come faccio a fare in modo che il sistema non attivi più di 1 trade per ogni set particolare se i criteri sono soddisfatti più di una volta?

Di seguito i miei codici per riferimento:

total = OrdersTotal(); // controlla il numero totale di trade attualmente aperti

se(totale < 2)

{

if (Hour()==Entry_Hour_1st || Hour()==Entry_Hour_2nd)

{

//Se non c'è nessuna negoziazione attualmente aperta secondo questo criterio, controlla se le condizioni sono soddisfatte, se sì, avvia una negoziazione, se no, non avvia una negoziazione.

}

if (Hour()==Entry_Hour_3rd || Hour()==Entry_Hour_4th)

{

//Se non c'è nessuna negoziazione attualmente aperta con questo criterio, controlla se le condizioni sono soddisfatte, se sì, avvia una negoziazione, se no, non avvia una negoziazione.

}

}

Apprezzo il tuo consiglio. Grazie.

Saluti

 

Come devono essere gestiti esattamente gli ordini dei broker ECN?

 
apprentice coder:
Come devono essere gestiti esattamente gli ordini dei broker ECN?

apprendista codificatore

L'unica differenza è che su un broker ECN si apre prima un ordine con 0 campi sl e tp, e poi si modifica l'ordine (se necessario) per impostare sl e tp, mentre su un broker "regolare" si possono mettere sl e tp insieme all'apertura dell'ordine. Tutto il resto è esattamente lo stesso