[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 270

 
1Rakso >> :

por que o sinal não está funcionando?

Queria ajustar a zona filtrante em pips do mais alto para o mais baixo e do mais alto para o mais baixo. o sinal não funciona o que estou fazendo de errado?

Não sei bem o que está procurando aqui...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

se tenho um alto e um baixo de barras N, procuro-o assim

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

onde hibar e lobar são o número de barras nas quais o alto e o baixo são procurados.

tf_100 - TimeFrame em que o máximo e o mínimo são pesquisados.

1 - a busca começa a partir de 1 barra, se você quiser que a busca seja feita na barra zero, você deve definir 0.

 
Swan >> :


Ohhhh, estou tão envergonhada, estou tão envergonhada.
 
Dimi >> :

Agora aqui está a questão; Como posso obter o valor 20 desta matriz em variáveis?

bind double Max_array[20]; fora da função (globalmente), se necessário, também estático

 
alsu >> :

Primeiro, coloque o código em ordem lógica.

ArraySetAsSeries(Max_array,true) - por quê?

for(c=1; c <= total_c; c++) - as arrays são indexadas de 0 a total_c-1.

Sinceramente, não entendo porque você não gosta da lógica... Aqui ArraySetAsSeries(Max_array,true) Defina a direção de indexação na matriz. Ou há algo errado?

 
Dimi >> :

Para ser honesto, não entendo porque você não gosta da lógica. ArraySetAsSeries(Max_array,true) define a direção de indexação na matriz aqui. Ou é algo errado???


Isto não é um erro, claro, apenas uma seqüência logicamente desnecessária. O ArraySetAsSeries faz sentido quando a matriz é ainda maior em tamanho (por exemplo, em cada nova barra), então o novo elemento terá índice 0. No caso estático, entretanto, não faz diferença em que ordem os elementos estão dispostos na memória. Em relação à segunda nota: em uma matriz de tamanho N, o último item tem índice N-1. Código correto para(c=0; c < total_c; c++)

 
alsu >> :

Isto não é um erro, claro, apenas uma seqüência logicamente desnecessária. O ArraySetAsSeries faz sentido quando a matriz é ainda maior em tamanho (por exemplo, em cada nova barra), então o novo elemento terá índice 0. No caso estático, entretanto, não faz diferença em que ordem os elementos estão dispostos na memória. Em relação à segunda nota: em uma matriz de tamanho N, o último item tem índice N-1. Código correto para(c=0; c < total_c; c++)

Obrigado. Agora eu entendo o erro. Mas ainda não consigo com a dupla Max_array[20];... Deixe-me explicar um pouco diferente. Esta função busca o valor máximo do RSI nas últimas 20 barras. Quero que procure o valor máximo sobre esse número de barras, que será calculado por outra função. Ou seja, em cada nova barra, este número de barras calculadas mudará. Pode ser 10, pode tornar-se 20 ou 30.... Como implementá-lo no código? A função de cálculo de barras está pronta, como inseri-la agora em vez deste número 20 nesta matriz dupla Max_array[20]; ????

 
Dimi >> :

Obrigado agora eu entendo o erro. Mas esta dupla Max_array[20]; ainda não chega a mim... Deixe-me explicar de uma maneira um pouco diferente. Esta função busca o valor máximo do RSI nas últimas 20 barras. Quero que procure o valor máximo sobre esse número de barras, que será calculado por outra função. Ou seja, em cada nova barra, este número de barras calculadas mudará. Pode ser 10, pode tornar-se 20 ou 30.... Como implementá-lo no código? A função para calcular as barras está pronta, como inseri-la agora em vez deste número 20 nesta matriz dupla Max_array[20]; ????


muito simples:

double IsMaxRSI(int total_c) {
   ...
   double Max_array[];  
   ArrayResize( Max_array, total_c);
   ...
}
виноват, код куда-то выпал
 
Dimi >> :

Não sei bem o que está procurando aqui...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

se max e min para barras N, é pesquisado assim

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

onde hibar e lobar são o número de barras em que o alto e o baixo são procurados.

tf_100 - TimeFrame, no qual o máximo e o mínimo são procurados.

1 - a busca começa com 1 barra, se você quiser que a busca seja em barra zero, você tem que colocar 0.

Obrigado, vou tentar sua variante, sobre as barras que eu estava procurando de 50 a 100 barras, é por isso que as coloco no exterior para otimização.

encontrei o erro, não inseri a matrizf em variáveis globais e coloquei o valorf em variáveis externas na ordem tf))))

extern int tf_100  =   3; //)))

int tf[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма забыл его вставить)))

double hi_100 = High[iHighest(Symbol(), tf[ tf_100], MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf[ tf_100], MODE_LOW, lobar, 1)];

Eu sou realmente burro, coisas básicas como......

 
alsu >> :

muito simplesmente:

Muito obrigado!!!! Parece que está funcionando!!!

Assim como um relógio, obrigado mais uma vez!!! Foi realmente fácil.
 

Amigos, boa tarde.


Se você não se importa de me dizer como resolver tais dificuldades:


Estou escrevendo um de meus primeiros EAs, e encontrei estas dificuldades:


1) É possível "distinguir pedidos" para a mesma moeda, mas feitos em TFs diferentes?

(Por exemplo, eu negocio um EA no mesmo par de moedas, em H4 e M30... Fez uma troca no H4, e os indicadores mostram movimento neste TF, mas esta troca foi fechada por causa de um sinal de fechamento no M30... e no meu Expert Advisor "usando dados de múltiplos TFs" não é fornecido...)

ou seja, eu poderia, de alguma forma programática, distinguir estes ofícios em H4 e M30?


2) Enquanto escrevia o consultor especializado, tive um pensamento óbvio:) "Sinais para fechar uma posição, e sinais para abrir a posição oposta invertendo" nem sempre são bons....

Muitas vezes, muitos lucros são perdidos antes que o sinal oposto seja gerado.

Então, decidi usar uma parada de reboque e formar um alvo usando Fibonacci.


Você pode aconselhar como estabelecer uma meta (em um EA) como um ponto de referência para um determinado nível Fibonacci ao fazer um pedido de comércio?


3) Há um indicador: BrainTrend1StopN. Favor aconselhar como "puxar" as paradas para o nível de "pontos" gerados por este indicador.


Muito obrigado de antemão.
Arquivos anexados: