buongiorno e grazie...gentilissimo...passo subito le stringhe al mio amico,lo sai che x me è arabo!!
Buona Giornata
Enrico
Announcement
Collapse
No announcement yet.
breackout previous high
Collapse
X
-
ciao Carbonmimetic, di seguito i pezzi di codice per risolvere i punti che hai chiesto.... naturalmente sono pezzi di codice, vanno poi inseriti per bene nella strategia.
PHP Code:bool calcola_minimo6barre = false;
double minimo6barre_riferimento; // il valore minimo delle ultime 6 barre partendo dalla barra [1] appena conclusa
void OnStart()
{
//---
// In Metatrader4 la barra corrente è la barra [0], quella precedente e quindi più antica rispetto alla barra attuale è la barra [1], e così via, più si va nel passato e più aumenta il numero di barra
//
// 1 ) mi trovo sulla barra attuale (quella del buy)...l'ea deve vedere che nelle 10 barre precedenti nessuna barra abbia HIGH>HHV30-1...ovvero che nessuna barra abbia HIGH maggiore di HHV30 riferito alla barra precedente.
// Quindi: la barra prima del buy è la barra -1 e deve essere HIGH-1<HHV-2...la barra -2 deve essere HIGH-2<HHV-3...etc etc
bool confronto10barre_conHHV30 = true;
for(int i=1; i<=10; i++)
{
double valore_HHV30 = iCustom(NULL,0,"HHVIndic",0,i+1); // valore dell'indicatore HHVIndic relativo al buffer "0" (SetIndexBuffer(0,Segnale,INDICATOR_DATA)) sulla barra [i+1]
double massimo10barre = iHighest(NULL,0,MODE_HIGH,10,i); // valore del massimo delle 10 barre partendo dalla barra [i]
if(massimo10barre > valore_HHV30) confronto10barre_conHHV30 = true;
}
if(confronto10barre_conHHV30 == true) annulla_il_buy;
// 2) altro problema: all'interno di una finestra temporale di 6 barre devo registrare il minor minimo ovvero il LOW più basso...successivamente il tempo scorre..il grafico procede...
// al momento del buy se in una qualunque delle 13 barre indietro ho anche una sola barra il cui LOW sia minore del valore registrato all'interno di tale finestra, il buy viene annullato.
// Utilizza una variabile booleana (calcola_minimo6barre) e una variabile double (minimo6barre_riferimento) definite entrambe fuori da OnStart() (a livello globale che quindi rimangono memorizzate ad ogni avvio di barra) e quando decidi che sia il momento per calcolare il minimo delle 6 barre, calcoli 'minimo6barre_riferimento'
if(calcola_minimo6barre)
{
minimo6barre_riferimento = iLowest(NULL,0,MODE_LOW,6,1);
calcola_minimo6barre = false; // dopo aver calcolato la variabile la poni a false per evitare che ad ogni avvio di barra il minimo rivenga calcolato.
}
// Il valore di 'minimo6barre_riferimento' rimane in memoria...
// Ad avvio della barra per cui hai il segnale BUY, verifichi se puoi davvero aprirlo calcolando la variabile 'minimo13barre'
double minimo13barre = iLowest(NULL,0,MODE_LOW,13,1)
if(minimo13barre < minimo6barre_riferimento) annulla_il_buy;
}
Leave a comment:
-
Ciao Umberto,
eccomi a chiederti nuovamente lumi:
1 ) mi trovo sulla barra attuale (quella del buy)...l'ea deve vedere che nelle 10 barre precedenti nessuna barra abbia HIGH>HHV30-1...ovvero che nessuna barra abbia HIGH maggiore di HHV30 riferito alla barra precedente.Quindi: la barra prima del buy è la barra -1 e deve essere HIGH-1<HHV-2...la barra -2 deve essere HIGH-2<HHV-3...etc etc
allego l'indicatore HHV
2) altro problema: all'interno di una finestra temporale di 6 barre devo registrare il minor minimo ovvero il LOW più basso...successivamente il tempo scorre..il grafico procede...al momento del buy se in una qualunque delle 13 barre indietro ho anche una sola barra il cui LOW sia minore del valore registrato all'interno di tale finestra, il buy viene annullato.
confido nel tuo aiuto!!!
grazie come sempreAttached Files
Leave a comment:
-
Ciao Umberto....l'ea adesso si disabilita alla chiusura di tutte le posizioni....non chiedermi cosa ha modificato il mo amico perchè non lo so.....ma x correttezza metto l'ea se mai a qualcuno servisse l'uscita a step per come è stata progettata
grazie ancora e buona giornataAttached Files
Leave a comment:
-
per adesso grazie mille...faccio leggere al mio amico e ti farò sapere l'esito di tali modifiche.
buona giornata
Leave a comment:
-
ciao,
ho visto il codice, probabilmente non si verificano le condizioni per cui la funzione ExpertRemove() viene chiamata.
ad esempio, alla riga 259 si legge
Code:if(CloseEA==1){ CK_Chiusura_EA(); }
così leggi il valore e comprendi se davvero CloseEA=1 oppure no.
°°°°°°°°°°°°°°°°°°°°°°
Fai la stessa cosa nella definizione della funzione void CK_Chiusura_EA()
devi stampare i valori PRIMA e DOPO la if
per sapere quanto valgono
PositionGetInteger(POSITION_MAGIC)
così da verificare se vale davvero == MagicN
e analogamente stampi prima e dopo la if
il valore di LottiinPancia
e verifichi se davvero è <0.01
Code:/+------------------------------------------------------------------+ //| Elimina EA dal grafico | //+------------------------------------------------------------------+ void CK_Chiusura_EA() { if(PositionGetInteger(POSITION_MAGIC) == MagicN && LottiinPancia<0.01) { Print("EA Tolto x chiusura totale posizini x MagicN: " + IntegerToString(MagicN) ); ExpertRemove(); } else { //Print("CloseEA: " + IntegerToString(CloseEA) + " --- MagicN: " + IntegerToString(MagicN) + " --- LottiinPancia: " + DoubleToString(LottiinPancia)); } }
Leave a comment:
-
Ciao Umberto,
desidero che l'ea venga disabilitato dopo che ha chiuso tutto.....dalla riga 1027 compare la stringa che dovrebbe permettere ciò....ma non si disabilita.
HELP
che dire???grazieAttached Files
Leave a comment:
-
grazie ..ma ti faccio scrivere da lui...altrimenti andiamo alle calende greche...
Leave a comment:
-
Un backtest per definizione è sui dati storici, quindi non può essere in real time, cioè in tempo reale che sono i dati storici futuri, incogniti, quindi un EA in real time significa un EA in Live demo o in Live real, con i soldi veri.
Per fare un backtest con Metatrader4 ci sono decine di tutorial su youtube, basta solo scegliere il Simbolo, il Modello (ogni tick o solo prezzi di apertura), il Periodo: M5
e naturalmente bisogna avere precaricati su Metatrader4 i dati storici a 5 minuti...
Leave a comment:
-
Ciao Umberto,
il mio amico dice che c'è la possibilità di far girare il back test in real time ma non riesce sul TF a 5 min..gli esce solo 1H
esattamente saresti così gentile da spiegare i vari passaggi?
grazie
Leave a comment:
-
grazie di nuovo anche se non riusciamo a farlo chiudere dove dovrebbe
Leave a comment:
-
double _pip=Point;
if(Digits==3 || Digits==5)
{
_pip=Point*10;
}
double ASK = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
double BID = SymbolInfoDouble(Symbol(), SYMBOL_BID);
// 1 pip sopra o 1 pip sotto il breakout
if(ASK <= LLVIndic_72[2] + 1*_pip)
//oppure
if(ASK <= LLVIndic_72[2] - 1*_pip)
Leave a comment:
-
Anche Mt4 è costruito sul Bid! ...certo ..ho specificato la Mt5 in quanto lavoriamo su quella
l'Ask del breakout è il valore del grafico + lo spread...infatti
a livello di codice come andrebbe impostato?
metto in copia la riga che ha scritto il mio amico
Attached Files
Leave a comment:
-
Anche Mt4 è costruito sul Bid!
le regole e logica scritte sono indipendenti dalla piattaforma.
il Bid del breakout è il valore che vedi sul grafico.
l'Ask del breakout è il valore del grafico + lo spread.
Leave a comment:
-
innanzi tutto grazie della celere risposta....
il grafico della MT5 è costruito sul Bid
premesso questo...il mio amico che mastica un pò di codice (io zero) non riesce a fare in modo che sia l'ASK ad effettuare il breackout di LLv..esiste un modo si o no?
ovviamente anche a costo di rimetterci lo spread in quanto se il breackout down viene eseguito con l'ASK è peggiorativo....ma non dimenticarti che sotto le notizie se si allarga lo spread lo stop loss te lo eseguono magari senza che il prezzo si sia spostato
(p.s. il breackout up x aperuta di posizioni long è stato creato con il superamento del BID...ma non riesce a replicare il contrario come da domanda sopra esposta)
Leave a comment:
Leave a comment: