![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
rapida modifica EA
Ciao,
Ho bisogno di aiuto, ho provato a modificare il codice qui sotto ma l'EA continua a mandare in crash MT4.
Voglio che l'ordine si chiuda quando la barra corrente (quindi la barra dove è stato eseguito l'ordine) si chiude. Fondamentalmente commercio una barra.
Questo è il codice originale, fa trading da segnale a segnale.
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
//if (timeprev!=Time[0]){
// timeprev = Time[0];
if (signalup!=EMPTY_VALUE&&signalup!=0)
{
Order = SIGNAL_BUY;
}
if (signaldown!=EMPTY_VALUE&&signaldown!=0){
Order = SIGNAL_SELL;
}
// }
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+Qualcuno può aiutarmi?
Aiuto per favore!!!!!
Ho bisogno di un ea che faccia quanto segue
ad una certa ora imposta 4pc ordine di acquisto o di vendita
funzioni:
order open time (variabile 00-24)
ordine1 vendere o comprare lotto (0.01 .0,02... 1) TP (+ xx pips da oppen) SL (- xx pips da open)
order2 vendere o comprare lotto (0.01 .0,02... 1) TP (+ xx pips da oppen) SL (- xx pips da open)
order3 vendere o comprare lotto (0.01 .0,02... 1) TP (+ xx pips da oppen) SL (- xx pips da open)
order4 vendere o comprare lotto (0.01 .0,02... 1) TP (+ xx pips da oppen) SL (- xx pips da open)
GRAZIE
Ho bisogno di aggiungere al mio EA un codice per disabilitarlo a certi livelli di prezzo
Salve,
Ho bisogno di aggiungere al mio Ea un codice per disabilitarlo e abilitarlo a certi livelli di prezzo.
Ho cercato e trovato che posso farlo con
# iclude<WinUser32mqh
extern bool Disable Ea = true // da X (examply1.4420) a Y(examply1.4380) e da Z (examply1.4480) a N(examply1.4520) //
extern bool Enable Ea = true // da R(examply -1.4420) a T(examply -1.4480)
Apprezzerei un aiuto per tradurre queste condizioni in un codice, così nella finestra di dialogo dell'EA potrei semplicemente inserire il livello di prezzo per disabilitare/abilitare l'EA.
Dopo un po' di ricerche e studi ho scoperto che scrivendo nella funzione di avvio dell'EA un codice lo avrebbe fatto partire a certe condizioni.
Così sotto la funzione di avvio dell'esperto ho scritto quanto segue:
if(PRICE_MEDIAN (SellLevel-Point*BufferPips))
ritorno (0)
------------------------------------------------------------------------------------------------------------------
BufferPips l'ho aggiunto nel doppio esterno così nella finestra di dialogo potrei cambiare il suo valore.
Non sono se PRICE_MEDIAN è una buona scelta.
Sto ottenendo un errore di compilazione - parentesi sinistra sbilanciata.![](https://c.mql5.com/forextsd/smiles/confused_smile.png)
Aiuto apprezzato
aiutami a fare auto trading
Ciao, Mr. Guru!
Ho l'auto trading ma non funziona, per favore aiutami!
Ciao Mario,
Penso che questa condizione if(current_shortEma == current_longEma)
non sia mai vera. di solito per rilevare un cross devi fare così
if(current_shortEma > current_longEma && last_shortEma < last_longEma){
//cross dal basso
}
if(current_shortEma last_longEma){
//cross dall'alto
}
Informazioni più dettagliate qui:
https://www.mql5.com/en/forum/trading_systems
Grazie
MIkhail
Ho anche una richiesta di codifica ---- bisogno di un codificatore (compito molto semplice)
Sappiamo HA - henki ashi raramente essere sbagliato
durante il consolidamento, o quasi U-turn, sarebbe sempre più breve
mentre quando la tendenza è ancora forte, HA per quella barra sarà LUNGA
QUINDI
sarebbe Neat se abbiamo un indicatore che ci dicono la forza di tendenza
l'idea è semplice
--- prima, dovrebbe essere qualsiasi HA farà (allego il mio ex4 solo, ma devono trovare un MQ4 - per HA) e modificarlo (compito semplice presumo)
c'è solo 2 colori per HA, uno blu * su ---- + ---- e uno rosa/viola * giù
-- secondo, quando l'HA deve disegnare le cose dell'HA nel grafico, c'è LENGTH -- lunghezza dell'HA
--- terzo, quando si avvicina all'inversione a U, la barra HA diventerà sempre più corta
supponiamo, quando la LUNGHEZZA della barra HA (per tentativi ed errori) più corta di 0,4 cm, allora la disegniamo NERA (cioè non blu / rosa)
ci avvertirà di NON ENTRARE e di uscire presto
In questo modo, dobbiamo solo entrare (senza paura) secondo la forza del trend HA --- proprio come la mia altra idea, molto SEMPLICE, estremamente utile
coder -- per favore non usare l'ex4 che allego, basta premere [SEARCH] nel forum e digitare henki ashi, cerca qualche MQ4 con tutto il codice
------
quando hai completato o dopo averlo cambiato a 3 o 4 colori (potrebbe essere 3 colori, piuttosto che 4 colori)
per favore mandami un messaggio privato PM a me, con il LINK, così posso caricarlo, dopo che hai iniziato, se vuoi, potrei darti un altro indicatore che ti dirà qual è il momento migliore per cambiare anche il colore in NERO -- il nero è una specie di colore di avvertimento
----- cioè puoi SCARICARE l'ex4 che ho allegato, ma usa un altro MQ4 pls ---
grazie, sarà un buon indicatore per tutti noi, e la codifica dovrebbe essere abbastanza semplice, e dritto in avanti
il codice è all'inizio, simile al diagramma di cui sopra
se la mia ipotesi è corretta, g_ibuf_## controlla la lunghezza della barra HA
dobbiamo solo stampare tutti i valori di g_ibuf con la funzione chiamata "comment"
poi eseguire il grafico per alcuni giorni, e dare un'occhiata al valore g_ibuf, quando diventa piccolo, e notare il VALORE di quella variabile
poi quando abbiamo un intervallo di tempo da codificare, ci limitiamo a codificare da 1 a 2 colori - diciamo, nero e grigio scuro nella codifica, quando l'istogramma g_ibuf è PIÙ PICCOLO di un certo valore annotato
quindi si suppone che sia semplice - altrimenti, potrebbe provare a tentativi ed errori per trovare il miglior valore di misura (per essere più piccolo di)
sinceramente
xx3xxx -- Ho caricato il mio MQ4 per la versione 4 lì, credo che tu possa usare questo, questo sembra essere più lungo e più spesso dell'altro HA che ho
L'indicatore Trix ha bisogno di un allarme
Coder Guru o chiunque altro, potete programmare un suono, un avviso di notifica e un avviso di posta t3_trix_x2roc_clr_nrp_mtf.mq4t3_trix_x2roc_clr_nrp_mtf.mq4e in questo indicatore Trix ogni volta che la linea Trix di lungo termine o di breve termine cambia colore da rosso a verde o viceversa. Grazie