Chiedete! - pagina 32

 

Dave,

Non arrenderti così facilmente. Se ti dico cosa fare, forse è sbagliato e non imparerai mai la cosa giusta.

Ecco un altro tentativo.

Buona fortuna.

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

{

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

}

 

come faccio a sapere se il mio ordine ha colpito uno stop-loss?

Ciao ragazzi

Sto programmando un EA che utilizza un trailing-stop. Il fatto è che quando colpisce uno stop-loss allora apre un nuovo ordine. Quindi, la domanda è: come dire all'EA che quando un ordine colpisce uno stop-loss allora aspetta la prossima barra per decidere se si vuole aprire un nuovo ordine?

 
 
iscuba11:
Dove avviene la modifica in questo? Lo stop loss originale era 40 e il take profit era 100. Come parte della modalità sleep, lo stop loss deve passare a 15 su tutti gli ordini aperti esistenti e il take profit deve passare a 25 su tutti gli ordini aperti esistenti.

Biglietti d'ordine aperti: Prima della modalità sleep.

Prima della modalità Sleep Stop Loss - 40 Prima della modalità Sleep Take Profit-100 Dopo la modifica della modalità Sleep Stop Loss -15 Dopo la modifica della modalità Sleep Take Profit - 25

Non sto inizializzando le impostazioni dell'ordine, sto modificando gli ordini esistenti già piazzati e ancora attivi.

Grazie comunque per il tuo aiuto! Perché qualcosa di così semplice sembra così difficile?

Dave <<

come si fa a definire la modalità di sonno?

basta aggiungere prima del ciclo ordermodify()

come...

if(sleepcome)

{

for(.....)

{

//delete my code gave you before or make it as comment

orderselect(.....);

.

.

.

}

}

questo può aiutare

 
AnasFX:
Ciao ragazzi sto programmando un EA che usa un trailing-stop. Il fatto è che quando colpisce uno stop-loss allora apre un nuovo ordine. Quindi, la domanda è: come dire all'EA che quando un ordine colpisce uno stop-loss allora aspetta la prossima barra per decidere se si vuole aprire un nuovo ordine?

controllare la storia del trade se l'ordercloseprice() = ordertoploss() allora si chiude colpendo lo sl

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

 

Tempo di stop-loss

phoenix:
controllare la cronologia degli scambi se ordercloseprice() = ordertoploss() allora chiude colpendo lo sl

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

Grazie per l'idea amico. Voglio anche sapere il tempo del suo stop-loss e se questo tempo è nella barra corrente. Posso avere molti stop-loss, ma voglio sapere se colpisce lo stop-loss nella barra corrente. Devo controllare il tempo di chiusura dell'ordine e confrontarlo con il tempo della barra corrente?

 

mostrare acquisti e vendite su un EA

Vorrei mettere frecce o oggetti di testo o qualcosa sul grafico mentre il mio EA è in esecuzione per mostrare le sue azioni, ma gli oggetti non sembrano apparire. Qualcuno ha un esempio di EA funzionante che disegna sul grafico?

Inoltre, lo Strategy Tester ha un pulsante per visualizzare un grafico dopo l'esecuzione di un test, ma non vedo le frecce. È un problema della build 195, perché so di averle viste lì in passato. Come possiamo modificare questi oggetti freccia? Vorrei renderli più grandi, ma non so nemmeno come arrivare al grafico nel tester.

Credo che entrambi i problemi siano gli stessi: ottenere il feedback degli utenti dagli EA.

 

Ho un esperto che sto modificando e volevo evitare un segnale di entrata se la barra precedentemente chiusa era estremamente lunga. (>30 pips) Ho aggiunto la frase qui sotto come condizione ma non sembra essere riconosciuta. Non sono un buon codificatore ma ho fortuna nel regolare gli esperti e sto imparando man mano. Qualcuno potrebbe dirmi quale logica o frase dovrei usare qui?

Sotto la sezione;

-----------------------------------

void CheckForSignals() {

-----------------------------------

Ho incluso la condizione;

-----------------------------------

se ((Close[1])-(Open[1])<30 ) {

buysig=true;

-----------------------------------

Grazie per qualsiasi suggerimento,

MJ

 
marketjouster:
Ho un esperto che sto modificando e volevo evitare un segnale di entrata se la barra precedentemente chiusa era estremamente lunga. (>30 pips) Ho aggiunto la frase qui sotto come condizione ma non sembra essere riconosciuta. Non sono un buon codificatore ma ho fortuna nel regolare gli esperti e sto imparando man mano. Qualcuno potrebbe dirmi quale logica o frase dovrei usare qui?

se ((Close[1])-(Open[1])<30 ) ...

MJ

MJ,

Supponendo che Close[1] sia per esempio 1.2835 e Open[1] sia a 1.2805 (barra rialzista), la differenza è 0.0030 quindi il controllo contro 30 non funziona. Inoltre cosa succede se Close[1] è a 1.2805 e Open[1] a 1.2835 (barra ribassista)? Otterrete -0.0030.

Quindi prima di tutto devi usare Close[1]-Open[1] < (30*Point) per rimediare al primo problema, e poi devi usare la funzione MathAbs() per ottenere il valore assoluto della sottrazione.

In breve usa: if MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

Yannis

 

Codice per evitare l'entrata in una barra lunga

Yannis:
MJ,

Supponendo che Close[1] sia per esempio 1.2835 e Open[1] sia a 1.2805 (barra rialzista), la differenza è 0.0030 quindi il controllo contro 30 non funziona. Inoltre cosa succede se Close[1] è a 1.2805 e Open[1] a 1.2835 (barra ribassista)? Otterrete -0.0030.

Quindi prima di tutto devi usare Close[1]-Open[1] < (30*Point) per rimediare al primo problema, e poi devi usare la funzione MathAbs() per ottenere il valore assoluto della sottrazione.

In breve usa: if MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

Yannis

Grazie mille Yannis. La tua spiegazione è molto chiara e apprezzo l'inclusione del codice effettivo. Posso porre una domanda di follow-up? Se volessi essere in grado di regolare il numero di pip per la barra lunga nella finestra delle proprietà degli expert advisor, potrei usare

extern int LBE=30; // LBE è 'Long Bar Entry'. Il valore predefinito potrebbe essere 30

nella sezione di intestazione dell'esperto e poi usare LBE invece di 30 nella tua linea di codice?

if MathAbs(Close[1]-Open[1])<(LBE*Point)

Questo mi permetterebbe di testare manualmente le impostazioni delle varianti di pip e di ottimizzarle nel back testing.

MJ