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));
yayılma ile =2
askP=105143 bidP=105141 Ortalama= 105142 MathFloor ((int)Ortalama)= 105142
yayılma ile = 3
askP=105144 bidP=105141 Ortalama= 105142.5 MathFloor((int)Ortalama)= 105142
4'lük bir yayılma ile!!!!
askP=105145 bidP=105141 Ortalama= 105143 MathFloor((int)Averab)= 105142
niye ya?
Herkese merhaba, zaten alıntıların doğruluğu ile eziyet ettim. Normalleşme vb.
Double ve int'nin ne olduğunu bir şekilde anlayabilmeniz gerekir. Tip döküm nasıl çalışır.
MathMod ve MathFloor'u hiç kullanmadım . Kodunuzda, yazılanların arkasında ne olduğunu hiç anlamadığınız çok fazla çığlık var.
Çift sayı yazdırmak hiçbir şey ifade etmez. Gerçek çift değeri yazdırmak istiyorsanız, baytlarına bakmanız gerekir.
sadece elle yazmamak için çıktı alın,
Kendi başına değişken ondan beklediğim sonucu vermiyor.
Tip döküm , int ve çift normalleştirme, yardım almadan yaptığım şey.
Şu anda umutsuzluk içindeyim çünkü tüm seçenekleri denedim. ve olması gerektiği gibi çalışmayan 1000 koddan 1'lik bir parçayı ortaya çıkardı.
Ama yardımın için teşekkürler.
İstediğimi elde etmeye çalış: bana kodu daha sonra göstermene gerek yok. sadece işe yarayıp yaramadığını söyle.
Sor ve Bid alıyoruz.
ve ortalama fiyatı hesaplayın.
Yayılma tek ise (3,5,7,9 vb.), ortalama fiyatı Teklif'e daha yakın eşitleriz.
Örneğin:
Teklif=1.55555 Alış=1.55557 Ortalama Fiyat= 1.55556 Fark=2
Teklif=1.55555 Alış=1.55558 Ortalama fiyat= 1.55556 spread=3
ve her şeyi doğru yapacaksın.
Fakat yayılma 4,5,6,7 olduğunda bu doğruluk sizin için bilinmeyene gidecektir. ve sayı yanlış yerde yüzer.
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));
yayılma ile =2
askP=105143 bidP=105141 Ortalama= 105142 MathFloor((int)Ortalama)= 105142
yayılma ile = 3
askP=105144 bidP=105141 Ortalama= 105142.5 MathFloor((int)Ortalama)= 105142
4'lük bir yayılma ile!!!!
askP=105145 bidP=105141 Ortalama= 105143 MathFloor((int)Ortalama)= 105142
niye ya?
Bir şekilde benzer bir durum vardı - o zaman aklım zaten öfkeyle kaynıyordu. Double'ı şamandıra ile değiştirmek yardımcı oldu, neden hala bilmiyorum.
Teşekkür ederim deneyeceğim ........ beynim de kaynadı bile.
EVET!!! İşte böyle çalışır! her şey yolunda.
float bidP= NormalizeDouble ( Bid , Digits )/ NormalizeDouble ( Point , Digits );
float Averab=((askP+bidP))/ 2.0 ;
Teşekkürler.! Artık ne yapacağımı bilmiyorum....
int askP = ( int )( Ask / Point + ALPHA);
int bidP = ( int )( Bid / Point + ALPHA);
MathFloor bu şekilde saban sürer
{
return (( int )((Num > 0 ) ? Num : Num - 1 ));
}
farklı spreadlerde? 2,3,4,5,6,7 dahil?
çünkü yönteminizi daha önce denedim (olmadan da + ALFA ). ve 2.3'te her şey yolunda, ancak 4.5'te - zaten bir aksaklık
normalleştirme, işlevde yaptığım ilk şey bu, ancak ne yazık ki bazı yayılmalarda başarısız olmaya başlıyor
normalleştirme, işlevde yaptığım ilk şey bu, ancak ne yazık ki bazı yayılmalarda başarısız olmaya başlıyor
Sor ve Bid alıyoruz.
ve ortalama fiyatı hesaplayın.
Yayılma tek ise (3,5,7,9 vb.), ortalama fiyatı Teklif'e daha yakın eşitleriz.
int DoubleToInt( const double Num )
{
return (( int )(Num + ALPHA));
}
void OnStart ()
{
double NewPrice = DoubleToInt(( Ask + Bid ) / ( 2 * Point )) * Point ;
Print (NewPrice);
}

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Herkese merhaba, zaten alıntıların doğruluğu ile eziyet çekiyorum. Normalleşme vb.
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 ));
yayılma:2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105143 bidP2=105141 Averab2=105142.0000000000 AUTOPPRICE= 1000142
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 OTOPRICE= 1.0514199734
yayılma:3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: ÇİFT askP2=105144 bidP2=105141 Averab2=105142.5000000000 OTOPRICE= 100050142
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 OTOPRICE= 1.0514199734
yayılma:4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: ÇİFT askP2=105145 bidP2=105141 Averab2=105143.000000000 OTOPRICE= 10005012
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105145 bidP=105141 Averab=105143.000000000 OTOPRICE= 1.0514299870
yayılma:5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPPRICE= 1000143
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Ortalama=105143.5000000000 OTOPRICE= 1.0514299870
Bu ekstra işaretler tünelin sonunda bir yerde..........