Se for de um gráfico diferente, deixe-o usar uma variante de função com um identificador de gráfico.
também não há problema.
Absolutamente certo, mas ainda não precisei usar um identificador gráfico e estou apenas teoricamente familiarizado com ele, por isso sugeri a opção de mapear objetos para o gráfico atual.
chart_id = 0 não é o TF, é o gráfico atual. Você precisa encontrar o chart_id para o chart_id que tem o objeto desejado. Foi o que não fiz porque era temporariamente desnecessário.
o que os períodos da TF têm a ver com a identificação do gráfico?
Não tenho a menor idéia de como. É por isso que eu mesmo estou tentando fazer isso e pergunto, já que falhei.
sergeev: descrever sua tarefa, não ficar escuro e tatear. o que exatamente você precisa? obter dados de um objeto? - ObjectGet What's wrong with it?
Você está perguntando seriamente? Já escrevi 3 vezes que preciso obter dados retangulares (2 coordenadas de preço e duas coordenadas de tempo usadas para construir retângulos) de dois outros períodos de tempo (H4 e D), enquanto estou no terceiro (H1).
ObjectGet não é adequado porque não pode receber nada de outro período de tempo.
O indicador desenha retângulos em todos os períodos de tempo e eu acrescentei código a ele, ele transmitirá coordenadas retangulares de outros períodos de tempo sem mudar para eles. Não sei como explicá-lo de outra forma.
Não tenho a menor idéia de como. É por isso que estou tentando fazer isso por intuição e pergunta, porque não funcionou.
Você está perguntando seriamente? Já escrevi 3 vezes que preciso obter dados retangulares (2 coordenadas de preço e duas coordenadas de tempo para construir retângulos) de dois outros períodos de tempo (H4 e D), enquanto estou no terceiro (H1).
A ObjectGet não é adequada porque não consigo obter nada de outro prazo com ela.
Ele desenha retângulos em todos os períodos de tempo e eu estou adicionando código a ele, pelo qual ele passará as coordenadas de retângulos de outros períodos de tempo sem mudar para eles. Eu não sei como explicar de outra forma.
Basta entender, outro cronograma e outro gráfico ou gráfico são conceitos diferentes e, conseqüentemente, abordagens diferentes para resolver problemas.
AlexeyVik: Entenda que um TF diferente e um gráfico ou gráfico diferente são conceitos diferentes e, portanto, abordagens diferentes para resolver problemas.
Portanto, só estou feliz em compreender e aceitar qualquer solução, se eu tiver idéias. É por isso que estou pedindo conselhos sobre como implementá-la.
Obrigado! Entendido. Exceto que, com o erro OrderSelect, não está claro como parar, exceto paracontinuar.
Apagada a mensagem tardia, fez quase o mesmo que o descrito.
Às vezes é possível combinar valor de retorno e sinal de erro. Quando faz sentido tomar algum valor como um sinal de erro. Por exemplo, um preço médio igual a 0.
Então, assim que OrderSelect() retorna um sinal de erro, nossa função retorna um sinal de erro de uma só vez:
#property strict/******************************************************************************/double CenaUsrednenija(constint type,constint Magic){
double nn = 0, bb = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderType() == type && OrderMagicNumber() == Magic)
{
double op = OrderOpenPrice();
double llot = OrderLots();
bb += op * llot;
nn += llot;
Print(" type = ", type, " Цена открытия = ", op, " Лот = ", llot, " itog = op * llot = ", op * llot, " factb = bb / nn = ", bb / nn);
}
} else {
return0; // Цена == 0 - признак ошибки (OrderSelect() не смогла выбрать ордер)
}
}
return nn != 0 ? NormalizeDouble(bb / nn, _Digits) : 0; // Делить на 0 не следует
}
/******************************************************************************/voidOnStart() {
Print("CenaUsrednenija(OP_BUY, 536525) = ", CenaUsrednenija(OP_BUY, 536525));
}
Executei-o por conta própria, eu o consegui:
23:32:03 Script 1 EURUSD,H1: loaded successfully
23:32:031 EURUSD,H1: initialized
23:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36626 Лот = 0.1 itog = op * llot = 0.136626 factb = bb / nn = 1.3662623:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36931 Лот = 0.1 itog = op * llot = 0.136931 factb = bb / nn = 1.36778523:32:031 EURUSD,H1: CenaUsrednenija(OP_BUY, 536525) = 1.3677923:32:031 EURUSD,H1: uninit reason 023:32:03 Script 1 EURUSD,H1: removed
Parece ser verdade...
Sim, eu não usei uma expressão condicional em Print() para evitar uma divisão hipotética por 0 porque esta Print() é uma debug...
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Meu entendimento é que ele precisa obter parâmetros de objetos de outro gráfico.
Se a partir de outro gráfico, deixe-o usar a variante de função com o identificador do gráfico.
também não há problema.
Se for de um gráfico diferente, deixe-o usar uma variante de função com um identificador de gráfico.
também não há problema.
Isso é ótimo! Esse era exatamente o ponto. Obrigado, querido camarada!
Se for de um gráfico diferente, deixe-o usar uma variante de função com um identificador de gráfico.
Também não há problema.
Pelo que entendi, as únicas opções são ObjectGetDouble() para preço e ObjectGetInteger() para data no meu caso.
Eu tento obter o preço no TF atual com chart_id = 0
- valor como deve ser. Eu tentei tanto IDs como valores daqui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes ao invés de 0, mas ele retorna 0. Como deve ser um "correto" chart_id?
Pelo que entendi, as únicas opções são ObjectGetDouble() para preço e ObjectGetInteger() para data no meu caso.
Estou tentando obter o preço no TF atual com chart_id = 0
- valor como deve ser. Eu tentei tanto IDs como valores daqui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes ao invés de 0, mas ele retorna 0. Como deve ser um "correto" chart_id?
Pelo que entendi, as únicas opções são ObjectGetDouble() para preço e ObjectGetInteger() para data no meu caso.
Tentando obter o preço no TF atual com chart_id = 0
o que é 3?
- O valor é como deve ser. Eu tentei tanto IDs como valores daqui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes ao invés de 0, mas ele retorna 0. Como deve ser um "correto" chart_id?
você tem um buraco irrealista em sua compreensão do que usar
Descreva seu problema, não fique muito obscuro e ao redor do intestino.
De que preciso para recuperar dados de um objeto?
- ObjectGet Por que você não gostou?
o que é 3?
O valor do preço do limite inferior do retângulo. https://docs.mql4.com/constants/objectconstants/enum_object_property
Não tenho a menor idéia de como. É por isso que eu mesmo estou tentando fazer isso e pergunto, já que falhei.
descrever sua tarefa, não ficar escuro e tatear. o que exatamente você precisa? obter dados de um objeto? - ObjectGet What's wrong with it?
Você está perguntando seriamente? Já escrevi 3 vezes que preciso obter dados retangulares (2 coordenadas de preço e duas coordenadas de tempo usadas para construir retângulos) de dois outros períodos de tempo (H4 e D), enquanto estou no terceiro (H1).
ObjectGet não é adequado porque não pode receber nada de outro período de tempo.
O indicador desenha retângulos em todos os períodos de tempo e eu acrescentei código a ele, ele transmitirá coordenadas retangulares de outros períodos de tempo sem mudar para eles. Não sei como explicá-lo de outra forma.
O valor do preço do limite inferior do retângulo. https://docs.mql4.com/constants/objectconstants/enum_object_property
Não tenho a menor idéia de como. É por isso que estou tentando fazer isso por intuição e pergunta, porque não funcionou.
Você está perguntando seriamente? Já escrevi 3 vezes que preciso obter dados retangulares (2 coordenadas de preço e duas coordenadas de tempo para construir retângulos) de dois outros períodos de tempo (H4 e D), enquanto estou no terceiro (H1).
A ObjectGet não é adequada porque não consigo obter nada de outro prazo com ela.
Ele desenha retângulos em todos os períodos de tempo e eu estou adicionando código a ele, pelo qual ele passará as coordenadas de retângulos de outros períodos de tempo sem mudar para eles. Eu não sei como explicar de outra forma.
Entenda que um TF diferente e um gráfico ou gráfico diferente são conceitos diferentes e, portanto, abordagens diferentes para resolver problemas.
Obrigado! Entendido. Exceto que, com o erro OrderSelect, não está claro como parar, exceto paracontinuar.
Apagada a mensagem tardia, fez quase o mesmo que o descrito.
Às vezes é possível combinar valor de retorno e sinal de erro. Quando faz sentido tomar algum valor como um sinal de erro. Por exemplo, um preço médio igual a 0.
Então, assim que OrderSelect() retorna um sinal de erro, nossa função retorna um sinal de erro de uma só vez:
Executei-o por conta própria, eu o consegui:
Parece ser verdade...
Sim, eu não usei uma expressão condicional em Print() para evitar uma divisão hipotética por 0 porque esta Print() é uma debug...