Aiuto per la codifica - pagina 245

 
mladen:
macerina

Solo la prima parte (il resto è solo una variazione di questo):

se ema(7) < ema(21) e precedente ema(7) < precedente ema(21) allora se ema(di rsi(14),9) < rsi(14) segnale per comprare

si può dire anche in questo modo :

se macd(7,12) < e precedente macd(7,12) < 0 allora se ema(di rsi(14),9) < rsi(14) segnale per acquisto

Grazie per la risposta mladen è possibile codificare un indicatore mt4 con questo criterio

Grazie in anticipo

 
macerina:
Grazie per la risposta mladen è possibile codificare un indicatore mt4 con questo criterio Grazie in anticipo

macerina

Questo è un semplice sistema macd + rsi. Credo che esista già. Se non c'è, è facile fare un indicatore e poi sarà fatto

 
mladen:
Si prega di postare la parte di codice in cui si sta cercando di ottenere ciò che hai descritto qui: https: //www.mql5.com/en/forum/174385/page162 (non i 3 take profit che piazzano gli ordini e i 3 trailing stop di gestione, ma la parte che sta cercando di fare esattamente ciò che hai descritto) e poi, forse qualcuno può aiutarti con la tua codifica.

//conta gli ordini di acquisto aperti.

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol());

//conta gli ordini di vendita aperti.

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol());

se (iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart > 0) TrailOrder (TrailingStart, TrailingStop);

}

se (iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2 > 0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

Questa è la parte in cui l'EA cerca il numero di ordini aperti per la coppia collegata.

Se trova 3 ordini, seguirà la solita funzione Trailing Stop. E se trova che c'è solo un trade in esecuzione, allora seguirà la seconda funzione Trailing Stop.

Questo funziona 'OK' per una singola coppia, ma quando collego questo EA a più grafici (coppie), non funziona perché recupera tutti gli ordini aperti tramite la funzione 'OrdersTotal()'.

Mi viene subito in mente un problema: come fai a sapere che c'erano 3 ordini e poi ne è rimasto solo 1 (non c'è una sola linea di codice in questo EA che cerchi di scoprirlo)

/Fine - Chiudere le posizioni di vendita aperte------------------------------------------

double OpenPrice=Ask;

int count=3;

if (count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);

if (BuyOrder_1>0) //Controllo se l'ordine è stato aperto o meno

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " Ordine di acquisto 1 inviato con successo. Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

Quindi il conteggio sta diminuendo e gli ordini di apertura fino a count=1. Quindi 3 ordini si stanno aprendo come count=3 inizialmente.

 
Oridroo:
//conta gli ordini di acquisto aperti.

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol());

//conta gli ordini di vendita aperti.

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol());

se (iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart > 0) TrailOrder (TrailingStart, TrailingStop);

}

se (iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2 > 0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

Questa è la parte in cui l'EA cerca il numero di ordini aperti per la coppia collegata.

Se trova 3 ordini, seguirà la solita funzione Trailing Stop. E se trova che c'è solo un trade in esecuzione, allora seguirà la seconda funzione Trailing Stop.

Questo funziona 'OK' per una singola coppia, ma quando collego questo EA a più grafici (coppie), non funziona perché recupera tutti gli ordini aperti tramite la funzione 'OrdersTotal()'.

/Fine - Chiudere le posizioni di vendita aperte------------------------------------------

double OpenPrice=Ask;

int count=3;

se (count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order",MagicNumber, 0,Blue);

if (BuyOrder_1>0) //Controllo se l'ordine è stato aperto o meno

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " Ordine di acquisto 1 inviato con successo. Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

Così il conteggio sta diminuendo e gli ordini di apertura fino al conteggio=1. Quindi 3 ordini si stanno aprendo perché inizialmente il conteggio è uguale a 3.

La domanda era la seguente: come fa a sapere che una volta c'erano 3 ordini aperti e poi ne rimane solo uno? Il fatto che sia rimasto un solo ordine aperto non mostra nulla. Bisogna controllare la lista degli ordini chiusi per gli altri 2 ordini che facevano parte di una tripletta, e dato che i broker possono cambiare il campo dei commenti, non c'è modo di sapere che alcuni ordini facevano parte di una stessa tripletta (nessun campo nella lista degli ordini che possa essere usato per marcare che alcuni ordini appartengono a uno stesso gruppo di ordini).

Si potrebbe provare a utilizzare dei file per salvare i numeri di ticket che appartengono a terzine, ma, nel caso in cui si cerchi di utilizzare lo stesso EA da un altro terminale, si possono ottenere errori terribili. La stessa cosa può accadere quando si reinstalla Metatrader. Usare le variabili globali è sempre peggio (sono quasi la stessa cosa che usare i file - ma peggio), quindi non c'è un modo significativo per tracciare correttamente le terzine di ordini

Quindi come fai a scoprire che 1 ordine aperto è l'ultimo ordine aperto dei 3 o è il primo ordine aperto di una nuova terzina di ordini?

 
mladen:
La domanda era la seguente: come fa a sapere che una volta c'erano 3 ordini aperti e poi ne rimane solo uno? Il fatto che sia rimasto un solo ordine aperto non mostra nulla. Bisogna controllare la lista degli ordini chiusi per gli altri 2 ordini che facevano parte di una tripletta, e dato che i broker possono cambiare il campo dei commenti, non c'è modo di sapere che alcuni ordini facevano parte di una stessa tripletta (nessun campo nella lista degli ordini che può essere utilizzato per marcare che alcuni ordini appartengono a uno stesso gruppo di ordini). Quindi come si fa a sapere che 1 ordine aperto è l'ultimo ordine aperto dei 3 o è un primo ordine aperto di una nuova tripletta di ordini?

Mladen,

Ckeck you pm, bisogno di un codificatore

Sogno una GRANDE icona per PM !

 
mladen:
Quindi come fate a sapere che 1 ordine aperto è l'ultimo ordine aperto dei 3 o è il primo ordine aperto di una nuova terzina di ordini?

C'è una condizione:

if (MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

Quindi con questo mi sto assicurando che se c'è un ordine di acquisto esistente, non aprirà un nuovo ordine di acquisto nonostante le condizioni siano soddisfatte. Aprirà un nuovo ordine solo quando non ci sarà nessun ordine di acquisto/vendita esistente.

E siccome sta aprendo 3 ordini alla volta dello stesso tipo (acquisto/vendita) e se due di essi sono già chiusi, allora quello rimasto è sicuramente dello stesso tipo.

L'ho testato. Quindi non c'è confusione.

 
Oridroo:
C'è una condizione:

if (MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

Quindi con questo mi sto assicurando che se c'è un ordine di acquisto esistente, non aprirà un nuovo ordine di acquisto nonostante le condizioni siano soddisfatte. Aprirà un nuovo ordine solo quando non ci sarà nessun ordine di acquisto/vendita esistente.

E siccome sta aprendo 3 ordini alla volta dello stesso tipo (acquisto/vendita) e se due di essi sono già chiusi, allora quello rimasto è sicuramente dello stesso tipo.

L'ho testato. Quindi non c'è confusione.

Ci sono molte supposizioni in tutto questo. La prima è che quando si cerca di aprire 3 ordini, si apriranno effettivamente 3 ordini. E se ne apre solo 1? . E così via ...

Mi dispiace. Ma sembra che stiamo parlando sempre di cose diverse. Spero che qualcuno possa aiutarvi, visto che io non posso

Commercio felice

 
mladen:
Ci sono molte supposizioni in tutta la faccenda. La prima è che quando provi ad aprire 3 ordini, aprirà effettivamente 3 ordini. E se ne apre solo 1? . E così via ...

Mi dispiace. Ma sembra che stiamo parlando di cose diverse tutto il tempo. Spero che qualcuno possa aiutarvi, visto che io non posso

Buon trading

Se non puoi, va bene.

L'ho testato per un po' con diversi broker e finora non ha "fallito" nell'aprire 3 ordini.

Comunque, penso che potresti dire almeno quale punto/logica rende un EA in grado di distinguere tra diverse coppie mentre sto chiamando 'OrdersTotal()'?

Qualsiasi piccolo esempio di EA andrà bene.

 
macerina:
Grazie per la risposta mladen è possibile codificare un indicatore mt4 con questo criterio Grazie in anticipo

macerina

Controlla l'indicatore a questo post : https://www.mql5.com/en/forum/173574/page432. E' quasi esattamente uguale a quello descritto da aspen graphic code

 

Grazie Mladen per il codice ... Questo ha il doppio confronto macd e 50 crossover come hai spiegato nella logica precedente.

Grazie in anticipo