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
Precisa de ajuda com a função iCustom para esta EA pode Chamar um indicador personalizado.
Olá a todos,
Eu gostaria de adicionar isto (Entry.mq4) indi (swb grid 4.1.0.3_EA) EA com
iCustom funciona para que eu e nós possamos usar este indicador na estratégia da EA.
o EA já usa 3 indicadores MT4 Bandas de Bollinger, Stochastic e RSI e tem
para que você possa selecionar um ou todos eles a serem utilizados, selecionando TRUE ou FALSE
e eu gostaria de acrescentar este 4º indi(Entry.mq4) à EA.
Eu gostaria muito que alguém pudesse me ajudar.
Obrigado.
o EA e o indi em anexo abaixo.
Noob MQL4 ajuda necessária para entender esta matriz
Olá, codificadores
Alguém gostaria de me educar um pouco sobre arrays
Ou talvez eu esteja tendo mais dificuldade para entender este laço, pois ele pertence a esta matriz.
#property copyright "Unfinished POS by Agent86"
duplo v1[];
duplo v2[];
duplo val1;
duplo val2;
int start()
{
while(i>=0)
{
val1=iFractals(NULL, 0, MODE_UPPER,i);
se (val1 > 0)
{
v1=Alto;
}
senão
{
v1=v1;
}
val2=iFractals(NULL, 0, MODE_LOWER,i);
se (val2 > 0)
{
v2=baixo;
}
senão v2=v2;
i--;
}
retorno(0);
}
É um fractal básico, e ainda assim não consigo me referir a nenhum elemento da matriz.
Quero ser capaz de incrementar i++ de alguma forma e imprimir (v1); ou imprimir o valor anterior antes do 0 ou EMPTY_VALUE.
Se eu estiver mesmo indo na direção certa com isto.
Estou tendo problemas.
Imprimir (v1): sempre == 0 e imprime 0
Eu meio que entendo porque na verdade está descendo para -1 que == 0
Como e onde eu poderia colocar as declarações impressas para que eu possa ver o que está acontecendo?
Eu tentei multidões ou métodos e reinicializei i=0 para tentar e alternar o loop para que eu pudesse me referir aos elementos v1, mas todas as tentativas falharam.
Basicamente, quero ver os fractais anteriores ou marcá-los como A alto, B baixo etc. para possível uso futuro em um esquema ABCD tipo EA
Por enquanto, quero principalmente Imprimir v1 para que eu possa ver o que está fazendo.
Talvez eu possa projetar algo para selecionar um Fractal Anterior como A_high e/ou B_low ou algum esquema desse tipo.
Estou no caminho errado com isto?
Por favor, avise-me
Obrigado
Em vez disso, eu optaria por A FOR loop. Enquanto os loops podem levar a bloqueios se você se esquecer de incluir o i... Como você sabe o número exato de barras, é mais fácil de usar, mais o i nunca será < 0. Isso ajuda a evitar confusão.
Para (int i=Bars-1;i>0;i--) {
// código
}
Tente ajustar todos os valores da matriz para 0, depois volte e atribua valores indicadores. Tente também imprimir() diretamente após atribuir seu valor indicador. Veja se ele está realmente retornando alguma coisa.
Sua melhor aposta, em meu palpite, é realmente atribuir um tamanho ao array. Digamos, 1000 posições. É improvável que você precise de tantas, além disso, isso reduzirá os cálculos que você está fazendo. Tudo o que você precisa fazer então é fazer um loop através das últimas 999 barras a 0 e atribuir valores. Lembro que o MT4 tem problemas com as initilizações da matriz e outras coisas mais.
Perguntas sobre a matriz
Em vez disso, eu optaria por A FOR loop. Enquanto os loops podem levar a bloqueios se você se esquecer de incluir o i... Como você sabe o número exato de barras, é mais fácil de usar, mais o i nunca será < 0. Isso ajuda a evitar confusão.
Para (int i=Bars-1;i>0;i--) {
// código
}
Tente ajustar todos os valores da matriz para 0, depois volte e atribua valores indicadores. Tente também imprimir() diretamente após atribuir seu valor indicador. Veja se ele está realmente retornando alguma coisa.
Sua melhor aposta, em meu palpite, é realmente atribuir um tamanho à matriz. Digamos, 1000 posições. É improvável que você precise de tantas, além disso, isso reduzirá os cálculos que está fazendo. Tudo o que você precisa fazer então é fazer um loop através das últimas 999 barras a 0 e atribuir valores. Lembro que o MT4 tem problemas com as initilizações da matriz e outras coisas mais.Ok, obrigado, vou tentar.
Embora as declarações estejam funcionando bem, não está me ajudando a obter os elementos da matriz que eu quero imprimir/visualizar, etc.
Vou trabalhar no que você disse e fazer alguns testes e postar de volta.
Obrigado
Em vez disso, eu optaria por A FOR loop. Enquanto os loops podem levar a bloqueios se você se esquecer de incluir o i... Como você sabe o número exato de barras, é mais fácil de usar, mais o i nunca será < 0. Isso ajuda a evitar confusão.
Para (int i=Bars-1;i>0;i--) {
// código
}
Tente ajustar todos os valores da matriz para 0, depois volte e atribua valores indicadores. Tente também imprimir() diretamente após atribuir seu valor indicador. Veja se ele está realmente retornando alguma coisa.
Sua melhor aposta, em meu palpite, é realmente atribuir um tamanho à matriz. Digamos, 1000 posições. É improvável que você precise de tantas, além disso, isso reduzirá os cálculos que está fazendo. Tudo o que você precisa fazer então é fazer um loop através das últimas 999 barras a 0 e atribuir valores. Lembro que o MT4 tem problemas com as initilizações da matriz e outras coisas mais.Ainda apenas imprimindo o array com todas as entradas 0
Estranho
Argent86,
Há alguns erros em seu código :Aqui está o que você está tentando fazer sem essas questões
Acesso a partir do MQ4 uma função dll com: listas de documentos variáveis
oi,
Qualquer um sabe se isso é possível: importar uma função dll que usa como argumento a: listas de documentos variáveis
por exemplo, vprintf - C++ Referência
int vprintf ( formato const char *, va_list arg );
se sim, como se faria isso?
Obrigado
MJ
Como chamar a função sem valor de retorno
Olá, meninos e meninas.
Em algum momento do meu programa eu gostaria de chamar para uma função.
Entretanto, a função não tem valor de retorno (vazio). Então, como eu chamo a função,
por isso ele executa o código dentro da função exatamente no local onde eu o solicito,
como se estivesse escrito naquele mesmo lugar?
Fiz um exemplo de código abaixo... onde verifico alguns parâmetros, e se Ok, quero executar a função...
Espero que alguém possa me ajudar com isto, tx com antecedência, Jonkie76
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
if (Preço >= PREÇO_CLOSE)
Como faço isso?
senão
Alerta("Não fazer nada"); //
//----
retorno(0);
}
//+------------------------------------------------------------------+
//===================================================================+
//FUNÇÕES
//===================================================================+
//----------------------- FUNÇÃO FECHAR PEDIDO ----------------------+
subCloseOrder() vazio
{
int
i,
total = 0,
bilhete = 0,
err = 0,
c = 0;
total = OrdensTotal();
for(i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==Magic)
{
switch(OrderType())
{
caso OP_BUY :
for(c=0;c<NumberOfTries;c++)
{
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
senão
{
if(err==0 || err===4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
Sleep(5000);
continuar;
}
outro // erro normal
{
if(ticket>0) break;
}
}
}
pausa;
}
}
}
}
É muito simples. Você só precisa chamá-lo como se fosse devolver algo, só não precisa salvar nenhum resultado porque não há nenhum resultado com o tipo vazio. (não retorna nada) Assim:
int start()
{
//----
if (Price >= PRICE_CLOSE)
subCloseOrder(); // At this point I'd like to call the function.How do I do that?
else
Alert("Do nothing"); //
//----
return(0);
}
Em vez disso, use "vazio". Assim :
{
...
//
//
// no need to place return at the end, but if you want then use "just" return, like this
//
//
return;
}Vazio significa que não vai retornar o valor de uma função e, assim, torna-se efetivamente um procedimento, não uma função.
Olá, meninos e meninas.
Em algum momento do meu programa eu gostaria de chamar para uma função.
No entanto, a função não tem valor de retorno (vazio). Então, como eu chamo a função,
por isso ele executa o código dentro da função exatamente no local onde eu o solicito,
como se estivesse escrito naquele mesmo lugar?
Fiz um exemplo de código abaixo... onde verifico alguns parâmetros, e se Ok, quero executar a função...
Espero que alguém possa me ajudar com isto, tx com antecedência, Jonkie76
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
if (Preço >= PREÇO_CLOSE)
Como faço isso?
senão
Alerta("Não fazer nada"); //
//----
retorno(0);
}
//+------------------------------------------------------------------+
//===================================================================+
//FUNÇÕES
//===================================================================+
//----------------------- FUNÇÃO FECHAR PEDIDO ----------------------+
subCloseOrder() vazio
{
int
i,
total = 0,
bilhete = 0,
err = 0,
c = 0;
total = OrdensTotal();
for(i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==Magic)
{
switch(OrderType())
{
caso OP_BUY :
for(c=0;c<NumberOfTries;c++)
{
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
err=GetLastError();
if(err==0)
{
if(ticket>0) break;
}
senão
{
if(err==0 || err===4 || err==136 || err==137 || err==138 || err==146) //Busy errors
{
Sleep(5000);
continuar;
}
outro // erro normal
{
if(ticket>0) break;
}
}
}
pausa;
}
}
}
}