Boa tarde. Tenho uma pergunta: onde posso ver um exemplo de código para produzir os valores de um indicador a partir de diferentes períodos de tempo em um gráfico de preços?
Não posso procurar no Google, talvez esteja fazendo um pedido errado.
Desejo produzir na segunda coluna do gráfico de preços o desvio padrão das Bandas de Bollinger de H1 para W1. A segunda coluna mostra valores obtidos pela multiplicação do desvio padrão pelos coeficientes.
Bandas de Bollinger modificadas.
Palavras-chave para a busca por codobase "Multi temporal".
1. Experimente no MetaEditor: File --> Abrir pasta de dados compartilhados. Você verá o caminho para a pasta. Esta questão tem sido discutida muitas vezes, aqui está um link, por exemplo
2. Experimente sem incluir no início. Quando você o depurar, você começará a incluí-lo.
3. insira suas fontes aqui usando o botão SRC acima, ou usando o botão Anexar arquivo abaixo.
Favor aconselhar como traçar uma linha horizontal ao preço de abertura do bar às 07:00 horas.
Eu escrevi este código, mas a linha não está traçada por algum motivo. Onde está o erro?
externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирации//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
ObjectCreate(ChartID(),"CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене AskObjectSetInteger(ChartID(),"CORDON",OBJPROP_COLOR,clrDarkBlue); //цвет темно-сиийObjectSetInteger(ChartID(),"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(ChartID(),"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплошint IndexOfBar = iBarShift(ChartID(),PERIOD_H1, StringToTime(StartTime), true); //Считаем индекс бара по заданному времени StartTimedouble StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии return(0);
}
LRA: Se você remover ObjectMove, a linha é visível? Tente Alerta(StartPrice);
Se você remover ObjectMove, não poderá ver a linha, mas sevocê escrever um valor numérico em vez de "IndexOfBar", por exemplo, "double StartPrice = Open[5];" ele desenha a linha ao preço de abertura da quinta barra.
Obrigado pela idéia com Alerta - mostra o valor "0".
A propósito, a linha também existe na lista de objetos com o valor 0.
Não se pode desenhar e calcular no init, é um erro grosseiro. O init deve concluir seu trabalho o mais rápido possível.
O erro aqui -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //ler o índice da barra pelo tempo especificado StartTime
A hora pode ser definida diretamente no formato de data e hora, não há necessidade de perder tempo de máquina na conversão, funciona assim:
Obrigado pelas dicas valiosas para mim.
E um agradecimento especial por elevar meu moral ao encontrar o erro. Estou começando a acreditar novamente que posso fazer amizade com a MQL4
RichLux: versão do código não funciona. A linha no gráfico ainda não aparece...
// Вставил такой код в скрипт - линию рисует синюю на черном графике слабо видно
#property strict // -------- Возможно, Дело в этой строке
externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирацииvoidOnStart()
{
ObjectCreate("CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене Ask --- Для текущего графика ID пропускаемObjectSetInteger(0,"CORDON",OBJPROP_COLOR,DarkBlue); //цвет темно-сиий --- 0 = текущий график DarkBlue - то же самоеObjectSetInteger(0,"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(0,"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплош
// Первый параметр нужен типа string, а функция ChartID возвращает long
int IndexOfBar = iBarShift(NULL,PERIOD_H1, StringToTime(StartTime), true); // --- NULL = текущий график ЗДЕСЬ И БЫЛА ОШИБКА???
double StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии
}
E se você pegar os cálculos do inite em uma função separada, e depois inserir essa função no inite, não será um erro grosseiro?
Se o código for executado por muito tempo, o inite terminará à força e o código simplesmente não terá tempo para ser executado. O código executado, incluindo chamadas de funções secundárias, deve estar nas funções predefinidas de MQL - OnTick() para Expert Advisors, OnStart() para scripts, OnCalculate() para indicadores.
O inite deve conter o mínimo de código, apenas aquelas coisas que devem ser executadas uma vez, imediatamente antes do início do programa. Por exemplo, inicialização de variáveis globais, matrizes, amortecedores de indicadores.
Boa tarde. Tenho uma pergunta: onde posso ver um exemplo de código para produzir os valores de um indicador a partir de diferentes períodos de tempo em um gráfico de preços?
Não posso procurar no Google, talvez esteja fazendo um pedido errado.
Desejo produzir na segunda coluna do gráfico de preços o desvio padrão das Bandas de Bollinger de H1 para W1. A segunda coluna mostra valores obtidos pela multiplicação do desvio padrão pelos coeficientes.
Bandas de Bollinger modificadas.
Palavras-chave para a busca por codobase "Multi temporal".
O texto pode ser exibido usando OBJ_LABEL.
1. Experimente no MetaEditor: File --> Abrir pasta de dados compartilhados. Você verá o caminho para a pasta. Esta questão tem sido discutida muitas vezes, aqui está um link, por exemplo
2. Experimente sem incluir no início. Quando você o depurar, você começará a incluí-lo.
3. insira suas fontes aqui usando o botão SRC acima, ou usando o botão Anexar arquivo abaixo.
Favor aconselhar como traçar uma linha horizontal ao preço de abertura do bar às 07:00 horas.
Eu escrevi este código, mas a linha não está traçada por algum motivo. Onde está o erro?
Favor aconselhar como traçar uma linha horizontal ao preço de abertura do bar às 07:00 horas.
Eu escrevi este código, mas a linha não está traçada por algum motivo. Onde está o erro?
Se você remover ObjectMove, a linha é visível? Tente Alerta(StartPrice);
Se você remover ObjectMove, não poderá ver a linha, mas sevocê escrever um valor numérico em vez de "IndexOfBar", por exemplo, "double StartPrice = Open[5];" ele desenha a linha ao preço de abertura da quinta barra.
Obrigado pela idéia com Alerta - mostra o valor "0".
A propósito, a linha também existe na lista de objetos com o valor 0.
Favor aconselhar como traçar uma linha horizontal ao preço de abertura do bar às 07:00 horas.
Eu escrevi este código, mas a linha não está traçada por algum motivo. Onde está o erro?
Não se pode sacar e calcular no inite, é um erro grosseiro. O inite deve terminar seu trabalho o mais rápido possível.
O erro aqui -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //ler o índice da barra pelo tempo de início dado
A hora pode ser definida diretamente no formato de data e hora, não há necessidade de perder tempo de máquina na conversão, funciona assim:
Não se pode desenhar e calcular no init, é um erro grosseiro. O init deve concluir seu trabalho o mais rápido possível.
O erro aqui -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //ler o índice da barra pelo tempo especificado StartTime
A hora pode ser definida diretamente no formato de data e hora, não há necessidade de perder tempo de máquina na conversão, funciona assim:
Obrigado pelas dicas valiosas para mim.
E um agradecimento especial por elevar meu moral ao encontrar o erro. Estou começando a acreditar novamente que posso fazer amizade com a MQL4
Não se pode desenhar e calcular no init, é um erro grosseiro. O init deve ser concluído o mais rápido possível.
E se você pegar os cálculos do inite em uma função separada e depois inserir essa função no inite, não será um erro grosseiro?
Já funciona.
E se você pegar os cálculos do inite em uma função separada, e depois inserir essa função no inite, não será um erro grosseiro?
Se o código for executado por muito tempo, o inite terminará à força e o código simplesmente não terá tempo para ser executado. O código executado, incluindo chamadas de funções secundárias, deve estar nas funções predefinidas de MQL - OnTick() para Expert Advisors, OnStart() para scripts, OnCalculate() para indicadores.
O inite deve conter o mínimo de código, apenas aquelas coisas que devem ser executadas uma vez, imediatamente antes do início do programa. Por exemplo, inicialização de variáveis globais, matrizes, amortecedores de indicadores.