Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 249
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
Que tipo de erro é esse, eu o tomo do lado do CD, um mau treino?
Que tipo de erro é esse, eu o retiro do lado do mau balanço do CD?
128
ERR_TRADE_TIMEOUT
O tempo limite expirou
Pedaço do manipulador:
128
ERR_TRADE_TIMEOUT
Expirou o prazo para a execução do comércio
Pedaço do manipulador:
Tenho esses manipuladores de erros em meu código, mas eles nunca existiram. Hoje decidi verificar meu programa em demonstração de uma corretora popular e me deparei com tais erros pela primeira vez.
Eu entendo corretamente que este é um problema de hardware na corretora e não do meu lado?
Por favor, diga-me se esta função está correta. A idéia é calcular se o preço ultrapassou o preço médio durante uma certa quantidade de velas anteriores.
a função não é executada, o resultado deve ser: se não tiver quebrado o returnToMA ==1, se tiver quebrado o returnToMA ==0
talvez haja outra solução para este problema?
returnToMA = MAtouch(TRADE_TF2,TRADE_TF2_MA,barscount)
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if(iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))) {regresso(0);intervalo;}
if (iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))) {regresso(0);intervalo;}
senão voltar(1);
}
Por favor, diga-me se esta função está correta. A idéia é calcular se o preço ultrapassou o preço médio durante uma certa quantidade de velas anteriores.
a função não é executada, o resultado deve ser: se não tiver quebrado o returnToMA ==1, se tiver quebrado o returnToMA ==0
Talvez existam outras soluções para este problema?
Sua função sempre terá zero porque o máximo ou mínimo é sempre maior/menos do que ou igual ao MA.
O castiçal deve ser descrito por pelo menos dois parâmetros em seu caso:
1) Definir onde o castiçal se abriu - acima ou abaixo do MA
2. Dependendo de 1, verifique se o MA foi tocado.
Você sempre terá zero na função - já que o máximo ou mínimo é sempre maior/menos do que ou igual ao MA.
O castiçal deve ser descrito por pelo menos dois parâmetros em seu caso:
1. determinar onde o castiçal se abriu - acima ou abaixo do MA
2. Dependendo de 1, verifique se o MA foi tocado.
Obrigado. Eu adicionei a condição, mas ela sempre retorna 1. Posso mudar os parênteses em algum lugar? Ou quebrar não funciona e a função termina atribuindo 1 ao valor de retorno
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)))
{regresso(0);intervalo;}
if ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)))
{regresso(0);intervalo;}
mais retorno(1);
}
Obrigado. Eu adicionei a condição, mas ela sempre retorna 1. Posso mudar os parênteses em algum lugar? Ou quebrar não funciona e a função termina atribuindo 1 ao valor de retorno
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)))
{regresso(0);intervalo;}
if ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)))
{regresso(0);intervalo;}
mais retorno(1);
}
Tente assim
Ele retornará 1 se a condição for cumprida - houve um cruzamento - não é isso que queremos?
Tente isto
Ele retornará 1 se a condição for cumprida - houve um cruzamento - não é isso que queremos?
Obrigado, funciona como um relógio com sua versão do código
Boa tarde!
Rapazes, vocês podem me dizer se podem programar o indicador no gráfico? Ou apenas manualmente?
Em caso afirmativo, qual comando é dado?