![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
modificação rápida da EA
Hi,
Preciso de alguma ajuda, tentei mudar o código abaixo, mas a EA continuou a travar o MT4.
Quero que a ordem feche quando a barra atual (portanto, a barra onde a ordem foi executada) fechar. Basicamente, troque uma barra.
Este é o código original, ele negocia de sinal a sinal.
//| 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);
}
//+------------------------------------------------------------------+Alguém pode me ajudar?
Favor ajudar!!!!!
Eu preciso de uma ea faz o seguinte
em um determinado tempo, ordem de compra ou venda de 4pc
funções:
tempo de abertura do pedido (variável 00-24)
ordem1 vender ou comprar lote (0,01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)
ordem2 vender ou comprar lote (0,01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)
ordem3 vender ou comprar lote (0,01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)
ordem4 vender ou comprar lote (0,01 .0,02... 1) TP (+ xx pips from oppen) SL (- xx pips from open)
OBRIGATÓRIO
Necessidade de acrescentar à minha EA um código para desativá-la a um determinado nível de preço
Olá,
Preciso acrescentar ao meu Ea um código para desativá-lo e habilitá-lo a determinados níveis de preço.
Pesquisei e descobri que posso fazer isso com
# iclude<WinUser32mqh
bool externo Desativar Ea = verdadeiro // de X (examply1.4420) a Y(examply1.4380) e de Z (examply1.4480) a N(examply1.4520) //
bool externo Enable Ea = true // de R(examply -1,4420) a T(examply -1,4480)
Agradecemos a ajuda para traduzir estas condições em um código, então na caixa de diálogo da EA eu poderia apenas inserir o nível de preço para desativar / habilitar a EA.
Após algumas pesquisas e estudos, descobri que escrever na função inicial da EA um código o iniciaria em certas condições.
Assim, sob a função de início de experto, escrevi o seguinte:
if(PRICE_MEDIAN (SellLevel-Point*BufferPips))
retorno (0)
------------------------------------------------------------------------------------------------------------------
BufferPips adicionei no duplo externo para que na caixa de diálogo eu pudesse mudar o seu valor.
Não sou se PRICE_MEDIAN for uma boa escolha.
Estou recebendo erro de compilação - parêntese esquerda desequilibrada.![](https://c.mql5.com/forextsd/smiles/confused_smile.png)
Ajuda apreciada
me ajude no comércio de automóveis
Olá, Sr. Guru!
Tenho comércio de automóveis, mas não funciona, por favor me ajude!
Oi Mario,
Eu acho que esta condição se(current_shortEma == current_longEma)
nunca é verdade. geralmente para detectar uma cruz você precisa fazer isso
if(current_shortEma > current_longEma && last_shortEma < last_longEma){
//cruzar do fundo
}
if(current_shortEma last_longEma){
//cruzar de cima
}
Informações mais detalhadas aqui:
https://www.mql5.com/en/forum/trading_systems
Obrigado
MIkhail
Eu também recebi um pedido de codificação ---- preciso de um codificador (tarefa muito simples)
Nós sabemos que HA -- henki ashi raramente se engana
durante a consolidação, ou quase em retorno, ficaria cada vez mais curto
enquanto que quando a tendência ainda for forte, HA para aquele bar será LONGO
ANTES
seria legal se tivéssemos um indicador que nos dissesse a força da tendência
a idéia é fácil
--- primeiro, deve ser qualquer HA fará (eu encerro apenas meu ex4, mas tenho que encontrar um MQ4 -- para HA) e modificá-lo (tarefa simples eu assumo)
há apenas 2 cores para HA , uma azul *up ---- + ---- e uma rosa/violeta *down
-- segundo, quando o HA tem que desenhar o material HA no gráfico, há COMPRIMENTO - comprimento desse HA
--- terceiro, quando se aproxima a inversão de marcha, a barra HA ficará cada vez mais curta
vamos supor, quando o COMPRIMENTO da barra HA (por tentativa e erro) for inferior a 0,4 cm, então a desenhamos PRETO (ou seja, não azul / rosa)
nos advertirá para NÃO ENTRAR e sair em breve
Assim, só temos que entrar (sem medo) de acordo com a força da tendência HA --- assim como minha outra idéia, muito SIMPLES, extremamente útil
codificador -- por favor, não use o ex4 que eu anexei, apenas aperte [PESQUISA] no fórum e digite henki ashi , procure por algum MQ4 com todo o código
------
quando você completar ou depois de mudar para 3 a 4 cores (poderia ser 3 cores, ao invés de 4 cores)
por favor, envie-me uma mensagem particular PM, com o LINK, para que eu possa carregá-lo, depois de você começar, se quiser, eu poderia lhe dar outro indicador que lhe dirá qual é o melhor momento para mudar de cor para PRETO também -- preto é uma espécie de cor de aviso
----- ou seja, você pode DOWNLOADAR o ex4 que eu incluí, mas use outro MQ4 pls ---
Obrigado, será um bom indicador para todos nós, e a codificação deve ser bem simples e direta.
o código está no início, semelhante ao diagrama acima
se meu palpite estiver correto, g_ibuf_### controla o comprimento da barra HA
só temos que imprimir todo o valor g_ibuf com a função chamada "comentário".
então execute o gráfico por alguns dias, e dê uma olhada no valor g_ibuf, quando ele ficar pequeno, e anote o VALOR dessa variável
então quando temos um espaço de tempo para codificar, codificamos apenas 1 a 2 cores -- digamos, preto e cinza escuro na codificação, quando o histograma g_ibuf é mais pequeno do que um certo valor anotado
então suponha que seja simples - caso contrário, poderia tentar tentar a tentativa e o erro para encontrar o VALOR mais adequado (ser mais pequeno do que)
sinceramente
xx3xxx -- Eu carrego lá meu MQ4 para a versão 4, acho que você pode usar este, este parece ser mais longo e grosso do que o outro HA que eu tenho
O indicador Trix precisa de alerta
Coder Guru ou qualquer outra pessoa, você pode programar um alerta de som, alerta de notificação e t3_trix_x2roc_clr_nrp_mtf.mq4t3_trix_x2roc_clr_nrp_mtf.mq4e neste indicador Trix sempre que a linha Trix a longo ou curto prazo mudar de cor de vermelho para verde ou vice-versa. Obrigado