Интересная тут у вас арифметика

 
Интересна у вас считаются арифмитические операции:
2006.09.22 00:20:28 Adviser EURUSD,M5: 12786/12784, Prices 1.2787/1.2784
int calcAsk = Ask / Point; int calcBid = Bid / Point;
Print(calcAsk, "/", calcBid,", Prices ",Ask , "/", Bid);


Лекарство:

int AntiPoint = 1 / Point;
int calcAsk = Ask * AntiPoint; int calcBid = Bid * AntiPoint;
Print(calcAsk, "/", calcBid,", Prices ",Ask , "/", Bid);


2006.09.22 00:28:05 Adviser EURUSD,M5: 12786/12783, Prices 1.2786/1.2783
Кучу времени убил на отлов этого бага, еще и дополнительные убытки получил.

 
"Я тут все мели знаю,это первая!" :)

"Косяки с арифметикой?"
 
кароча замучался я уже, лекарство не помогает оказца, помогите:
   int AntiPoint = NormalizeDouble(1,Digits) / NormalizeDouble(Point,Digits);
   int calcAsk = fixedAsk * AntiPoint; int calcBid = fixedBid * AntiPoint;
   if ((Ask != NormalizeDouble(calcAsk * Point,Digits)) || (Bid != NormalizeDouble(calcBid * Point,Digits))) 
      Print("Error founded! Calcs if wrong: (", calcAsk, "/", calcBid,"), Prices ",Ask , "/", Bid);


2006.09.22 11:38:45 Adviser EURUSD,M5: Error founded! Calcs if wrong: (12814/12810), Prices 1.2814/1.2811

 
кароча замучался я уже, лекарство не помогает оказца, помогите:
   int AntiPoint = NormalizeDouble(1,Digits) / NormalizeDouble(Point,Digits);
   int calcAsk = fixedAsk * AntiPoint; int calcBid = fixedBid * AntiPoint;
   if ((Ask != NormalizeDouble(calcAsk * Point,Digits)) || (Bid != NormalizeDouble(calcBid * Point,Digits))) 
      Print("Error founded! Calcs if wrong: (", calcAsk, "/", calcBid,"), Prices ",Ask , "/", Bid);


2006.09.22 11:38:45 Adviser EURUSD,M5: Error founded! Calcs if wrong: (12814/12810), Prices 1.2814/1.2811



Что за переменные fixedAsk и fixedBid ?
Если я Вас правильно понял, то так :
int AntiPoint = MathCeil(1.0/Point);
int calcAsk   = MathCeil(fixedAsk * AntiPoint);
int calcBid    = MathCeil(fixedBid * AntiPoint);


;).

Удачи и попутных трендов.

 
ошибочка малость была, но не думаю что это поможет:
   int AntiPoint = NormalizeDouble(1,Digits) / NormalizeDouble(Point,Digits);
   int calcAsk = fixedAsk * AntiPoint; int calcBid = fixedBid * AntiPoint;
   if ((fixedAsk != NormalizeDouble(calcAsk * Point,Digits)) || (fixedBid != NormalizeDouble(calcBid * Point,Digits))) 
      Print("Error founded! Calcs if wrong: (", calcAsk, "/", calcBid,"), Prices ",fixedAsk , "/", fixedBid);
 
Что за переменные fixedAsk и fixedBid ?
Если я Вас правильно понял, то так :
int AntiPoint = MathCeil(1.0/Point);
int calcAsk   = MathCeil(fixedAsk * AntiPoint);
int calcBid    = MathCeil(fixedBid * AntiPoint);


;).

Удачи и попутных трендов.


Спасиба, попробую.
А фикседы это просто цены зафиксированные в начале алгоритма, чтобы пока алгоритм идет цена вдруг чудесным образом не изменилась :). Предосторожность вообщем (хотя я зафиксировал один тикой случай).
 
Не помогло :'(
2006.09.22 12:17:03 Adviser EURUSD,M5: Error founded! Calcs if wrong: (12817/12815), Prices 1.2817/1.2814
 
Пока так поставил:
   int calcAsk = NormalizeDouble(fixedAsk * AntiPoint, 0); 
   int calcBid = NormalizeDouble(fixedBid * AntiPoint, 0);


Полет вроде нормальный :)

Причина обращения: