Universale MA Croce EA - pagina 64

 

Ciao, qualcuno potrebbe per favore aggiungere un codice di pareggio a questo Ea.

Il prezzo si muove di x pips, sposta lo stop al break even più x pips. Ho provato ma continuo a ricevere errori multipli.https://www.mql5.com/en/forum

Grazie in anticipo per qualsiasi aiuto.

 

è questo che stai cercando?

Mjack59_59@yahoo.com:
Ciao qualcuno potrebbe per favore aggiungere un codice di breakeven a questo Ea.

Il prezzo si muove di x pips, sposta lo stop al break even più x pips. Ho provato ma continuo a ricevere errori multipli.https://www.mql5.com/en/forum

Grazie in anticipo per qualsiasi aiuto.

non è esattamente quello che vuoi, immagino, dato che non mi è chiaro cosa intendi... ma inizia con questo e fammi sapere...

sn

 

non ha funzionato per il capo broker a 5 cifre?

firedave:
Cerco di fare un EA per qualsiasi strategia Moving Average Cross, cercando di renderlo universale. Quindi fatemi sapere se avete qualche suggerimento da aggiungere a questo EA.

Impostazione comune:

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

StopLoss (default 100)

Imposta il tuo Stop Loss. Usate 0 (zero) se non vi piace usare lo Stop Loss (non raccomandato).

TakeProfit (default 200)

Imposta il tuo Take Profit. Usa 0 (zero) se ti piace usare il target aperto.

Impostazione Trailing Stop :

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

ver.6 TrailingStopType (default 1)

Imposta il tipo di trailing stop. 1:inizierà il trailing se il profitto in pip è maggiore / uguale a TrailingStop. 2:inizierà il trailing non appena il trade è in profitto. (aggiungerà altri tipi di trailing stop se suggerito, l'ultimo suggerimento è SafeZone trailing stop post #99 https://www.mql5.com/en/forum/general )

TrailingStop (default 40)

Imposta il Trailing Stop. Usa 0 (zero) se non usi la funzione trailing stop.

Impostazione della media mobile:

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

FastMAPeriod (default 10)

Periodo della media mobile veloce.

FastMAType (default EMA / 1)

Tipo di media mobile veloce 0:SMA 1:EMA 2:SMMA 3:LWMA

FastMAPrice (predefinito Close / 0)

Fast Moving Average Prezzo applicato 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (default 0)

Spostamento della media mobile veloce

SlowMAPeriod (default 80)

Periodo della media mobile lenta.

SlowMAType (default EMA / 1)

Tipo di media mobile lenta 0:SMA 1:EMA 2:SMMA 3:LWMA

SlowMAPrice (predefinito Close / 0)

Media mobile lenta applicata al prezzo 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 FastMAshift (default 0)

Spostamento della media mobile lenta

Distanza minima di incrocio :

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

ver.2 MinCrossDistance (default 0)

Imposta la distanza minima tra FastMA e SlowMA da considerare come un incrocio valido. Usa 0 (zero) per disabilitare questo filtro.

ver.7 MaxLookUp (default 1)

Imposta il numero di barre dopo l'incrocio per continuare a controllare la condizione di entrata rispetto alla distanza minima tra FastMA e SlowMA. Serve MinCrosDistance > 0 per abilitare questa funzione. Usa 0 (zero) per disabilitare questa funzione.

Uscire dall'impostazione:

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

StopAndReverse (default true)

Se impostato su TRUE, uscirà da qualsiasi trade e invertirà la posizione quando il segnale cambia.

PureSAR (default false)

Se impostato su TRUE, non userà Stop Loss - Take Profit - e Trailing Stop. Questa impostazione è sempre in gioco.

ver.7.2 ExitOnCross (default false)

Se impostato su TRUE, uscirà da qualsiasi trade se c'è un cross opposto senza considerare alcun filtro aggiuntivo. Quindi esce puramente sulla base dell'incrocio della media mobile.

Terza impostazione MA:

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

ver.5 UseThirdMA (default false)

Se impostata su TRUE (e UseCounterTrend = FALSE), si scambierà solo in base alla direzione della terza MA, sopra per BUY e sotto per SELL.

ver.5 UseCounterTrend (default false)

Se impostato a TRUE manterrà la negoziazione anche se in direzione contraria alla terza MA, ma con StopLoss e TakeProfit diversi. E' necessario UseThirdMA = TRUE per abilitare questa funzione.

ver.7 OnlyCounterTrend (default false)

Se impostato a TRUE imposterà l'EA solo per fare trading in controtendenza, cioè COMPRARE se l'incrocio è sotto la Terza MA e VENDERE se l'incrocio è sopra la Terza MA. Serve UseCounterTrend = TRUE per abilitare questa funzione.

ver.5 ThirdMAPeriod (default 100)

Terzo periodo della media mobile.

ver.5 ThirdMAType (default EMA / 1)

Terzo tipo di media mobile 0:SMA 1:EMA 2:SMMA 3:LWMA

ver.5 ThirdMAPrice (default Close / 0)

Terza media mobile applicata al prezzo 0:Close 1:Open 2:High 3:Low 4:Median 5:Typical 6:Weighted

ver.7.2 ThridMAshift (default 0)

Spostamento della terza media mobile

ver.5 CTStopLoss (default 0)

Imposta il vostro Stop Loss per la negoziazione in controtendenza. Usa 0 (zero) se non ti piace usare lo Stop Loss (non raccomandato).

ver.5 CTTakeProfit (default 0)

Imposta il vostro Take Profit per la negoziazione in Controtendenza. Usate 0 (zero) se vi piace usare il target aperto.

Impostazione filtro Pivot :

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

ver.8.0 Use.Pivot.Filter (default false)

Impostare su true se si vuole filtrare il trade, solo BUY se l'incrocio di Slow e Fast MA avviene tra S1 e S2 e solo SELL se l'incrocio di Slow e Fast MA avviene tra R1 e R2.

Impostazione dell'ordine:

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

ReverseCondition (default false)

Impostare TRUE per invertire la condizione di entrata.

ver.3 ConfirmedOnEntry (default true)

Se impostato su TRUE, entrerà/uscirà dalla negoziazione nella barra successiva alla conferma della croce. Se impostato a FALSE, entrerà/uscirà dalla negoziazione non appena c'è un incrocio.

ver.4 OneEntryPerBar (default true)

Se impostato su TRUE, effettuerà una sola operazione su una barra. Se impostato a FALSE, scambierà più di una volta su una barra se la condizione di entrata è ancora valida, anche se si tratta sempre di un'operazione alla volta.

NumberOfTries (default 5)

Numero di tentativi se l'ordine viene rifiutato dal sistema.

Slippage (default 5)

Impostazione dello slippage.

MagicNumber (predefinito 1234)

Usare per generare il Magic Number. Cambia questo numero SOLO se vuoi eseguire l'EA sulla stessa coppia e sullo stesso time frame ma con impostazioni diverse.

Impostazione apertura multipla:

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

ver.5 MaxOpenTrade (default 2)

Numero massimo di operazioni aperte in una sola volta. Questa impostazione è usata quando StopAndReverse / PureSAR = FALSE in modo che l'EA non chiuda l'ordine aperto quando c'è un segnale opposto, ma apra una nuova operazione. Imposta il numero di trade aperti consentiti. Se StopAndReverse / PureSAR = TRUE questa impostazione sarà sempre = 1, cioè un trade alla volta.

ver.6 MinPriceDistance (default 5)

Se si abilita l'apertura multipla (impostando MaxOpenOrder>1 e OneEntryPerBar=FALSE) questo numero determinerà la distanza minima tra ogni trade nella stessa direzione.

Impostazione filtro tempo :

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

UseHourTrade (default false)

Se impostato su TRUE, l'EA è attivo solo in determinate ore.

StartHour (default 10)

Ora in cui l'EA inizia ad essere attivo (da usare con UseHourTrade = TRUE).

EndHour (default 11)

Ora in cui l'EA si ferma (usare con UseHourTrade = TRUE).

Impostazione lotto e gestione denaro :

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

Lotti (default 1)

Numero di lotti per operazione.

MM (default false)

Se impostato su TRUE, userà la gestione del denaro integrata.

AccountIsMicro (default false)

Se si usa un conto micro, impostarlo a VERO.

Risk (default 10)

Usare con MM = TRUE per impostare il rischio per operazione.

Impostazione degli avvisi incrociati :

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

ver.5 EnableAlert (default true)

Suonerà un allarme quando c'è un cross della media mobile, un cross UP o un cross DOWN.

ver.5 SoundFilename (default "alert.wav")

Il nome del file per l'allarme.

Impostazione BackTest :

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

PrintControl (default true)

Stampa qualche commento sul backtesting.

Show_Settings (default true)

Mostra le impostazioni sul grafico.

Fatemi sapere se avete ancora problemi con le impostazioni. Grazie a codersguru e pengie per diversi codici parziali. Spero che questo aiuti

Diario :

-----------

versione.6:

- corretto bug ConfirmedOnEntry.

- aggiunto il trailing stop immediato.

- aggiunto MinPriceDistance per operazioni multiple aperte.

versione.7:

- aggiunta la funzione MaxLookUp per continuare a controllare l'entrata dopo una certa barra dall'incrocio rispetto alla MinCrossDistance.

- aggiungere la funzione OnlyCounterTrend se si usa il filtro ThirdMA.

versione.7.1:

- corretto bug MinCrossDistance.

versione.7.2:

- corretto bug MinCrossDistance per ConfirmedOnEntry = FALSE.

- aggiunto il parametro MA shift.

- aggiunta funzione ExitOnCross.

versione.7.3:

- corretto il COMMENTO della visualizzazione sullo schermo.

versione.8.0:

- aggiunto filtro Pivot.

versione.8.1:

- rivisto un po' di codice perché Build 206 bugs.
 

stoploss / takeprofitnon valido

Ciao Serpentsnoir,

Ho testato questa versione su 5 cifre, con

StopLoss=30

TakeProfit=40

e l'errore generato come mostrato qui;

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5: sn Debug on sell: Bid,Slippage,aStopLoss,aTakeProfit 0.88554/30.00000/0.88466/0.89066

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5: sn Debug on sell: ticket,err,count -1/130/5

Potresti insegnarmi come risolvere il 130 è stop non valido (TP, SL)?

Saluti

Takingpip

 

stop loss non valido, errore 130

I livelli di StopLoss e TakeProfit non possono essere troppo vicini al mercato. La distanza minima dei livelli di stop in punti può essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. In caso di livelli di stop errati o non normalizzati, verrà generato l'errore 130 (ERR_INVALID_STOPS).

Quanto sopra è tratto dalla documentazione di Metaquotes.

L'errore 130 si verifica quando si imposta lo stop loss troppo vicino al prezzo Bid/Ask. Generalmente significa che dovreste aumentare lo stop loss per correggere il problema o forse, non dovreste modificare l'ordine per impostare uno stop loss ma invece dovreste chiuderlo in quanto è molto vicino all'attuale stop loss dell'ordine.

Nota che MarketInfo con Mode_Stoplevel può restituire uno zero, almeno lo fa con il mio broker FXCM quindi potresti doverlo impostare manualmente.

 

stop loss non valido, errore 130

Grazie per la spiegazione Tzuman.

Per esempio anche io ho impostato lo

SL = 200

TP = 150

sta ancora generando l'errore 130 e il mio broker ha solo bisogno di un minimo di 10pip per lo stoploss o il take profit.

Sono nuovo della programmazione MT, sto ancora imparando. Potresti spiegarmi dove inserire il parametro di monitoraggio MODE_STOPLEVEL nel codice?

Saluti

 
serpentsnoir:
non è esattamente quello che vuoi, immagino, dato che non mi è chiaro cosa intendi... ma inizia con questo e fammi sapere... sn

Ciao, ho scaricato la tua versione con la funzione BE ma durante la compilazione ho ottenuto questo errore: "'UseBreakEven' - espressione di confronto attesa

Per favore, puoi controllare?

Grazie

 
FxCba:
Ciao, ho scaricato la tua versione con la funzione BE ma durante la compilazione ho ottenuto questo errore: "'UseBreakEven' - espressione di confronto attesa

Per favore, puoi controllare?

Grazie

Preferisco usare numeri interi per le bandiere piuttosto che booleani. Non influisce sul funzionamento dell'EA. Cambia semplicemente il tipo in booleano se vuoi che l'errore sparisca.

sn

 
serpentsnoir:
Preferisco usare numeri interi per le bandiere piuttosto che booleani. Non influisce sul funzionamento dell'EA. Cambia semplicemente il tipo in booleano se vuoi che l'errore sparisca. sn

Intendi aggiungere una linea come questa? " bool UseBreakEven = false;"

(scusa la domanda ma non capisco il codice di Metatrader)

L'ho fatto in questo modo e non ho ottenuto alcun errore.

 

Limite di profitto giornaliero da aggiungere all'EA.

Ciao a tutti,

Vorrei sapere se qualcuno può aggiungere la funzione qui sotto, al cross EA UMA allegato.

extern string DayProfitHelp = "--Inserisci DayProfitLimit in USD o DayProfitLimitPct in percentuale del saldo dell'ultimo giorno. Imposta entrambi a 0 per disabilitare";

extern double DayProfitLimit = 0.0;

extern double DayProfitLimitPct = 0.0;

extern int DayProfitResetHour = 0;

extern bool DayProfitGlobal = FALSE;

Ho trovato questa funzione molto utile in un altro EA, e fondamentalmente ciò che fa è fermare gli ordini di apertura dell'EA se un "x%" è stato colpito prima del tempo di Stop.

Anche la funzione di trailing non funziona correttamente su UMAcrossEA. Se qualcuno può aiutarmi lo apprezzo molto.

Grazie mille

===============================

extern int SL_pips = 290;

extern int MA_distance_pips = 20;

extern int MA_period = 16;

extern int TP_pips = 20;

extern int TradeVolume = 1;

extern string HourTradeHelp = "--Set se l'EA lavorerà solo in un periodo specifico della giornata. ForceClose chiuderà tutti gli ordini aperti";

extern bool UseHourTrade = FALSE;

extern int StartHourTrade = 21;

extern int EndHourTrade = 3;

extern bool ForceClose = FALSE;

extern string MinToKeepTradeHelp = "-Chiuderà l'ordine quando il suo tempo di vita è maggiore di MinutesToKeepTrade. Impostate 0 per disabilitare";

extern int MinutesToKeepTrade = 0;

extern string DayProfitHelp = "--Inserisci DayProfitLimit in USD o DayProfitLimitPct in percentuale del saldo dell'ultimo giorno. Imposta entrambi a 0 per disabilitare";

extern double DayProfitLimit = 0.0;

extern double DayProfitLimitPct = 0.0;

extern int DayProfitResetHour = 0;

extern bool DayProfitGlobal = FALSE;

extern int ModifyIntervalMin = 1;

extern int MagicNumber = 2265;

extern bool Hedge = FALSO;

int g_ord_total_172;

int g_ticket_176;

int g_ticket_180;

int g_minuto_184;

bool g_bool_188;

bool gi_192;

bool gi_196;

bool gi_200;

bool gi_204;

double g_price_208;

doppio gd_216;

doppio g_price_224

doppio gd_232

doppio gd_240

doppio gd_248

doppio gd_256;

doppio gd_264;

doppio gd_272;

doppio gd_280;

doppio g_ima_288;

doppio gd_296;

doppio gd_304;

doppio gd_312

doppio g_lots_320;

void init() {

gd_240 = MarketInfo(Symbol(), MODE_STOPLEVEL);

gd_256 = gd_240 * Punto;

gd_248 = (gd_240 + 1.0) * Punto;

gd_216 = SL_pips * Punto;

gd_232 = MA_distance_pips * Punto;

gd_280 = TP_pips * Punto;

g_minuto_184 = Minuto();

}

int start() {

doppio ld_8;

doppio ld_16;

se (SaldoConto() - gd_304 != 0,0) ld_8 = 100,0 * (gd_304 / (SaldoConto() - gd_304));

altrimenti ld_8 = 0;

se (SaldoConto() - gd_304 !.= 0.0) ld_16 = 100.0 * ((SaldoConto() - gd_304 + gd_312) / (SaldoConto() - gd_304)) - 100.0;

altrimenti ld_16 = 0;

gd_296 = Ask - Bid;

gd_304 = GetDailyProfit();

g_lots_320 = Lots();

se (DayProfitLimitPct > 0.0) gd_312 = (ContoBilancio() - gd_304) * (DayProfitLimitPct / 100.0);

altrimenti gd_312 = DayProfitLimit;

g_bool_188 = !(UseHourTrade && !IsTradeTime(StartHourTrade, EndHourTrade));

if (g_bool_188 && GlobalVariableGet("gISEAStop") == 1.0) g_bool_188 = FALSE;

stringa ls_0 = "Simbolo: " + Simbolo()

+ "\nSpread: " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD) / 10.0, 1) + " pips"

+ "\nDaily P/L: $" + DoubleToStr(gd_304, 2) + " (" + DoubleToStr(ld_8, 2) + "%)"

+ "\nLimit P/L: $" + DoubleToStr(gd_312, 2) + " (" + DoubleToStr(ld_16, 2) + "%)"

+ "\nCurrent P/L: $" + DoubleToStr(ContoProfit(), 2)

+ "\nLivello di stop: " + DoubleToStr(gd_240 / 10.0, 1) + "pips"

+ "\nVolume: " + DoubleToStr(g_lots_320, 1) + " ($" + DoubleToStr(g_lots_320 * MarketInfo(Symbol(), MODE_LOTSIZE), 2) + ")";

if (gd_312 > 0,0 && gd_304 + AccountProfit() >= gd_312) {

Commento(ls_0

+ "Raggiunto il profitto giornaliero... Ci vediamo domani... Buona notte :-)");

RemoveAllOrders(1);

return (0);

}

g_ord_total_172 = OrdersTotal();

gi_192 = FALSE;

gi_196 = FALSO;

gi_200 = FALSO;

gi_204 = FALSO;

for (int l_ord_total_24 = g_ord_total_172; l_ord_total_24 >= 0; l_ord_total_24--) {

if (OrderSelect(l_ord_total_24, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if (OrderType() == OP_BUY) {

gi_200 = TRUE;

Close_B(OrderTicket(), OrderLots());

}

se (OrderType() == OP_SELL) {

gi_204 = TRUE;

Close_S(OrderTicket(), OrderLots());

}

se (OrderType() == OP_BUYLIMIT) {

gd_264 = NormalizeDouble(OrderOpenPrice(), Digits);

g_ticket_176 = OrderTicket();

gi_192 = TRUE;

}

if (OrderType() == OP_SELLLIMIT) {

gd_272 = NormalizeDouble(OrderOpenPrice(), Digits);

g_ticket_180 = OrderTicket();

gi_196 = TRUE;

}

}

}

if (g_bool_188) {

g_ima_288 = iMA(NULL, 0, MA_period, 0, MODE_LWMA, PRICE_TYPICAL, 0);

Modifica_ordine();

Aprire_ordine();

} else {

File:
Motivazione: