double bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab=((askP+bidP)*1)/2.0;
Print("askP="+askP+" bidP="+bidP+" Averab="+Averab+" MathFloor((int)Averab)="+MathFloor((int)Averab));
no spread=2
askP=105143 bidP=105141 Averab=105142 MathFloor((int)Averab)=105142
no spread=3
askP=105144 bidP=105141 Averab=105142.5 MathFloor((int)Averab)=105142
em 4!!!! spread
askP=105545 bidP=105141 Averab=105143 MathFloor((int)Averab)=105142
por que ?
Olá a todos, estou ficando cansado da exatidão das citações. Normalizações e assim por diante.
De alguma forma, você deve ser capaz de entender o que são o dobro e a int. Como funciona a conversão do tipo.
Eu nunca usei MathMod e MathFloor. Seu código grita muito que você não entende de todo o que está por trás do que você escreveu.
A impressão do número duplo não tem nada a ver com isso. Se você quiser imprimir o valor real do dobro, você precisa olhar para seus bytes.
priming apenas para evitar ter que escrevê-lo manualmente,
A variável em si não dá o resultado que eu espero dela.
Fundição tipo, normalização int e dublagem são o que tenho feito sem ajuda.
No momento estou desesperado como tentei todas as opções. e colocar um pedaço de código 1 em 1000 que não funciona como deveria.
Mas obrigado pela ajuda.
Tente fazer o que eu quero: não me mostre o código depois, apenas me diga se ele funciona ou não.
Faça o Ask and Bid.
e calcular o preço médio.
Se o spread for ímpar (3,5,7,9, etc.), equacionar o preço médio mais próximo do Bid.
Por exemplo:
Licitação=1.55555 Pergunta=1.55557 Preço médio=1.55556 Spread=2
Bid=1.5555 Ask=1.55558 Preço médio=1.55556 Spread=3
e você vai acertar.
Mas quando o spread for 4,5,6,7 - você terá essa precisão indo para o desconhecido. E os números vão nadar na direção errada.
double bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab=((askP+bidP)*1)/2.0;
Print("askP="+askP+" bidP="+bidP+" Averab="+Averab+" MathFloor((int)Averab)="+MathFloor((int)Averab));
no spread=2
askP=105143 bidP=105141 Averab=105142 MathFloor((int)Averab)=105142
no spread=3
askP=105144 bidP=105141 Averab=105142.5 MathFloor((int)Averab)=105142
em 4!!!! spread
askP=105545 bidP=105141 Averab=105143 MathFloor((int)Averab)=105142
por que ?
Uma vez tive uma situação semelhante - minha mente estava fervendo de indignação na época. A substituição do dobro por um flutuador ajudou , ainda não sei por quê.
Obrigado, vou tentar ......... Também estou ficando louco.
SIM!!! É exatamente assim que funciona! não há problema.
float bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
float Averab=((askP+bidP))/2.0;
Obrigado!!! Eu não sei mais o que eu faria........
int askP = (int)(Ask / Point + ALPHA);
int bidP = (int)(Bid / Point + ALPHA);
É assim que funciona o MathFloor
{
return((int)((Num > 0) ? Num : Num - 1));
}
int askP = (int)(Ask / Point + ALPHA);
int bidP = (int)(Bid / Point + ALPHA);
É assim que funciona o MathFloor
{
return((int)((Num > 0) ? Num : Num - 1));
}
para diferentes pastas? incluindo 2,3,4,5,6,7 ?
Porque eu tentei seu caminho antes (sem+ ALPHA). 2,3 spread está bem, mas 4,5 já é uma falha
Normalização, esta é a primeira coisa que fiz na função, mas infelizmente em certas propagações, ela começa a apresentar falhas
normalização é a primeira coisa que fiz na função, mas infelizmente em certas propagações, ela começa a apresentar falhas
Aceite o Ask and Bid.
e calcular o preço médio.
Se o spread for ímpar (3,5,7,9 etc.), equacionar o preço médio mais próximo da Licitação.
int DoubleToInt( const double Num )
{
return((int)(Num + ALPHA));
}
void OnStart()
{
double NewPrice = DoubleToInt((Ask + Bid) / (2 * Point)) * Point;
Print(NewPrice);
}

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá a todos, estou ficando cansado da exatidão das citações. A normalização e assim por diante.
float askP=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
float bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
float Averab=((askP+bidP))/2.0;
AUTOPRICE=MathFloor(Averab)*Point;
Print("FLOAT "+" askP="+askP+" bidP="+bidP+" Averab="+DoubleToString(Averab,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE,10));
double AUTOPRICE2;
double askP2=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
double bidP2=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab2=((askP2+bidP2))/2.0;
AUTOPRICE2=MathFloor(Averab2)*Point;
Print("DOUBLE "+" askP2="+askP2+" bidP2="+bidP2+" Averab2="+DoubleToString(Averab2,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE2,10));
spread:2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:DOUBLE askP2=105143 bidP2=105141 Averab2=105142.000000 AUTOPRICE=1.0514200000
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - TESTE DOUBLE MATHFLOOR EURUSD,M30:FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 AUTOPRICE=1.0514199734
spread:3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:DOUBLE askP2=105144 bidP2=105141 Averab2=105142.5000000000 AUTOPRICE=1.0514200000
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - TESTE DOUBLE MATHFLOOR EURUSD,M30:FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 AUTOPRICE=1.0514199734
spread:4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:DOUBLE askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:FLOAT askP=105145 bidP=105141 Averab=105143.0000000000 AUTOPRICE=1.0514299870
spread:5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - PISO DE TESTE DUPLO EURUSD,M30:FLOATaskP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
Esses sinais extras estão em algum lugar no final do túnel..........