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
Olá, Mladen,
Obrigado pela explicação, mas o que você quer dizer com o valor das primeiras barras fechadas? É o primeiro valor de barras fechadas ou as barras atuais ou depois? E o significado de corrente+0 ou corrente+1?
A respeito de
Terrance
Terrance
MODE_MAIN significa que você está lendo no valor da linha estocástica. MODE_SIGNAL significa que você está lendo no valor da linha de sinais estocásticos.
A partir de SHIFT : é o mesmo para todos os indcadores (mesmo os personalizados). Como exemplo : SHIFT=0 significa o valor atual das barras, SHIFT=1 significa o valor das primeiras barras fechadas e assim por diante ......
... Terrance
A barra atual ainda não é, por definição, uma barra fechada
O primeiro bar antes do bar atual é o primeiro bar fechado
Olá, Mladen,
Obrigado pela explicação, mas o que você quer dizer com o valor das primeiras barras fechadas? É o primeiro valor de barras fechadas ou as barras atuais ou depois? E o significado de corrente+0 ou corrente+1?
A respeito de
TerranceOlá, Mladen,
Portanto, estou certo em dizer isso:
atual+0 é o mesmo que o valor 0,
atual+1 é o mesmo que o valor 1,
atual+2 é o mesmo que o valor 2,
e assim por diante..... para SHIFT?
Por exemplo
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Atual + 1); é o mesmo que iStochastic(NULL, 0, 3, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1);
Estou certo em dizer que sim?
Cumprimentos
Terrance
Terrance
A barra atual ainda não é, por definição, uma barra fechada
O primeiro bar antes do bar atual é o primeiro bar fechado...
... Terrance
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0); é o atual
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1); é o primeiro fechado (anterior)
...
...
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Bars-1); é o mais antigo no gráfico
PS: neste post você tem sime mais informações sobre bares : https://www.mql5.com/en/forum/173124
Olá, Mladen,
Portanto, estou certo em dizer isso:
atual+0 é o mesmo que o valor 0,
atual+1 é o mesmo que o valor 1,
atual+2 é o mesmo que o valor 2,
e assim por diante..... para SHIFT?
Por exemplo
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Atual + 1); é o mesmo que iStochastic(NULL, 0, 3, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1);
Estou certo em dizer que sim?
Cumprimentos
TerranceOlá, Mladen,
Obrigado pela grande ajuda, como sempre!
Cumprimentos
Terrance
Terrance
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 0); é o atual
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, 1); é o primeiro fechado (anterior)
...
...
iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Bars-1); é o mais antigo no gráfico
PS: neste post você tem sime mais informações sobre bares : https://www.mql5.com/en/forum/173124Alguns problemas
Olá a todos,
Eu testei meu código e está quase lá. Tenho algumas perguntas com as quais espero que possam me ajudar.
Coloquei isto no int init():
if (Bars < D1FastMAPeriod || Bars < D1SlowMAPeriod)
{
Alerta ("ERRO- BARRAS INSUFICIENTES PARA CALCULAÇÃO DE SMA EM CARGA DIÁRIA");
retornar(0);
}
O período SlowMAP é de 200. Quando eu retrocedo a partir de 01.01.2009, este erro é levantado, embora eu possa ver claramente no meu gráfico que existem barras suficientes para calcular o 200SMA a partir de 2008. Estou perdendo algo aqui?
2. Eu coloco as trocas do gráfico H4, mas somente na direção da tendência diária. Eu extraio valores usando o seguinte código:
SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
Depois, quando estou procurando por uma posição longa, faço referência a ela usando-a:
if (FastMACurrent > SlowMACurrent && ... etc ... )
Isto é correto, pois não parece estar filtrando meus negócios corretamente?
3. Também utilizo um filtro de tendência no gráfico H4 tomando posições longas somente quando o preço ultrapassou a alta anterior dos últimos 120 períodos (e depois permanece acima da baixa dos 120 períodos). Eu utilizo este código:
Donchian_Low = Low (baixo);
Donchian_High = High (alto = alto);
bool estático UpTrend = FALSE;
bool estático DownTrend = FALSO;
if (Pergunte > Donchian_High) {UpTrend = VERDADEIRO; DownTrend = FALSO;}
if (Bid < Donchian_Low) {UpTrend = FALSO; DownTrend = VERDADEIRO;}
Então eu uso o seguinte código (digamos para posições longas):
if (FastMACurrent > SlowMACurrent && UpTrend == TRUE && DownTrend == FALSE ... etc ... )
Mas não parece funcionar porque quando eu comparo meu gráfico testado com um Canal Donchian de 120 Períodos, ele não amarra. Alguma idéia?
Obrigado de antemão.
...
1. Coloque-o no início da função start(). Init não é confiável quando se trata de dados como Barras
2. Essa condição é verdadeira sempre que FastMACurrent > SlowMACurrent. É isso que você queria ou talvez você esteja olhando para as cruzes?
3. É provavelmente em relação ao ponto 2. Você deve "estreitar" as condições quando as ordens podem ser inseridas, uma vez que desta forma cobre demasiadas posibilidades
Olá a todos,
Eu testei meu código e está quase lá. Tenho algumas perguntas com as quais espero que possam me ajudar.
Coloquei isto no int init():
if (Bars < D1FastMAPeriod || Bars < D1SlowMAPeriod)
{
Alerta ("ERRO- BARRAS INSUFICIENTES PARA CALCULAÇÃO DE SMA EM CARGA DIÁRIA");
retornar(0);
}
O período SlowMAP é de 200. Quando eu retrocedo a partir de 01.01.2009, este erro é levantado, embora eu possa ver claramente no meu gráfico que existem barras suficientes para calcular o 200SMA a partir de 2008. Estou perdendo algo aqui?
2. Eu coloco as trocas do gráfico H4, mas somente na direção da tendência diária. Eu extraio valores usando o seguinte código:
SlowMACurrent = iMA(Symbol(), PERIOD_D1, D1SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
FastMACurrent = iMA(Symbol(), PERIOD_D1, D1FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
Depois, quando estou procurando por uma posição longa, faço referência a ela usando-a:
if (FastMACurrent > SlowMACurrent && ... etc ... )
Isto é correto, pois não parece estar filtrando meus negócios corretamente?
3. Também utilizo um filtro de tendência no gráfico H4 tomando posições longas somente quando o preço ultrapassou a alta anterior dos últimos 120 períodos (e depois permanece acima da baixa dos 120 períodos). Eu utilizo este código:
Donchian_Low = Low (baixo);
Donchian_High = High (alto = alto);
bool estático UpTrend = FALSE;
bool estático DownTrend = FALSO;
if (Pergunte > Donchian_High) {UpTrend = VERDADEIRO; DownTrend = FALSO;}
if (Bid < Donchian_Low) {UpTrend = FALSO; DownTrend = VERDADEIRO;}
Então eu uso o seguinte código (digamos para posições longas):
if (FastMACurrent > SlowMACurrent && UpTrend == TRUE && DownTrend == FALSE ... etc ... )
Mas não parece funcionar porque quando eu comparo meu gráfico testado com um Canal Donchian de 120 Períodos, ele não amarra. Alguma idéia?
Obrigado de antemão.Oi mladen,
1. OK serve.
2. Sim, isso é certo, eu não quero entrar fora da cruz, apenas usando-o para um filtro longo/ curto nos gráficos de curto prazo, por exemplo, se o MA rápido estiver acima do MA lento no gráfico diário, eu só quero que ele considere posições longas no gráfico H4. Então eu acho que codifiquei isto corretamente?
3. Não tenho certeza se sei o que você quer dizer, mas coloquei isto por baixo do init start()
bool estático UpTrend = FALSE;
bool estático DownTrend = FALSO;
se (Pergunte > Donchian_High) {UpTrend = TRUE; DownTrend = FALSE;}
if (Bid < Donchian_Low) {UpTrend = FALSO; DownTrend = VERDADEIRO;}
Devo colocar as variáveis estáticas do bool logo no início para torná-las globais? Isso poderia estar causando isso?
...
3. O que acontece quando se pergunta a Donchian_Low (que é a maior parte do tempo). Suas variáveis estáticas ainda mostram os estados "antigos" mesmo que não seja mais válido (ele "herda" o estado e dessa forma está sinalizando que está acima ou abaixo mesmo quando não está mais). Verifique se é isso que está lhe causando problemas
Oi mladen,
1. OK serve.
2. Sim, isso é certo, eu não quero entrar fora da cruz, apenas usando-o para um filtro longo/ curto nos gráficos de curto prazo, por exemplo, se o MA rápido estiver acima do MA lento no gráfico diário, eu só quero que ele considere posições longas no gráfico H4. Então eu acho que codifiquei isto corretamente?
3. Não tenho certeza se sei o que você quer dizer, mas coloquei isto por baixo do init start()
bool estático UpTrend = FALSE;
bool estático DownTrend = FALSO;
se (Pergunte > Donchian_High) {UpTrend = TRUE; DownTrend = FALSE;}
if (Bid < Donchian_Low) {UpTrend = FALSO; DownTrend = VERDADEIRO;}
Devo colocar as variáveis estáticas do bool logo no início para torná-las globais? Isso poderia estar causando isso?Bem visto. Vou dar uma olhada nisso.
Uma pergunta sobre funções, é possível chamar uma função dentro de uma função? Por exemplo, eu tenho esta função:
string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)
{
se (... etc...)
Do que mais tarde eu o chamo:
duplo GetLotsLong (int LowRisk, int HighRisk, double SLDistanceLong, string GetWinLossPreviousShort)