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
PS: apenas para lembrar - o 3º parâmetro na chamada iCustom() é o nome do indicador. O primeiro parâmetro é o símbolo e o segundo parâmetro é o período de tempo desejado.
Faça-o assim:
and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following :
[PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0);MLaden
Estou chamando um indicador personalizado usando icustom em um loop para vários pares. Posso ver na guia dos especialistas que o indicador é descarregado e depois recarregado para o próximo par. Isto significa que a chamada iCustom está recalculando os valores para todas as barras máximas no gráfico cada vez que é carregado? Também se você chamar a Barra N e depois a Barra N+1 como chamadas sucessivas separadas, a segunda chamada requer um recálculo completo? E finalmente, se as chamadas sucessivas são para buffers diferentes, cada uma delas é recalculada.
Lembro que você disse que cada chamada iCustom gera uma instância separada, então minha presunção é que cada uma é recalculada em sua totalidade.
Obrigado pela resposta,
Tzuman
Tzuman,
Metatrader cria uma nova instância de indicador para cada novo conjunto de valores de parâmetro (exceção: número e índice tampão ).
Um exemplo - as duas chamadas seguintes :
criará duas instâncias de um indicador (mesmo que você use por exemplo "n" em vez de 1 e 2 e atribua valores diferentes a n antes de uma nova chamada ao iCustom(), ele criará instâncias separadas. É por isso que alguns indicadores adaptativos não podem ser escritos usando iCustom(), mas devem ser feitos em uma forma de funções)
Agora se trata de instâncias. Mas se o indicador é carregado e depois descarregado é geralmente um problema com parâmetros (a parte de descarregamento geralmente indica isso). Se os tipos de parâmetros não corresponderem, então ele fará a proeza "carregar - descarregar". Verifique se por acidente alguns dos parâmetros passados ao iCustom não são do tipo esperado (ou alguns dos parâmetros são omitidos acidentalmente e isso pode causar a confusão dos tipos de parâmetros).
MLaden
Estou chamando um indicador personalizado usando icustom em um loop para vários pares. Posso ver na guia dos especialistas que o indicador é descarregado e depois recarregado para o próximo par. Isto significa que a chamada iCustom está recalculando os valores para todas as barras máximas no gráfico cada vez que é carregado? Também se você chamar a Barra N e depois a Barra N+1 como chamadas sucessivas separadas, a segunda chamada requer um recálculo completo? E finalmente, se as chamadas sucessivas são para buffers diferentes, cada uma delas é recalculada.
Lembro que você disse que cada chamada iCustom gera uma instância separada, então minha presunção é que cada uma é recalculada em sua totalidade.
Obrigado pela resposta,
TzumanEu não queria interromper suas recentes discussões
por favor, dê uma olhada nesta nova linha
https://www.mql5.com/en/forum/182212
Como vejo, a mrtools já resolveu
Eu não queria interromper suas recentes discussões
por favor, dê uma olhada nesta nova linha
https://www.mql5.com/en/forum/182212Tzuman,
Metatrader cria uma nova instância de indicador para cada novo conjunto de valores de parâmetro (exceção: número e índice tampão).
Um exemplo - as duas chamadas seguintes :
;criará duas instâncias de um indicador (mesmo que você use por exemplo "n" em vez de 1 e 2 e atribua valores diferentes a n antes de uma nova chamada ao iCustom(), ele criará instâncias separadas. É por isso que alguns indicadores adaptativos não podem ser escritos usando iCustom(), mas devem ser feitos em uma forma de funções)
Agora trata-se de instâncias. Mas se o indicador é carregado e depois descarregado é geralmente um problema com parâmetros (a parte de descarregamento geralmente indica isso). Se os tipos de parâmetros não corresponderem, então ele fará a proeza "carregar - descarregar". Verifique se por acidente alguns dos parâmetros passados ao iCustom não são do tipo esperado (ou alguns dos parâmetros são omitidos acidentalmente e isso pode causar a confusão dos tipos de parâmetros).Muito obrigado pela explicação. Assumi que a carga/descarga era causada pela mudança do Símbolo a cada iteração do laço, de modo que ele tinha que carregar todos os novos valores de dados,
por exemplo, iCustom("EURUSD",0, "nome" ,1,0,0); & iCustom("GBPUSD",0,nome" ,1,0,0);
Vou verificar cuidadosamente os parâmetros, mas procedi a escrever minhas próprias funções médias de MA com algum plágio. Apenas olhando para a utilização do processador no Task Manager, parece que minha utilização da CPU diminuiu em 90-95%. Estou feliz
olá guru im novato em codificação você pode me ajudar em "parar de abrir ordem múltipla quando o takeprofit acerta" eu tento código como este, mas não funciona. você poderia me ajudar por favor?
data/horaestática fecharT;
for(int a=OrdersHistoryTotal()-1; a>=0; a--) {if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==verdadeiro) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime(); if((buy===true ||| sell===true) && closeT===Time[0]){buy=false; sell=false;} } } }
obrigado mladen, vou tentar seu código.
olá guru im novato em codificação você pode me ajudar em "parar de abrir ordem múltipla quando o takeprofit acerta" eu tento código como este, mas não funciona. você poderia me ajudar por favor?
data estática fechamentoT;
for(int a=OrdersHistoryTotal()-1; a>=0; a--) {if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==verdadeiro) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime(); if((buy===true ||| sell===true) && closeT===Time[0]){buy=false; sell=false;} } } }Você pode tentar algo assim (ele verificará se a última ordem fechada é fechada em uma barra atual e se um take profit foi atingido) :
int ticket=-1;
for(int a=OrdersHistoryTotal()-1; a>=0; a--)
{
if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY))
if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime())
{
closeT=OrderCloseTime();
ticket=OrderTicket();
}
}
if (ticket>-1)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(iBarShift(symb,0,closeT)==0 && OrderClosePrice()==OrderTakeProfit())
{
buy =false;
sell=false;
}
}Oi mladen,
Seu script Symbols.mq4 funcionou perfeitamente no MT4 build 509, mas ele lança um erro de arquivo no build 636 (ao abrir o symbols.raw).
Você gostaria de compartilhar uma versão atualizada para o MT4 build 636?
Muito obrigado com antecedência.
Cumprimentos,
Timo.