[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 137
No momento, a tarefa é a seguinte: fastMa cruzou a slowMa para cima... por isso, estamos procurando onde comprar. Então esperamos até que o preço, ou seja, Ask (já que consideramos comprar) atinja fastMa ( bem, acho que não haverá valor exato, precisamos de +- algum desvio, e isto é alterado por i_thresholdFromMa) e assim que o preço atingir fastMa +- i_thresholdFromMa o Consultor Especialista deverá configurar BUYSTOP em (fastMa + buyHear * pt).
O que eu inventei não funciona em um terminal e nem sempre funciona em outro. Algo está errado em geral.
A última variante da função buyHear aqui:
Aqui estão os parâmetros de entrada:
Os erros podem ser vistos na captura de tela (em OrderSend() o preço é alimentado acima da varinha vermelha, e a ordem como vista na captura de tela está abaixo....):
Está fora há alguns dias... Estou me perguntando - os mesmos parâmetros têm as varinhas jogadas na tabela que as varinhas usadas nos cálculos? Talvez seja lá que o cão está enterrado?
(Ainda não tive tempo de mergulhar no código e desmontá-lo).
Eu faria uma função, por exemplo:
//-----------------------------------------------------------------------------+double ma(int MAperiod, int MAmethod, int MAshift) {return (iMA(Symbol(), Period(), MAperiod, 0, MAmethod, PRICE_OPEN,MAshift));}
//-----------------------------------------------------------------------------+
Olá, por favor, você poderia aconselhar! Um sinal indicador para comprar foi acionado, abro um pedido somente depois de confirmar as duas velas seguintes para cima.
Olá, por favor, você poderia aconselhar! Um sinal indicador para comprar foi acionado, abro um pedido somente depois de confirmar as duas velas seguintes para cima.
Portanto, verifique se as duas últimas velas estão acesas e a condição para abrir uma ordem há duas barras ao mesmo tempo.
Se o sinal funcionou, esperamos pela confirmação, mas depois que a barra sobe ou desce.
Deve lembrar a barra no sinal, a barra após o sinal, compará-las se as duas forem ascendentes ou descendentes, então .....
if (bay_min == true) datetime T=Time[0] //сработал сигнал на покупку запоминаем время бараif(iBarShift(NULL,0,T)==2) //по времени, сигнал был на 2 баре
{
if (Open[1]<Close[1] && Open[2]<Close[2] ) //и эти бары бичьи
{
// что-то делаем
}
}
// я думаю, как-то так.
Estou escrevendo um simples Expert Advisor e me deparo com uma série de problemas.
A condição é
Lembro-me do preço de fechamento da barra atual e o introduzo na variável Preço inicial se a 4ª barra anterior estava na barra deslizante.
Se a condição for satisfeita, então desenhe um ícone mostrando o preço de fechamento da barra, ou seja, Startprice.
O que eu tenho é que o ícone é desenhado, mas apenas uma vez, enquanto eu preciso dele todas as vezes.
O preço de fechamento da barra não coincide com o preço inicial a 0,00001. Por que e como eu o conserto?
O arredondamento e o corte de 5 dígitos não ajudaram(
No registro usando a impressão chamo o valor Startprice, mostra o número apenas até 4 dígitos e menos.
Como obter a mesma precisão que na janela de dados do terminal?
Este problema do ponto decimal também se aplica ao próprio controle deslizante. Se você chamar seus valores via impressão, você não pode obter mais de 4 dígitos no log.
#property copyright "Zuly"externint MA_Period = 50; //периуд Маexternint MA_Method =MODE_SMA; //Метод усреднения скользящего среднего. Может быть любым из значений методов скользящего среднего (Moving Average)://*MODE_SMA externint Maximum_History = 0; //Ограничение истории для расчетов, если 0 то расчет всей истории//начало кода советникаint start()
{
double MA4; // Значение МА на 4 баре double Startprice;
{
MA4=iMA(NULL,0,MA_Period,0,MA_Method,PRICE_CLOSE,4);
if (Low[4]< MA4 && MA4 < High[4]) //условия если 4-я свеча лежит в скользящей
{
Startprice=Close[0];
// Startprice=NormalizeDouble(Close[0],5); // пробуем округлить до 5-го знака, не помогло // Startprice=MathFloor(Close[0]*100000)/100000; // пробуем обрезать до 5-го знака не помогло//Print (Startprice); // распечатаем Startpricedatetime TmR1=Time[0]; // запоминаем время текущего бара? ObjectCreate("Rep1",OBJ_ARROW, 0, TmR1, Startprice); // создаем обьект
ObjectSet("Rep1", OBJPROP_COLOR, White); // устанавливаем обьект на график
ObjectSet("Rep1", OBJPROP_ARROWCODE,71);
return(0);
}} }
Use DoubleToStr(número, Dígitos) para a saída. Ao invés de Dígitos, você pode escrever a precisão que quiser. Adicione ao nome do ícone a hora da barra na qual você está definindo o ícone.
artmedia70: Use DoubleToStr(número, Dígitos) para a saída. Em vez de Dígitos você pode escrever a precisão desejada. Adicione ao nome do ícone a hora da barra na qual você está definindo o ícone.
se assim for
Startprice=DoubleToStr(Close[0],5);
não está funcionando, está culpando '=' - tipos incompatíveis C:\sve.mq4 (34, 14)
Como escrevê-lo corretamente?
Obrigado pela resposta, há uma semana que estou lutando com isso )
artmedia70: Use DoubleToStr(número, Dígitos). Você pode escrever a precisão que quiser, em vez de Dígitos. Adicione o tempo de barra ao nome do ícone onde você está definindo o ícone.
mas para a saída, entendo que a impressora imprime apenas 4 ou menos dígitos.
então se imprimir (DoubleToStr(Startprice,5)); // imprimir Startprice
No momento, a tarefa é a seguinte: fastMa cruzou a slowMa para cima... por isso, estamos procurando onde comprar. Então esperamos até que o preço, ou seja, Ask (já que consideramos comprar) atinja fastMa ( bem, acho que não haverá valor exato, precisamos de +- algum desvio, e isto é alterado por i_thresholdFromMa) e assim que o preço atingir fastMa +- i_thresholdFromMa o Consultor Especialista deverá configurar BUYSTOP em (fastMa + buyHear * pt).
O que eu inventei não funciona em um terminal e nem sempre funciona em outro. Algo está errado em geral.
A última variante da função buyHear aqui:
Aqui estão os parâmetros de entrada:Os erros podem ser vistos na captura de tela (em OrderSend() o preço é alimentado acima da varinha vermelha, e a ordem como vista na captura de tela está abaixo....):
Está fora há alguns dias... Estou me perguntando - os mesmos parâmetros têm as varinhas jogadas na tabela que as varinhas usadas nos cálculos? Talvez seja lá que o cão está enterrado?
(Ainda não tive tempo de mergulhar no código e desmontá-lo).
Eu faria uma função, por exemplo:
e chamá-lo para obter os parâmetros
Olá, por favor, você poderia aconselhar! Um sinal indicador para comprar foi acionado, abro um pedido somente depois de confirmar as duas velas seguintes para cima.
Olá, por favor, você poderia aconselhar! Um sinal indicador para comprar foi acionado, abro um pedido somente depois de confirmar as duas velas seguintes para cima.
Portanto, verifique se as duas últimas velas estão acesas e a condição para abrir uma ordem há duas barras ao mesmo tempo.
Portanto, verifique se os dois últimos castiçais estão em pé e a condição para abrir um pedido duas barras de volta ao mesmo tempo.
como faço isso?
E se assim for, o sinal é acionado aguardando confirmação, somente após uma barra subir ou descer 2 barras.
Precisamos dela para lembrar a barra no sinal, a barra após o sinal, compará-las se as duas forem ascendentes ou descendentes, então .....
como faço isso?
Se o sinal funcionou, esperamos pela confirmação, mas depois que a barra sobe ou desce.
Deve lembrar a barra no sinal, a barra após o sinal, compará-las se as duas forem ascendentes ou descendentes, então .....
como faço isso?
Se o sinal funcionou, esperamos pela confirmação, mas depois que a barra sobe ou desce.
Deve lembrar a barra no sinal, a barra após o sinal, compará-las se as duas forem ascendentes ou descendentes, então .....
Estou escrevendo um simples Expert Advisor e me deparo com uma série de problemas.
A condição é
Lembro-me do preço de fechamento da barra atual e o introduzo na variável Preço inicial se a 4ª barra anterior estava na barra deslizante.
Se a condição for satisfeita, então desenhe um ícone mostrando o preço de fechamento da barra, ou seja, Startprice.
O que eu tenho é que o ícone é desenhado, mas apenas uma vez, enquanto eu preciso dele todas as vezes.
O preço de fechamento da barra não coincide com o preço inicial a 0,00001. Por que e como eu o conserto?
O arredondamento e o corte de 5 dígitos não ajudaram(
No registro usando a impressão chamo o valor Startprice, mostra o número apenas até 4 dígitos e menos.
Como obter a mesma precisão que na janela de dados do terminal?
Este problema do ponto decimal também se aplica ao próprio controle deslizante. Se você chamar seus valores via impressão, você não pode obter mais de 4 dígitos no log.
Use DoubleToStr(número, Dígitos) para a saída. Em vez de Dígitos você pode escrever a precisão desejada. Adicione ao nome do ícone a hora da barra na qual você está definindo o ícone.
se assim for
não está funcionando, está culpando '=' - tipos incompatíveis C:\sve.mq4 (34, 14)
Como escrevê-lo corretamente?
Obrigado pela resposta, há uma semana que estou lutando com isso )
Use DoubleToStr(número, Dígitos). Você pode escrever a precisão que quiser, em vez de Dígitos. Adicione o tempo de barra ao nome do ícone onde você está definindo o ícone.
mas para a saída, entendo que a impressora imprime apenas 4 ou menos dígitos.
então se imprimir (DoubleToStr(Startprice,5)); // imprimir Startprice
dá 5.
Mas aqui está como adicionar o tempo do bar.
Esta linha não acrescenta o tempo da barra?