229 терминал

 

Всем привет.

Написал советника в котором промежуточные вычисления идут в масивах, периодичски приходится обнулять массивы, енять их размерность.

Вообщем на 225 терминале работет, а на 229 пишет ошибку инициализации массива internal error arrayInitilize. Ну а функция обнления массива простая где тут можно ошибится ArrayInitialize(massiv,0.0);

 

Не забудь предварительно массиву становить правильную размерность, иначе будет такая кака...

 
xrust:

Не забудь предварительно массиву становить правильную размерность, иначе будет такая кака...

спасибо за совет. Но массивы это цветочки. Сейчас раскажу про ягодки. Есть сотвеник попроще без массивов, так и он торговать не хочет вываливается с ошибкой 129, неверная цена. По твоим наставлениям я цену всегда уже нормализирую, ибо дц с 5 значнынми ценами. А теперь главный приколы.

1) MarketInfo(OrderSymbol(), MODE_DIGITS); выдает 0

2) соотвесвенно nask=NormalizeDouble(Ask,dg); выдает не 1.32132 а просто 1

3) Print(Ask); выдает 4 значную цену, т.е. как достучатся до 5 значной цены?

 

может быть нас отучают от MQ4? :)

 
NIkolay2000:

спасибо за совет. Но массивы это цветочки. Сейчас раскажу про ягодки. Есть сотвеник попроще без массивов, так и он торговать не хочет вываливается с ошибкой 129, неверная цена. По твоим наставлениям я цену всегда уже нормализирую, ибо дц с 5 значнынми ценами. А теперь главный приколы.

1) MarketInfo(OrderSymbol(), MODE_DIGITS); выдает 0

2) соотвесвенно nask=NormalizeDouble(Ask,dg); выдает не 1.32132 а просто 1

3) Print(Ask); выдает 4 значную цену, т.е. как достучатся до 5 значной цены?



Напоминаю что по описанию разработчиков, функции Marketinfo() могут не корректно работать в ините, так что вызывай просто Digits, а вообще погугли форум по этой теме, найдешь много описаний подводных камней .
 

NIkolay2000:

3) Print(Ask); выдает 4 значную цену, т.е. как достучатся до 5 значной цены?

используй
Print(DoubleToStr(Ask,5));
 
Ок, спасибо всем буду пробовать все рекомендации.
 

получение значений аска и бида делаю в int start()

выводить в журнал 5 знаков уде получается а вот как теперь заявки брость с 5 знаками? просто как было в 225- 226 терминале не получается. Пока грешу на аск и бид а то вылазит ошибка 129.

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

 

пишем функцию - обертку :

double nd(double in){return(NormalizeDouble(in,Digits));}

и оборачиваем в нее все вызовы цен :

OrderSend(Symbol(),OP_BUY,Lots,nd(Ask),3,0,nd(Ask+TakeProfit*Point));не забываем перед вызовом цены делать  RefreshRates()
 
xrust:

пишем функцию - обертку :

и оборачиваем в нее все вызовы цен :


спасибо. Прикол в том что я и раньше нормализировал типа OrderSend(Symbol(),OP_SELL,lot,nbid,3,nbid-SL*Point,nbid-TP*Point,"",mgk,0,Red);,

nask=StrToDouble(DoubleToStr(Ask,5));

nbid=StrToDouble(DoubleToStr(Bid,5));

Твой совет помог ошибка 129 не появляется. Но и сделки тоже не появляются.

 
Опять начала вылазить 129 ошибка. Нписал письмецо сотрдникам дц, пускай они себе голову поломают.