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
A EA não está abrindo uma posição contrária
Olá Codificadores MQL,
Tenho uma pergunta a respeito de um bug em minha EA. Parece não abrir uma posição de contra tendência (ver captura de tela em anexo).
Está fechando o comércio, mas não está abrindo um novo comércio para seguir a nova direção dada à tendência.
// Indicator HMA NMC
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
[/CODE]
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
//+-------------------------------------------------------------------------------+
//| Close BUY |
//+-------------------------------------------------------------------------------+
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==-1) //is buy?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
//+--------------------------------------------------------------------------------+
//| Close SELL |
//+--------------------------------------------------------------------------------+
if(trendc_c!=trendp_c)
{
if(OrderType()==OP_SELL)
{
if(trendc_c==1) // SELL
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
Agradecemos antecipadamente!
Prezado Mladen
É possível 'adicionar banda' no indicador anexo, como neste post: https: //www.mql5.com/en/forum/172894/page45
Esse indicador é da seção de elite, mas eu gosto da maneira como você adiciona a banda nele
Obrigado por qualquer ajuda
secretcodesecretcode
Aqui está uma versão com bandas adicionadas: ema_variation__filter_amp_bands_amp_mtf.ex4
secretcodeHere é uma versão com bandas adicionadas : ema_variation__filter_amp_bands_amp_mtf.ex4
Obrigado Mladen Eu realmente aprecio sua experiência
Atenciosamente
secretcode
Olá Codificadores MQL,
Tenho uma pergunta a respeito de um bug em minha EA. Parece não abrir uma posição de contra tendência (ver captura de tela em anexo).
Está fechando o comércio, mas não está abrindo um novo comércio para seguir a nova direção dada à tendência.
// Indicator HMA NMC
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
[/CODE]
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
//+-------------------------------------------------------------------------------+
//| Close BUY |
//+-------------------------------------------------------------------------------+
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==-1) //is buy?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
//+--------------------------------------------------------------------------------+
//| Close SELL |
//+--------------------------------------------------------------------------------+
if(trendc_c!=trendp_c)
{
if(OrderType()==OP_SELL)
{
if(trendc_c==1) // SELL
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
tfi_mercados
Tente mover as duas declarações de quebra uma linha (para estar dentro do "}" )
Olá Mladen,
você teria a gentileza de me dizer onde eu errei com este código.
Indicador anexo Todos os pivôs, eu o retrabalhei para mostrar também a linha aberta do dia anterior, a linha fechada do dia anterior e a linha aberta do dia atual.
mas o indicador é inconsistente. Ele sempre mostra os pivôs corretamente, mas raramente se mostra meu código adicionado para as linhas abertas, fechadas e abertas do dia anterior.
Não entendo por que, o código parece o mesmo que o código pivô, então tudo deve aparecer e às vezes aparece, mas nem sempre aparece. Eu fiz algo errado, mas não tenho certeza do quê.
Muito obrigado.
PG
allpivots_daily.mq4
Olá Mladen,
você teria a gentileza de me dizer onde eu errei com este código.
Indicador anexo Todos os pivôs, eu o retrabalhei para mostrar também a linha aberta do dia anterior, a linha fechada do dia anterior e a linha aberta do dia atual.
mas o indicador é inconsistente. Ele sempre mostra os pivôs corretamente, mas raramente se mostra meu código adicionado para as linhas abertas, fechadas e abertas do dia anterior.
Não entendo por que, o código parece o mesmo que o código pivô, então tudo deve aparecer e às vezes aparece, mas nem sempre aparece. Eu fiz algo errado, mas não tenho certeza do quê.
Muito obrigado.
PG
allpivots_daily.mq4PG
Funciona bem (veja a lista de objetos criados). Verifique se há sobreposição de preços (que poderiam fazer com que algumas linhas fossem invisíveis)
Além disso, não esqueça de adicionar também suas linhas recém-criadas na função ObjectDel()
Obrigado Mladen, eu continuei verificando e parece ser picuinhas sobre nomes de linhas dentro do "" que não é o que eu espero.
Como sempre, obrigado por seu tempo e ajuda,
PG
PG
Funciona bem (veja a lista de objetos criados). Verifique se há sobreposição de preços (que poderiam fazer com que algumas linhas fossem invisíveis)
Obrigado Mladen, eu continuei verificando e parece ser picuinhas sobre nomes de linhas dentro do "" que não é o que eu espero.
Como sempre, obrigado por seu tempo e ajuda,
PGOs nomes do objeto devem ser sempre únicos - mas até onde eu vi você cuidou disso
Por favor, ajude-me para isso https://www.mql5.com/en/forum/174385/page263
Obrigado, Mladen,
tenho um problema e é que :
meu primeiro sinal compra depois da última venda, preciso que seja depois que a barra for fechada Acima da resistência ou "srUp" do código
mesmo para venda, tem que ser bar fechado abaixo do suporte ou "srDown".
Como eu poderia consertar isso no código?
E em segundo lugar, foi perguntado anteriormente o número um, como eu poderia consertar no meu código para mostrar o primeiro sinal de compra após a venda em cores diferentes?
#propriedade estrita
#janela_do_cartão_indicador de propriedade
#property indicator_buffers 4
#indicador de propriedade_color1 clrLime
#indicador de propriedade_color2 clrRed
#indicador de propriedade_color3 clrMagenta
#indicador de propriedade_color4 clrCyan
#define BUY 1
#define SELL 2
compra dupla[],
Vender[],
FirstBuy[],
FirstSell[];
int OnInit() {
SetIndexBuffer(0,FirstBuy);
SetIndexBuffer(1,FirstSell);
SetIndexBuffer(2,Buy);
SetIndexBuffer(3,Vender);
for(int i=0; i<4; i++) {
SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}
SetIndexArrow (0,233);
SetIndexArrow (1.234);
SetSetaIndexArrow (2.233);
SetSetaIndexSeta (3.234);
return(INIT_SUCCEED); }
void OnDeinit(const int reason) {}
int OnCalculate(const int taxas_total, const int prev_calculado, const const datatime &time[],
const double &open[], const double &high[], const double &low[],
const double &close[], const long &tick_volume[], const long &volume[],
const int &spread[]) {
estática no últimoSinal=0;
for(int i=MathMin(rates_total-prev_calculado, rates_total-1); i>=0; i--) {
FirstBuy=FirstSell=Buy=Buy=Sell=EMPTY_VALUE;
data/hora quando=Tempo;
int w=iBarShift(NULL,PERÍODO_H4, quando),
x=iBarShift(NULL,PERÍODO_H1, quando),
y=iBarShift(NULL,PERÍODO_M15,quando),
z=iBarShift(NULL,PERÍODO_M5, quando);
duplo srUpH4 = iCustom(NULL,PERÍODO_H4, "Suporte e Resistência (Barry)",0,w),
srDownH4 = iCustom(NULL,PERÍODO_H4, "Apoio e Resistência (Barry)",1,w),
MidH4 = (srUpH4+srDownH4)/2,
srUpH1 = iCustom(NULL,PERÍODO_H1, "Apoio e Resistência (Barry)",0,x),
srDownH1 = iCustom(NULL,PERÍODO_H1, "Apoio e Resistência (Barry)",1,x),
MidH1 = (srUpH1+srDownH1)/2,
srUp15M = iCustom(NULL,PERÍODO_M15, "Apoio e Resistência (Barry)",0,y),
srDown15M = iCustom(NULL,PERÍODO_M15, "Apoio e Resistência (Barry)",1,y),
Mid15M = (srUp15M+srDown15M)/2,
srUp5M = iCustom(NULL,PERÍODO_M5, "Apoio e Resistência (Barry)",0,z),
srDown5M = iCustom(NULL,PERÍODO_M5, "Apoio e Resistência (Barry)",1,z),
Mid5M = (srUp5M+srDown5M)/2,
srUp = iCustom(NULL,0, "Support and Resistance (Barry)",0,i),
srDown = iCustom(NULL,0, "Support and Resistance (Barry)",1,i);
if(ClosesrUp) { // primeira compra de sinal
Buy=Low-_Point; }
senão {
Buy=EMPTY_VALUE; }
if(Fechar>Mid5M && Fechar>srUp) { // segunda compra de sinal
Buy=Low-_Point; }
senão {
Buy=EMPTY_VALUE; }
if(Fechar>MidH4 && Fechar>Mid15M && Fechar<srDown) { // primeiro sinal de venda
Sell=High+_Point; }
senão {
Sell=EMPTY_VALUE; }
if(Close<Mid5M && Close<srDown) { // segundo sinal de venda
Sell=High+_Point; }
senão {
Sell=EMPTY_VALUE; }}}}
return(rates_total);}
isto é o que eu tenho para os alertas, devo usá-lo ou, em vez disso, usar o Alerta( t("texto para pop up"))?
void SoundAlert(data hora i, string dir) {
data estática hora últimoAlerta=0;
if(lastAlert!=i) {
Alerta(StringFormat("sinal %s em %s a %s",dir,Symbol(),TimeToStr(i)))
lastAlert=i;}}}}
obrigado mladen