Houve um erro no código do arquivo check_freezelevel.mq5 (linha 140), faltando a instrução `if(!TP_check)`.
bool CheckPositionForFREEZE_LEVEL(ulong ticket)
{
//--- obter o nível SYMBOL_TRADE_FREEZE_LEVELint freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
if(freeze_level!=0)
{
PrintFormat("SYMBOL_TRADE_FREEZE_LEVEL=%d: Cannot modify order"+
" nearer than %d points from the activation price",freeze_level,freeze_level);
}
//--- selecione a posição para trabalharif(!PositionSelectByTicket(ticket))
{
//--- falha ao selecionar a posiçãoreturn(false);
}
//--- obter os dados do pedido ENUM_POSITION_TYPE pos_type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
double sl=PositionGetDouble(POSITION_SL);
double tp=PositionGetDouble(POSITION_TP);
//--- resultado da verificação de StopLoss e TakeProfitbool SL_check=false,TP_check=false;
//--- tipo de posiçãoswitch(pos_type)
{
//--- comprarcasePOSITION_TYPE_BUY:
{
SL_check=(Bid-sl>freeze_level*_Point);
if(!SL_check)
PrintFormat("Position %s #%d cannot be modified: Bid-StopLoss=%d points"+
" < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
EnumToString(pos_type),ticket,(int)((Bid-sl)/_Point),freeze_level);
TP_check=(tp-Bid>freeze_level*_Point);
if(!TP_check)
PrintFormat("Position %s #%d cannot be modified: TakeProfit-Bid=%d points"+
" < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
EnumToString(pos_type),ticket,(int)((tp-Bid)/_Point),freeze_level);
//--- retorna o resultado da verificaçãoreturn(SL_check&&TP_check);
}
break;
//--- vendercasePOSITION_TYPE_SELL:
{
SL_check=(sl-Ask>freeze_level*_Point);
if(!SL_check)
PrintFormat("Position %s cannot be modified: StopLoss-Ask=%d points"+
" < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
EnumToString(pos_type),(int)((sl-Ask)/_Point),freeze_level);
TP_check=(Ask-tp>freeze_level*_Point);
PrintFormat(" Position %s cannot be modified: Ask-TakeProfit=%d points"+
" < SYMBOL_TRADE_FREEZE_LEVEL=%d points)",
EnumToString(pos_type),(int)((Ask-tp)/_Point),freeze_level);
//--- retorna o resultado da verificaçãoreturn(SL_check&&TP_check);
}
break;
}
//--- a posição não passou na verificaçãoreturn (false);
}
Olá, meu EA negocia com base em eventos de notícias e não funciona no testador de estratégia, mas é lucrativo na conta real. O fato de meu EA não funcionar no testador fará com que ele seja reprovado na validação de mercado?
Em geral, a verificação dos níveis de TakeProfit e StopLoss com a distância mínima de SYMBOL_TRADE_STOPS_LEVEL levada em consideração tem o seguinte aspecto:
A compra é feita pelo preço Ask - os níveis TakeProfit e StopLoss devem estar a umadistância de pelo menos SYMBOL_TRADE_STOPS_LEVEL pontos do preço Bid.
A venda é feita pelo preço Bid - os níveis TakeProfit e StopLoss devem estar a uma distância de pelo menos pontos SYMBOL_TRADE_STOPS_LEVEL do preço Ask.
Entendo que a compra é feita pelo preço de venda e a venda é feita pelo preço de compra. Também consigo entender por que estamos usando o preço de compra para comparar quando compramos para stop loss e take profit (porque estaremos fazendo a operação oposta, vendendo, portanto, o preço de compra).
No entanto, não entendo por que o take profit também não é comparado com o preço de venda ao comprar, porque se o compararmos apenas com o preço de compra, o usuário poderia definir o valor mais alto do que o preço de compra, mas mais baixo do que o preço de venda, o que não faz sentido algum?
meu EA foi recusado porque a validação informa "nenhuma atividade de negociação". Como meu EA foi projetado para negociar em uma data específica de notícias, eu precisaria saber quais dados históricos são usados durante a validação do EA. Assim, eu poderia fornecer uma data padrão para fins de validação.
@Tim Arthur Herbert Kasprzyk#: meu EA foi recusado porque a validação informa "nenhuma atividade de negociação". Como meu EA foi projetado para negociar em uma data específica de notícias, eu precisaria saber quais dados históricos são usados durante a validação do EA. Assim, eu poderia fornecer uma data padrão para fins de validação.
Parece que você não leu este tópico antes de postar ...
De acordo com as regras do produto Mercado, você não tem permissão para restringir ou limitar seu EA a um único símbolo. Seu EA deve funcionar para todos os símbolos, mesmo que seu uso pretendido seja para um único símbolo.
Você não tem permissão para limitar seu EA de forma alguma. Ele deve ser capaz de negociar com tudo e qualquer coisa, mesmo que tenha sido projetado para índices. Leia as regras do mercado.
Parece que você não leu este tópico antes de postar...
Olá, Fernando, obrigado por seu feedabck. Na verdade, meu EA não está restrito a nenhum símbolo ou período de tempo. Ele requer apenas uma data de notícias específica, como a data de notícias da taxa de juros do FED. Também forneço uma data de notícias padrão no EA. Portanto, em teoria, ele deve passar na validação. Mas pode ser que o processo de validação esteja usando dados históricos que não cobrem minha data padrão. Portanto, seria útil entender quais dados históricos são usados (não qual símbolo ou período de tempo, isso eu posso ver no relatório).
@Tim Arthur Herbert Kasprzyk#: Olá, Fernando, obrigado por seu feedback. Na verdade, meu EA não está restrito a nenhum símbolo ou período de tempo. Ele requer apenas uma data de notícias específica, como a data de notícias da taxa de juros do FED. Também forneço uma data de notícias padrão no EA. Portanto, em teoria, ele deve ser aprovado na validação. Mas pode ser que o processo de validação esteja usando dados históricos que não cobrem minha data padrão. Portanto, seria útil entender quais dados históricos são usados (não qual símbolo ou período de tempo, isso eu posso ver no relatório).
Isso ainda é uma limitação. Remova toda e qualquer limitação definindo os valores dos parâmetros padrão para permitir a negociação independentemente de qualquer data, símbolo ou período de tempo.
O EA também precisará ler as especificações do contrato e ajustar-se de acordo, caso contrário, falhará no processo de validação.
Codifiquei um EA de "Teste de validação" que simplesmente abre uma posição com o volume mínimo permitido e fecha a posição após alguns segundos, mas o mesmo erro ocorreu.
Acabei de ler um comentário sobre o relatório de validação que diz "nenhuma atividade de negociação". Todos os EAs devem negociar? Meu EA está apenas desenhando coisas no gráfico, ou deveria ter sido um indicador?
Alguém está tendo esse tipo de problema? Na conta DEMO da Metaquotes, ele funciona normalmente e, no teste, não passou na validação.
teste em EURUSD,H1 (netting) 2021.06.30 23:59:59 A função ExpertRemove() chamada se removeu dentro de OnDeinit se removeu em 99% do intervalo de teste relatório do testador de estratégia 1 total de negociações
Houve um erro no código do arquivo check_freezelevel.mq5 (linha 140), faltando a instrução `if(!TP_check)`.
Em geral, a verificação dos níveis de TakeProfit e StopLoss com a distância mínima de SYMBOL_TRADE_STOPS_LEVEL levada em consideração tem o seguinte aspecto:
Bid - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss - Ask >= SYMBOL_TRADE_STOPS_LEVEL
Alguém pode me explicar a dúvida que estou tendo?
Entendo que a compra é feita pelo preço de venda e a venda é feita pelo preço de compra. Também consigo entender por que estamos usando o preço de compra para comparar quando compramos para stop loss e take profit (porque estaremos fazendo a operação oposta, vendendo, portanto, o preço de compra).
No entanto, não entendo por que o take profit também não é comparado com o preço de venda ao comprar, porque se o compararmos apenas com o preço de compra, o usuário poderia definir o valor mais alto do que o preço de compra, mas mais baixo do que o preço de venda, o que não faz sentido algum?
Obrigado por sua atenção.
Hi,
meu EA foi recusado porque a validação informa "nenhuma atividade de negociação". Como meu EA foi projetado para negociar em uma data específica de notícias, eu precisaria saber quais dados históricos são usados durante a validação do EA. Assim, eu poderia fornecer uma data padrão para fins de validação.
Desde já, obrigado
Tim
Parece que você não leu este tópico antes de postar ...
Parece que você não leu este tópico antes de postar...
Isso ainda é uma limitação. Remova toda e qualquer limitação definindo os valores dos parâmetros padrão para permitir a negociação independentemente de qualquer data, símbolo ou período de tempo.
O EA também precisará ler as especificações do contrato e ajustar-se de acordo, caso contrário, falhará no processo de validação.
Já verifiquei várias vezes no testador de estratégia e meu EA funciona sem nenhum erro.
Codifiquei um EA de "Teste de validação" que simplesmente abre uma posição com o volume mínimo permitido e fecha a posição após alguns segundos, mas o mesmo erro ocorreu.
Acabei de ler um comentário sobre o relatório de validação que diz "nenhuma atividade de negociação". Todos os EAs devem negociar? Meu EA está apenas desenhando coisas no gráfico, ou deveria ter sido um indicador?
Alguém está tendo esse tipo de problema? Na conta DEMO da Metaquotes, ele funciona normalmente e, no teste, não passou na validação.
teste em EURUSD,H1 (netting) 2021.06.30 23:59:59 A função ExpertRemove() chamada se removeu dentro de OnDeinit se removeu em 99% do intervalo de teste relatório do testador de estratégia 1 total de negociações