[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 130

 
alex12:

Mas há outro código na EA:

coloque por exemplo Print("close by CloseMarket", j); nesta função e algo semelhante na anterior você postou . execute-a e olhe através dos logs para ver qual destas impressões parece analisar qual delas aciona. depois, de forma semelhante, registre os valores das variáveis verificadas nas condições de execução close e encontre as razões para seu acionamento...

 
alsu:
E o que o impede de colocar a EA na janela exata onde você quer desenhar?


Meu EA funciona melhor na M1, porque é melhor na M1 e abre 1 comércio na abertura de barras M5, também reabastece se as condições permitirem. Também utilizo indicadores no M5 e em outras TFs. E é melhor testar no M1 na abertura do bar, enquanto em outros TFs com todos os carrapatos ele testa mal.

Eu não desenho, apenas vejo os resultados dos cálculos feitos pela EA e exibidos em alguns itens para ter certeza de que tudo está bem. Obrigado por sua atenção e ajuda!

 
borilunad:


Meu EA funciona melhor na M1, pois arrasta melhor na M1 e abre 1 comércio na abertura de barras M5, também recarrega se as condições permitirem. E utilizo indicadores no M5 e em outras TFs. E é melhor testar no M1 na abertura do bar, enquanto em outros TFs com todos os carrapatos ele testa mal.

Eu não desenho, apenas vejo os resultados dos cálculos feitos pela EA e exibidos em alguns itens para ter certeza de que tudo está bem. Obrigado por sua atenção e ajuda!

Em M1, e em M5 os ticks são retirados da mesma fonte, e você pode usar qualquer período de tempo de qualquer gráfico, basta substituir Close[] por iClose, etc. Para testá-lo melhor, é preciso fazer melhores fxt-files a partir de carrapatos, aqui está um exemplo, mas em geral no google, há muitas informações sobre este assunto.
 
alsu:
Tanto na M1 como na M5 os carrapatos são retirados da mesma fonte, e você pode usar qualquer período de tempo de qualquer gráfico, basta substituir Close[] por iClose, etc. Para testá-lo melhor, é preciso fazer melhores fxt-files a partir de carrapatos, aqui está um exemplo, mas em geral no google, há muitas informações sobre este assunto.

A prática tem mostrado, que é melhor abrir em Op e testar também melhor, do que em carrapatos. Não estou nada interessado em carrapatos. Quando o depoimento permite, posso mudar para uma TF mais alta, que mostrará melhores resultados em um dia. Não deixo acordos para que a noite durma bem. Mais uma vez, obrigado!
 
smshev:

Imprimir("Close by CloseMarket", j); nesta função e algo semelhante na anterior que você postou. Execute-o e procure no log os resultados destas impressoras para analisar qual delas aciona. Em seguida, de forma semelhante, registre os valores das variáveis verificadas nas condições de fechamento e encontre as razões para seu acionamento...

Obrigado.
 
borilunad:

A prática tem mostrado que é melhor abrir em Orep e testar melhor, também, do que em carrapatos. E eu não gosto nada de carrapatos. Quando o depoimento permite, posso mudar para um TF superior, que mostrará melhores resultados dentro de um dia. Não deixo acordos para que a noite durma bem. Mais uma vez, obrigado!
Não estou dizendo isso, estou dizendo que diferença faz onde a EA está anexada? Se estiver devidamente escrito, não faz diferença onde está localizado: mesmo que esteja no gráfico da bolsa de valores da Mongólia, mas se estiver programado para trabalhar em EURUSD 1 minuto, ele o fará. E não é difícil programá-lo, apenas mudar um par de linhas como regra.
 

Caro Sr. Programador! Não consigo traçar uma linha horizontal pelo valor numérico máximo da janela indicadora MACD.

Código


#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 3
#indicador de propriedade_color1 Lime
#indicador de propriedade_color2 Vermelho
//--- amortecedores
duplo ExtMapBuffer1[];
duplo ExtMapBuffer2[];
double topBuffer[];


bool initFinished=false; // adicionar uma variável que lembrará o estado de inicialização.
// falso - a inicialização ainda não aconteceu.
// verdadeiro - foi inicializada
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
limite;

if(counted_bars>0)
barrinhas_contadas..;

limite=barras_contadas_combarras;
//----
for(int i=0;i<limit;i++)

{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);

if(initFinished==false)
{
IndicatorShortName("MACD_max-min");

int win_idx=WindowFind("MACD_max-min");
// encontrar o número de nossa subjanela de indicadores

if(win_idx<0)
{
// se o número da subjanela for -1, há um erro
Imprimir("Janela não encontrada");
retorno(0);
}

double top=WindowPriceMax(win_idx);
//f encontrar o valor máximo da escala vertical da subjanela especificada do gráfico atual


ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
// desenhar uma linha horizontal em uma subjanela de nosso indicador

ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);

WindowRedraw();
// redesenhar a janela para ver a linha

initFinished=verdadeiro;
// o desenho está terminado

}

topBuffer[i]=top;


}

//----
retorno(0);
}

//+------------------------------------------------------------------+


Parece que na linha

double top=WindowPriceMax(win_idx);

variável superior não recebe qualquer valor e no

ObjectCreate("max",OBJ_HLINE,win_idx,0,top);

em vez disso (ou seja, em vez da variável superior) eu recebo automaticamente 0 (zero). Assim, recebo uma linha zero na janela necessária e na cor desejada. topBuffer[] também está vazio. Se nesta linha, em vez da parte superior variável, colocar um valor numérico, a linha leva este valor fixo, em algum lugar eu tenho um erro clínico, ajude a entender!

Arquivos anexados:
 
IndicatorShortName seria melhor mudar para init()
 
alsu:
IndicatorShortName deve ser movido para init()
Quando você abre o indicador, o objeto não aparece, você deve abrir adicionalmente a janela com as propriedades do indicador, fechá-la e então o objeto estará visível.
 
win_idx é o certo?
Razão: