Universal MA Cross EA - página 64

 

Olá, alguém poderia, por favor, acrescentar um código de breakeven a este Ea.

O preço se move x pips se move stop para quebrar mais x pips. Eu tentei, mas continuo recebendo vários erros.https://www.mql5.com/en/forum

Obrigado antecipadamente por qualquer ajuda.

Arquivos anexados:
 

é isso que você está procurando?

Mjack59_59@yahoo.com:
Olá, alguém poderia, por favor, acrescentar um código de breakeven a este Ea.

O preço se move x pips se move para quebrar o preço mais x pips. Eu tentei, mas continuo recebendo vários erros.https://www.mql5.com/en/forum

Agradecemos antecipadamente por qualquer ajuda.

não exatamente o que você quer, suponho, já que não estou claro o que você quer dizer... mas comece com isto e me avise...

sn

Arquivos anexados:
 

não funcionou para o chefe corretor de 5 dígitos ?

firedave:
Eu tento fazer um EA para qualquer estratégia de Moving Average Cross, tento torná-lo universal. Portanto, por favor, me informe caso tenha alguma sugestão para adicionar a este EA.

Configuração comum :

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

StopLoss (padrão 100)

Defina seu Stop Loss. Use 0 (zero) se você não gosta de usar o Stop Loss ( não recomendado ).

TakeProfit (padrão 200)

Defina seu Take Profit. Use 0 (zero) se você gosta de usar o alvo aberto.

Ajuste do Trailing Stop :

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

ver.6 TrailingStopType (padrão 1)

Definir o tipo de parada de arraste. 1:começará a trailingStop se o lucro em pips for maior / igual com TrailingStop. 2:começará a trailing assim que o lucro for comercializado. (adicionará outro tipo de trailing stop se sugerido, a última sugestão é SafeZone trailing stop post #99 https://www.mql5.com/en/forum/general )

TrailingStop (padrão 40)

Estabelecer o Trailing Stop. Use 0 (zero) se você não usar o recurso de parada de arrasto.

Ajuste da média móvel :

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

Período FastMAP (padrão 10)

Período médio de rápida movimentação.

FastMAType (EMA padrão / 1)

Média móvel rápida Tipo 0:SMA 1:EMA 2:SMMA 3:LWMA

FastMAPrice (padrão Fechar / 0)

Preço médio aplicado 0:Fechado 1:Aberto 2:Alto 3:Baixo 4:Mediano 5:Típico 6:Ponderado

ver.7.2 FastMAshift (padrão 0)

Deslocamento médio rápido

Período SlowMAP (padrão 80)

Período médio móvel lento.

SlowMAType (EMA padrão / 1)

Média móvel lenta Tipo 0:SMA 1:EMA 2:SMMA 3:LWMA

SlowMAPrice (padrão Fechar / 0)

Preço médio aplicado 0:Fechado 1:Aberto 2:Alto 3:Baixo 4:Mediano 5:Típico 6:Ponderado

ver.7.2 FastMAshift (padrão 0)

Deslocamento médio lento

Distância mínima transversal :

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

ver.2 MinCrossDistance (default 0)

Estabelecer a distância entre FastMA e SlowMA para ser considerada como uma cruz válida. Use 0 (zero) para desabilitar este filtro.

ver.7 MaxLookUp (padrão 1)

Definir o número de barras após a cruz para continuar verificando a condição de entrada em relação à distância mínima entre FastMA e SlowMA. Necessita de MinCrosDistance > 0 para habilitar este recurso. Use 0 (zero) para desabilitar este recurso.

Ajuste de Saída :

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

StopAndReverse (padrão verdadeiro)

Se definido como VERDADEIRO, sairá de qualquer comércio e inverterá a posição quando o sinal mudar.

PureSAR (padrão falso)

Se definido como VERDADEIRO, não usará Stop Loss - Take Profit - e Trailing Stop. Isto está sempre em jogo.

ver.7.2 ExitOnCross (default false)

Se definido como VERDADEIRO, sairá de qualquer comércio se houver uma cruz oposta sem considerar nenhum filtro adicional. Portanto, a saída se baseia puramente na cruz média móvel.

Terceiro ajuste de MA :

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

ver.5 UseThirdMA (default false)

Se ajustado para TRUE (e UseCounterTrend = FALSE), somente negociará de acordo com a direção da ThirdMA, acima para COMPRAR e abaixo para VENDER.

ver.5 UseCounterTrend (padrão falso)

Se definido para TRUE manterá o comércio mesmo que contra a direção de ThirdMA, mas com StopLoss e TakeProfit diferentes. Necessita usarTerceiroMA = VERDADEIRO para ativar este recurso.

ver.7 OnlyCounterTrend (padrão falso)

Se definido como VERDADEIRO, o EA só definirá o EA para o comércio de tendência contrária, significa COMPRAR se cruzar abaixo de ThirdMA e VENDER se cruzar acima de ThirdMA. Necessita de UseCounterTrend = TRUE para ativar este recurso.

ver.5 TerceiroMapa período (default 100)

Terceiro período médio móvel.

ver.5 TerceiroMAType (EMA padrão / 1)

Terceira média móvel tipo 0:SMA 1:EMA 2:SMMA 3:LWMA

ver.5 ThirdMAPrice (default Fechar / 0)

Terceiro preço médio móvel aplicado 0:Fechado 1:Aberto 2:Alto 3:Baixo 4:Mediano 5:Típico 6:Ponderado

ver.7.2 ThridMAshift (padrão 0)

Terceiro turno médio móvel

ver.5 CTStopLoss (padrão 0)

Defina seu Stop Loss para o comércio da CounterTrend. Use 0 (zero) se você não gosta de usar o Stop Loss ( não recomendado ).

ver.5 CTTakeProfit (padrão 0)

Defina seu Take Profit para o comércio da CounterTrend. Use 0 (zero) se você gosta de usar o alvo aberto.

Ajuste do filtro pivô :

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

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

Se você gosta de filtrar o comércio, só COMPRAR se o cruzamento de MA lento e rápido ocorrer entre S1 e S2 e só VENDER se o cruzamento de MA lento e rápido ocorrer entre R1 e R2.

Configuração do pedido :

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

ReverseCondition (default false)

Defina VERDADEIRO para reverter a condição de entrada.

ver.3 ConfirmedOnEntry (default true)

Se definido como VERDADEIRO, entrará/sairá do comércio na próxima barra após a confirmação da cruz. Se definido como FALSO, entrará/sairá do comércio assim que houver uma cruz.

ver.4 OneEntryPerBar (default true)

Se definido como VERDADEIRO, só será negociado uma vez em uma barra. Se ajustado para FALSO, será negociado mais de uma vez em uma barra se a condição de entrada ainda for válida, embora ainda uma negociação de cada vez.

NúmeroOfTries (padrão 5)

Número de tentativas se o pedido for rejeitado pelo sistema.

Slippage (padrão 5)

Ajuste da página deslizante.

MagicNumber (padrão 1234)

Use para gerar o Número Mágico. Mude este número SOMENTE se você gosta de executar a EA no mesmo par e no mesmo período de tempo, mas com configurações diferentes.

Múltiplas configurações de comércio aberto :

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

ver.5 MaxOpenTrade (padrão 2)

Número máximo de comércio aberto de uma vez. Este ajuste é usado quando StopAndReverse / PureSAR = FALSO para que o EA não feche a ordem aberta quando houver um sinal oposto, mas sim abra uma nova negociação. Estabeleça o número de trocas abertas permitido. Se StopAndReverse / PureSAR = TRUE esta configuração sempre = 1, significará uma negociação de cada vez.

ver.6 MinPriceDistance (padrão 5)

Se múltiplas trocas comerciais abertas permitirem (através do conjunto MaxOpenOrder>1 e OneEntryPerBar=FALSE), este número determinará a distância mínima entre cada troca na mesma direção.

Ajuste do filtro de tempo :

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

UseHourTrade (padrão falso)

Se definido como VERDADEIRO, o EA só estará ativo em um determinado tempo.

Hora de início (padrão 10)

Hora em que a EA começa ativa (uso com UseHourTrade = TRUE).

FimHoraHora (padrão 11)

Tempo quando a EA pára ativa (uso com UseHourTrade = TRUE).

Configuração de Gerenciamento de Lote e Dinheiro :

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

Lotes (padrão 1)

Número de lotes por comércio.

MM (falso padrão)

Se definido como VERDADEIRO, utilizará o build in money management.

AccountIsMicro (falso padrão)

Se utilizar Micro Account, defina isso como VERDADEIRO.

Risco (padrão 10)

Usar com MM = TRUE para definir o risco por comércio.

Ajuste de Alerta Cruzado :

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

ver.5 EnableAlert (default true)

Irá soar um alerta quando houver uma cruz em média móvel, uma cruz para cima ou uma cruz para baixo.

ver.5 SoundFilename (nome do filtro sonoro padrão "alert.wav")

O nome do arquivo para o alerta.

Definição do BackTest :

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

PrintControl (padrão verdadeiro)

Imprimir alguns comentários sobre o backtesting.

Show_Settings (default true)

Mostrar configuração na tabela.

Avise-me se você ainda tiver problemas com a configuração. Obrigado ao codersguru e ao pengie por vários códigos parciais. Espero que esta ajuda

Diário :

-----------

versão.6:

- corrigidoBug ConfirmedOnEntry.

- adicionar trailing stop imediato.

- adicionar MinPriceDistance para múltiplas negociações abertas.

versão.7:

- adicionar MaxLookUp para continuar verificando a entrada após determinada barra da cruz em relação ao MinCrossDistance.

- adicionar o recurso OnlyCounterTrend se estiver usando o filtro ThirdMA.

versão.7.1:

- corrigido o bug do MinCrossDistance.

versão.7.2:

- corrigido o bug do MinCrossDistance para ConfirmedOnEntry = FALSE.

- adicionado o parâmetro MA shift.

- adicionada a funcionalidade ExitOnCross.

versão.7.3:

- corrigido na tela COMMENT.

versão.8.0:

- adicionado Filtro Pivot.

versão.8.1:

- revisou algum código porque Build 206 bugs.
 

stoploss / takeprofitinválido

Olá Serpentsnoir,

Testei esta versão em 5 dígitos, com

StopLoss=30

TakeProfit=40

e o erro gerado, como mostrado aqui;

2011.04.27 22:47:44 universalMACrossEA[5 Dig]-V4 EURGBP,M5: sn Debug à venda: 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

Você poderia me ensinar como resolver as 130 paradas inválidas (TP, SL)?

Abraço

Takingpip

 

perda parada inválida, erro 130

Os níveis StopLoss e TakeProfit não podem estar muito próximos do mercado. A distância mínima dos níveis de parada em pontos pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. No caso de níveis de parada errados ou não normalizados, será gerado o erro 130 (ERR_INVALID_STOPS).

O acima é da documentação das Metaquotes.

O erro 130 ocorre quando você define o stop loss muito próximo do preço Bid/Ask. Isso geralmente significa que você deve aumentar o stop loss para corrigir o problema ou, possivelmente, não deve estar modificando a ordem para definir um stop loss, mas, em vez disso, deve estar fechando-a, pois está muito próxima do stop loss atual na ordem.

Note que MarketInfo com a Mode_Stoplevel pode retornar um zero, pelo menos com minha corretora FXCM, então você pode ter que definir manualmente.

 

perda parada inválida, erro 130

Obrigado pela explicação Tzuman.

Por exemplo, até eu defini o

SL = 200

TP = 150

ainda está gerando erro 130 e meu corretor só precisa de um mínimo de 10pip para obter lucro.

Sou novo na programação da MT, ainda estou aprendendo. Você poderia explicar onde inserir o parâmetro de monitoramento MODE_STOPLEVEL no código ?

Abraço

 
serpentsnoir:
não exatamente o que você quer, suponho, já que não estou claro o que você quer dizer... mas comece com isso e me avise... sn

Olá, eu baixei sua versão com o recurso BE, mas ao compilar eu recebi este erro: "UseBreakEven' - expressão de comparação esperada

Por favor, você pode verificar isso?

Obrigado, por favor.

 
FxCba:
Olá, eu baixei sua versão com o recurso BE, mas ao compilar eu recebi este erro: "UseBreakEven' - expressão de comparação esperada

Por favor, você pode verificar isso?

Obrigado

Eu prefiro usar inteiros para bandeiras do que booleanos. Isso não afeta o funcionamento da EA. Basta mudar o tipo para booleano, se você quiser que o erro desapareça.

sn

 
serpentsnoir:
Prefiro usar inteiros para bandeiras em vez de booleanos. Isso não afeta o funcionamento da EA. Basta mudar o tipo para booleano se você quiser que o erro desapareça.sn

Você quer acrescentar uma linha como esta? " bool UseBreakEven = falso;"

(desculpe a pergunta, mas não entendo o código Metatrader)

Eu fiz dessa maneira e não recebi nenhum erro.

 

O limite de lucro diário é adicionado à EA.

Olá a todos,

Gostaria de saber se alguém poderia acrescentar a característica abaixo, à cruz UMA EA anexada.

corda externa DayProfitHelp = "--Enterpretar DayProfitLimit em USD ou DayProfitLimitPct em porcentagem do saldo do último dia. Defina ambos 0 para desativar";

DayProfitLimitDayProfitLimit externo = 0,0;

DayProfitLimitPct duplo externo = 0,0;

DayProfitResetHour externo int = 0;

dayProfit DayProfitGlobal externo = FALSO;

Achei esta função muito útil em outra EA, e basicamente o que ela faz é parar as ordens de abertura da EA se um "x%" tiver sido atingido antes da hora de parada.

Além disso, as características de rastreamento não estão funcionando corretamente na UMAcrossEA. Se alguém pudesse ajudar, eu apreciaria.

Muito obrigado.

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

externo int SL_pips = 290;

externo int MA_distance_pips = 20;

período_mA_interior externo = 16;

TP_pips = 20; TP_pips = 20; TP_pips = 20;

externo int TradeVolume = 1;

extern string HourTradeHelp = "--Set if EA will work only on a specific period of the day. ForceClose fechará todas as ordens abertas";

bool externo UseHourTrade = FALSE;

externo int StartHourTrade = 21;

externamente int EndHourTrade = 3;

bool ForceClose externo = FALSO;

corda externa MinToKeepTradeHelp = "--Fechará a ordem uma vez que seu tempo de vida seja maior do que MinToKeepTrade". Set 0 to disable";

Exterior int MinToKeepTrade = 0;

corda externa DayProfitHelp = "--DiaLimit em USD ou DayProfitLimitPct em porcentagem do saldo do último dia. Defina ambos 0 para desativar";

DayProfitLimitDayProfitLimit externo = 0,0;

DayProfitLimitPct duplo externo = 0,0;

DayProfitResetHour externo int = 0;

dayProfit DayProfitGlobal externo = FALSO;

extern int ModificarIntervalMin = 1;

extern int MagicNumber = 2265;

extern bool Hedge=false;

int g_ord_total_172;

int g_ticket_176;

int g_ticket_180;

int g_minute_184;

bool g_bool_188;

bool gi_192;

bool gi_196;

bool gi_200;

bool gi_204;

duplo g_price_208;

duplo gd_216;

duplo g_price_224;

duplo gd_232;

duplo gd_240;

duplo gd_248;

duplo gd_256;

duplo gd_264;

double gd_272;

double gd_280;

double g_ima_288;

double gd_296; double gd_296;

double gd_304;

double gd_312;

double g_lots_320;

void init() {

gd_240 = MarketInfo(Symbol(), MODE_STOPLEVEL);

gd_256 = gd_240 * Ponto;

gd_248 = (gd_240 + 1.0) * Ponto;

gd_216 = SL_pips * Ponto;

gd_232 = MA_distance_pips * Ponto;

gd_280 = TP_pips * Ponto;

g_minuto_184 = Minuto();

}

int start() {

duplo ld_8;

double ld_16;

if (AccountBalance() - gd_304 != 0.0) ld_8 = 100.0 * (gd_304 / (AccountBalance() - gd_304)));

caso contrário ld_8 = 0;

if (AccountBalance() - gd_304 != 0,0) ld_16 = 100,0 * ((AccountBalance() - gd_304 + gd_312) / (AccountBalance() - gd_304)) - 100,0;

caso contrário ld_16 = 0;

gd_296 = Ask - Bid;

gd_304 = GetDailyProfit();

g_lots_320 = Lots();

if (DayProfitLimitPct > 0.0) gd_312 = (AccountBalance() - gd_304) * (DayProfitLimitPct / 100.0);

else gd_312 = DayProfitLimit;

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

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

string ls_0 = "Symbol: " + Símbolo()

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

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

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

+ "\nC atual P/L: $" + DoubleToStr(AccountProfit(), 2)

+ "\nNível de parada: + "DoubleToStr(gd_240 / 10.0, 1) + " pips" + "pips" + "pips" + "DoubleToStr(gd_240 / 10.0, 1)

+ "\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) {

Comentário(ls_0

+ "lucro diário alcançado... Vejo vocês amanhã... Boa noite :-)");

RemoveAllOrders(1);

retornar (0);

}

g_ord_total_172 = OrderTotal();

gi_192 = FALSO;

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) {

se (OrderType() == OP_BUY) {

gi_200 = VERDADEIRO;

Close_B(OrderTicket(), OrderLots());

}

se (OrderType() == OP_SELL) {

gi_204 = VERDADEIRO;

Close_S(OrderTicket(), OrderLots());

}

se (OrderType() == OP_BUYLIMIT) {

gd_264 = NormalizeDouble(OrderOpenPrice(), Dígitos);

g_ticket_176 = OrderTicket();

gi_192 = VERDADEIRO;

}

se (OrderType() == OP_SELLLIMIT) {

gd_272 = NormalizeDouble(OrderOpenPrice(), Dígitos);

g_ticket_180 = OrderTicket();

gi_196 = VERDADEIRO;

}

}

}

se (g_bool_188) {

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

Modify_order();

Open_order();

} else {

Arquivos anexados:
Razão: