Come codificare? - pagina 166

 

grazie per la tua risposta.

ma questo non funziona se c'è stato uno slippage quando la posizione è stata chiusa, giusto?

 
codersview:
Ciao a tutti,

Ho un problema con l'EA di RSI e MA...

Ho l'indicatore che funziona correttamente... Tutto quello che voglio è convertirlo in EA...

Ho provato un paio di cose. IndicatorCounted() non funziona nell'EA, quindi ho provato a codificare i valori del ciclo for (bar=0; bar<15; bar++), ho ottenuto un RSI corretto, ma lo SMA non sta dando valori corretti...

Allego il codice della SMA che incrocia la RSI...

Quindi qualcuno potrebbe aiutarmi a convertire questo indicatore in EA.

***************************************************************************************************************************************

#proprietà indicator_separate_window

#proprietà indicator_buffers 2

#proprietà indicator_color1 PratoVerde

#proprietà indicator_color2 DarkBlue

doppio ExtMapBuffer1[];

doppio ExtMapBuffer2[];

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

SetIndexBuffer(1,ExtMapBuffer2);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int bar, limit;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-IndicatorCounted();

for(bar=0; bar<limite; bar++)

ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,bar);

for(bar=0; bar<limit; bar++)

ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar);

return(0);

}

***************************************************************************************************************************************

Grazie e saluti,

Ganesh

Ganesh,

Prova a fare le barre in ordine temporale.

Invece di for(bar=0; bar<limit; bar++)

Usa for(bar=limit-1; bar>=0; bar--)

Chazzmoney

 

Ciao

Grazie per la risposta rapida... Ho provato, ma non fa alcuna differenza...

Anche se usiamo Bars nel ciclo, deve calcolare i valori interi (per tutte le barre) per ogni tick... e potrebbe esserci un ritardo. Anche il valore SMA sarebbe zero.

Nell'indicatore calcoleremmo RSI e EMA solo per la nuova barra usando IndicatorCounted(), ma non possiamo usarlo nell'EA.

Il punto esatto del problema è il 2° ciclo for e i valori per iMAOnArray.

Il primo ciclo for funziona perfettamente anche quando lo codifichiamo...

 
jan100:
Grazie per la tua risposta. Ma questo non funziona se c'è stato uno slippage quando la posizione è stata chiusa, giusto?

Alcuni broker scrivono [sl] e [tp] nel campo dei commenti. Puoi usarlo anche tu.

 

Grazie, ci proverò.

come è possibile selezionare l'ultimo ordine chiuso con il giusto numero magico?

 
jan100:
grazie. ci proverò. come è possibile selezionare l'ultimo ordine chiuso con il giusto numero magico?

Se lo trovi nella lista della storia, questo è un ordine chiuso, se nella lista totale - ancora aperto.

 

Richiesta di codice Ea: Chiudere l'ordine precedente quando si apre una nuova posizione

Ciao, vorrei fare una richiesta di codice per quando la nuova posizione è aperta, automaticamente l'ordine precedente si chiuderà, cioè non voglio usare take profit o trailling.

Esempio:

Quando l'ordine buy è aperto, l'ordine precedente sell si chiude

Quando l'ordine di vendita è aperto, l'ordine precedente di acquisto si chiude

Ho trovato il codice è OrderCloseBy() ma non so esattamente dove mettere questo codice

grazie

 
darkkiller:
Ciao, vorrei fare una richiesta di codice per quando la nuova posizione è aperta, automaticamente l'ordine precedente si chiuderà, cioè non voglio usare take profit o trailling.

Esempio:

Quando l'ordine di acquisto è aperto, l'ordine di vendita precedente si chiude

Quando l'ordine di vendita è aperto, l'ordine di acquisto precedente si chiude

Ho trovato il codice è OrderCloseBy() ma non so esattamente dove mettere questo codice

grazie

Il problema si risolve

mettere dopo OrderSend BUY

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // chiude la posizione

}

mettere dopo OrderSend SELL

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // chiudi posizione

}

Altro codice che ho preso da ForexFactory grazie a (Fulltime247,magnumfreak)

extern int MAGICTerminal=101;

extern double LOTSize=0.10;

extern string ORDERComment="Order Comment Text";

//conteggio del TOTALE..

int btotal=0; int stotal=0; int ticket=0; double closelots=0; bool xbool;

for( int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

xbool=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; ticket=OrderTicket(); closelots=OrderLots();}

if(OrderType()==OP_SELL && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){stotal++; ticket=OrderTicket(); closelots=OrderLots();}

}// FINE CONTEGGIO TOTALE..

if(Qualunque sia la vostra condizione per un acquisto)

{

if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE);}

ticket=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,0,ORDERComment,MAGICTerminal,0,Magenta);

}

if(QUALSIASI CONDIZIONE DI VENDITA)

{

if(stotal>0){OrderClose(ticket,closelots,Ask,3,CLR_NONE);}

ticket=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,0,ORDERComment,MAGICTerminal,0,Lime);

}
 
 

Sono nuovo di MT4.

Voglio calcolare il numero di barre dopo che shortMA ha attraversato longMA, qualcuno sa come codificare questa funzione?

Grazie in anticipo!

Motivazione: