Ajuda na codificação - página 395

 

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!

Arquivos anexados:
 
secretcode:
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

secretcode

secretcode

Aqui está uma versão com bandas adicionadas: ema_variation__filter_amp_bands_amp_mtf.ex4

Arquivos anexados:
 
mladen:
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

 
tfi_markets:
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!

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

Arquivos anexados:
 
pgtips:
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

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)

Além disso, não esqueça de adicionar também suas linhas recém-criadas na função ObjectDel()

Arquivos anexados:
objects.gif  49 kb
 

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

mladen:
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)

 
pgtips:
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

Os 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

Arquivos anexados:
signals.png  31 kb