Chiedete! - pagina 98

 

Aiuto di nuovo

Ciao a tutti,

Ho lavorato su un EA per quella che sembra un'eternità. Grazie a tutte le persone su questo thread per tutto l'aiuto che mi hanno dato.

Ora sono di nuovo in difficoltà e cerco altro aiuto. Come tutti sappiamo, la maggior parte dei segnali di tipo crossover da MA a Stoch non funzionano molto bene perché molte volte si incrociano alla fine del movimento.

Quello che sto cercando di fare è usare lo Stocastico RSI quando incrocia la linea 50, ma solo sulla barra successiva una volta che il prezzo ha superato il massimo o il minimo di una certa quantità di pip (MinPips). Il mio problema principale è che quando seguo l'incrocio, se il prezzo raggiunge i MinPips solo sulle barre successive all'incrocio ma l'incrocio rimane nella stessa direzione.

Cerco di allegare un'immagine per mostrare quello che sto cercando di fare.

Il punto #1 è ad un incrocio di vendita ma dato che il prezzo non supera mai il minimo di quella barra, non viene presa nessuna operazione (in realtà, vorrei che ogni operazione precedente rimanesse attiva).

Il punto #2 è ad un incrocio di acquisto, ma il prezzo passa il massimo della barra solo nella quarta barra dopo l'incrocio e dovrebbe essere preso in quel momento. Qualsiasi ordine di vendita precedente dovrebbe essere chiuso in questo momento.

Spero che questo funzioni perché è la prima volta che allego un'immagine. Mi scuso in anticipo se ho fatto casino.

Putz

File:
 

Altre informazioni

La seguente è la mia programmazione dove CurrDir è la direzione corrente e PrevDir è la direzione precedente, quindi se non è uguale, allora c'è stato un incrocio.

Il problema è che se non si incrocia sulla barra corrente, allora CurrDir e PrevDir diventano uguali e non va mai oltre quella barra per vedere se raggiunge il ValHigh o il ValLow.

Qualsiasi aiuto sarà apprezzato.

Putz

if(CurrDir != PrevDir)

{

if(CurrDir == 1)

{

ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;

if(Bid >= ValHigh)

{

return(1); //up

}

return (2);

}

if(CurrDir == 2)

{

ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;

if(Ask <= ValLow)

{

return(2);//down

}

return (1);

}

 

Capito... credo

Penso di aver finalmente capito il mio problema. Ora sono quasi le 2:30 del mattino e sono esausto, quindi controllerò domani...

Putz

 

C'è un modo per cambiare il formato dei dati del file di esportazione di MT4

Sto cercando il file ASCII.csv ma ho bisogno che i dati siano nel seguente formato

1) colonne separate (solo bisogno di: tempo, alto, basso e chiusura)

2) solo per le ultime 1000 barre

3) inverte l'ordine (ultimo in alto)

4) lo salva in una cartella che ho già sul mio desktop (forse una funzione browse per selezionare quale?)

Grazie in anticipo a chiunque possa aiutarmi.

 

Aggiungere ed eliminare indicatori

Si può scrivere un codice in un EA per aggiungere o eliminare un indicatore nella piattaforma di trading??

Dave

 

Ho un grosso problema sulla gestione degli ordini....

Il mio semplice EA entra a X:59......ma ho entrate multiple sullo stesso cross. La mia domanda: E' possibile controllare il tempo di entrata degli ordini e confrontarlo con il nuovo ordine?

Voglio entrare alle x:59 solo con 1 ordine per il cross....

Qualcuno può aiutarmi?

 
metastock:
Ho un grosso problema sulla gestione degli ordini....

Il mio semplice ingresso EA a X:59...... ma ho un ingresso multiplo sulla stessa croce. La mia domanda: E' possibile controllare l'orario di entrata degli ordini e confrontarlo con il nuovo ordine?

Voglio entrare alle x:59 solo con 1 ordine per il cross....

Qualcuno può aiutarmi?

Questa è la mia soluzione, spero che questo possa aiutare qualcuno......

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

//| Segnale Inizio(Entrata) |

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

if (Buy1_1 58 && check_buy==0) Ordine = SIGNAL_BUY;

se (Sell1_1 > Sell1_2 && Minute()>58 && check_sell==0) Ordine = SIGNAL_SELL;

if (Minute()==00) {check_buy=0;}

if (Minute()==00) {check_sell=0;}

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

//| Fine del segnale |

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

//Acquista

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Controlla il margine libero

if (AccountFreeMargin() < (1000 * Lotti)) {

Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; altrimenti StopLossLevel = 0,0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;

check_buy=1;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue);

if(Biglietto > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordine BUY aperto : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Errore nell'apertura dell'ordine BUY: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

// }

}

//Vendere

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//if(!IsTrade) {

//Controlla il margine libero

if (AccountFreeMargin() < (1000 * Lotti)) {

Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; altrimenti StopLossLevel = 0,0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;

check_sell=1;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink);

if(Biglietto > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordine SELL aperto : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Errore nell'apertura dell'ordine SELL: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

//}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

 

A Metastock

Non riesco a capire cosa causa che check_buy sia vero.

Per limitare a un solo ordine aperto, si può usare, prima dell'entrata

if (OrdersTotal()==0)

Grande essere

 

Domande sulla conoscenza della codifica

QUANDO volete usare una variabile STATIC - quali problemi può risolvere?

QUANDO vuoi mettere qualcosa nella sezione INIT() - quali problemi risolve?

Essere grande

 

Non so se questo è stato chiesto prima, ma c'è un modo per disegnare una linea al tempo corrente +1 ora prima e dopo un certo prezzo in un EA?

Motivazione: