Alexey Viktorov: Leia a documentação e ela se tornará clara. É bom que você mesmo o tenha feito.
Sim, já li sobre algo assim antes - então decidi tentar, mas não está claro onde está a lógica por trás disso... e, a propósito, não consegui encontrar a resposta na documentação.
-Aleks-: Já li sobre algo assim antes - então decidi tentar, mas não está claro onde está a lógica por trás disso... E, a propósito, não consegui encontrar a resposta na documentação.
Esta é uma característica não apenas no MCL, em C++ e em outras linguagens de programação também - a divisão de dois inteiros ou variáveis do tipo (int) dará um resultado truncado ao inteiro. No seu caso 4/5=0.
Você pode escrever 4,0/5 ou (duplo)4/5 - então o resultado é um número real.
Esta não é apenas uma característica da ICL, em C++ e outras linguagens de programação é a mesma - dividir dois inteiros ou variáveis de tipo (int) dará um resultado truncado a um inteiro. No seu caso 4/5=0.
Você pode escrever 4,0/5 ou (duplo)4/5 - então o resultado é um número real.
Entendo isso, mas não entendo a lógica da solução - ou seja, a necessidade.
Eu entendo isso, mas não entendo a lógica por trás da solução - ou seja, a necessidade.
Bem, você não argumenta "por que 2*2=4 em aritmética, qual é a lógica da solução"? Basta tomá-lo como um axioma e usá-lo. É assim com a divisão de dois números inteiros.
Bem, você não argumenta "por que 2*2=4 em aritmética, qual é a lógica por trás da solução"? Basta tomá-lo como um axioma e usá-lo. É o mesmo com a divisão de dois números inteiros.
A linha é uma linha de tendência. Eu mudei as propriedades para um raio. Isso não ajudou. Se eu quisesse que ele produzisse o preço independentemente da posição da barra zero (acima, abaixo).
Este código também não funciona.
int start() {
double pr=ObjectGetValueByShift("line",0);
Se (Bid==pr){
Alerta (pr);}
retorno(0);}
O nome da linha está escrito corretamente?
Experimente este roteiro e mostre o que ele diz nos registros.
voidOnStart()
{
double pr;
int obj_total=ObjectsTotal();
string name;
int i;
for(i=0;i<obj_total;i++)
{
name=ObjectName(i);
if(ObjectType(name)!=OBJ_TREND) continue;
PrintFormat("Объект %d: Имя объекта - %s",i,name);
pr=ObjectGetValueByShift(name,0);
PrintFormat("Объект %d: Цена - %.5f",i,pr);
}
}
O roteiro detecta o objeto, escreve o nome corretamente. Mas o preço é absolutamente canhoto. É marcado na foto com uma linha horizontal. Ele dá esses preços independentemente de as barras terem cruzado a linha ou não.
A linha é de tendência. Alterou as propriedades para vigiar. Isso não ajudou. Idealmente, o preço deve ser exibido independentemente da posição da barra zero (superior, inferior).
Este código também não funciona.
int start() {
double pr=ObjectGetValueByShift("line",0);
Se (Bid==pr){
Alerta (pr);}
retorno(0);}
A licitação pode facilmente saltar sua linha, não é obrigada a parar em cada ponto (ou seja, você não terá a igualdade exata).
mudar a condição para, por exemplo, se ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) ||| (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similar...
A licitação pode facilmente saltar sua linha, não é obrigada a parar em todos os pontos (ou seja, a igualdade exata não acontecerá)
mudar a condição para, por exemplo, se ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) ||| (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similar...
Obrigado!
E se a situação for diferente? Há linhas horizontais com nomes diferentes na tabela. Você precisa do roteiro para calcular qual linha corresponde a qual preço.
Por favor, ajude - Não consigo entender porque recebo zero ao calcular a matriz VesMass em valores i>0 ?
Acontece que você deve escrever não 4 e 5, mas 4.0 e 5.0 - qual é a lógica - não está claro para mim...
Leia a documentação e ela se tornará clara. É bom que você mesmo o tenha feito.
Já li sobre algo assim antes - então decidi tentar, mas não está claro onde está a lógica por trás disso... E, a propósito, não consegui encontrar a resposta na documentação.
Você pode escrever 4,0/5 ou (duplo)4/5 - então o resultado é um número real.Esta é uma característica não apenas no MCL, em C++ e em outras linguagens de programação também - a divisão de dois inteiros ou variáveis do tipo (int) dará um resultado truncado ao inteiro. No seu caso 4/5=0.
Você pode escrever 4,0/5 ou (duplo)4/5 - então o resultado é um número real.Esta não é apenas uma característica da ICL, em C++ e outras linguagens de programação é a mesma - dividir dois inteiros ou variáveis de tipo (int) dará um resultado truncado a um inteiro. No seu caso 4/5=0.
Entendo isso, mas não entendo a lógica da solução - ou seja, a necessidade.
Eu entendo isso, mas não entendo a lógica por trás da solução - ou seja, a necessidade.
Bem, você não argumenta "por que 2*2=4 em aritmética, qual é a lógica da solução"? Basta tomá-lo como um axioma e usá-lo. É assim com a divisão de dois números inteiros.
Bem, você não argumenta "por que 2*2=4 em aritmética, qual é a lógica por trás da solução"? Basta tomá-lo como um axioma e usá-lo. É o mesmo com a divisão de dois números inteiros.
Vou verificar com adição...
A linha é uma linha de tendência. Eu mudei as propriedades para um raio. Isso não ajudou. Se eu quisesse que ele produzisse o preço independentemente da posição da barra zero (acima, abaixo).
Este código também não funciona.
int start() {
double pr=ObjectGetValueByShift("line",0);
Se (Bid==pr){
Alerta (pr);}
retorno(0);}
O nome da linha está escrito corretamente?
Experimente este roteiro e mostre o que ele diz nos registros.
}
O roteiro detecta o objeto, escreve o nome corretamente. Mas o preço é absolutamente canhoto. É marcado na foto com uma linha horizontal. Ele dá esses preços independentemente de as barras terem cruzado a linha ou não.
A linha é de tendência. Alterou as propriedades para vigiar. Isso não ajudou. Idealmente, o preço deve ser exibido independentemente da posição da barra zero (superior, inferior).
Este código também não funciona.
int start() {
double pr=ObjectGetValueByShift("line",0);
Se (Bid==pr){
Alerta (pr);}
retorno(0);}
A licitação pode facilmente saltar sua linha, não é obrigada a parar em cada ponto (ou seja, você não terá a igualdade exata).
mudar a condição para, por exemplo, se ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) ||| (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similar...
A licitação pode facilmente saltar sua linha, não é obrigada a parar em todos os pontos (ou seja, a igualdade exata não acontecerá)
mudar a condição para, por exemplo, se ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) ||| (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similar...
Obrigado!
E se a situação for diferente? Há linhas horizontais com nomes diferentes na tabela. Você precisa do roteiro para calcular qual linha corresponde a qual preço.