Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Они уже зарабатывают на своих сигналах. Опубликуй и ты свой!
dobr
61
dobr 2012.01.18 13:51 

Доброго времени суток всем.

Я вот написал такой граааль на дюжину строк:

int start()
  {
if (OrdersTotal()==0)
{
OrderSelect (OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);
if (OrderProfit()<0) lot=OrderLots()*2; else lot=0.01;
//----
MathSrand(TimeLocal());
int a=MathRand();
int b=a%2;
//----
if (b==0) OrderSend(Symbol(),OP_BUY,lot,Ask,5,Bid-sl*Point,Ask+tp*Point);
if (b==1) OrderSend(Symbol(),OP_SELL,lot,Bid,5,Ask+sl*Point,Bid-tp*Point);
if (GetLastError()!=0) Print("test-",lot); //проверяем
}
   return(0);
  }

и столкнулся с такой проблемой:

начинаются неправильные объемы.

И причем самое интересное, что ошибка всплывает в ПРОИЗВОЛЬНЫЙ момент времени. Т.е. если запустить эксперта в тестере 10 раз подряд, момент начала выдачи ошибки каждый раз будет другим.

В данном примере лот 56, но может быть 202, 317, 564 и т.д.

И еще сами объемы. Здесь эта строка:

if (OrderProfit()<0) lot=OrderLots()*2; else lot=0.01;

и объем 5,12.

Если заменить на

if (OrderProfit()<0) lot=OrderLots()+lot; else lot=0.01;
появятся вообще нереальные цифры.

Всвязи с этим вопрос: Я где-то что то упустил, или это глюки тестера? Если так, то как исправить?

AlexHacker007
105
AlexHacker007 2012.01.18 13:55  

lotbuys=NormalizeDouble(lotbuys,2);

lotselss=NormalizeDouble(lotselss,2);

может это поможет ? может выскакивают знаки и еще проверку кинь если меньше нуля или ноль чтобы ставило лот минимум 001

dobr
61
dobr 2012.01.18 14:12  
AlexHacker007:
То же самое. NormalizeDouble не помог. А проверка уже в коде есть:
if (GetLastError()!=0) Print("test-",lot); //проверяем
Меня сильно интересует почему он самовольничает(если бы ошибка всплывала каждый раз в один и тот же момент, тогда другое дело). Может это как-то связано с MathRand?
AlexHacker007
105
AlexHacker007 2012.01.18 18:53  
Dobr:
То же самое. NormalizeDouble не помог. А проверка уже в коде есть: Меня сильно интересует почему он самовольничает(если бы ошибка всплывала каждый раз в один и тот же момент, тогда другое дело). Может это как-то связано с MathRand?
сделай Comment (lot); запусти медленно советник и смотри вверху нацифры .. может в них увидишь какую нибудь чушь...
Cmu4
1227
Cmu4 2012.01.18 19:13  
Думаю, это наступает тогда, когда лот огромным становится..
AlexHacker007
105
AlexHacker007 2012.01.18 19:26  

тогда добавь ограничение лота если лот больше чем ХХХ то лот равен максимально допустимому у ДЦ можно запросить через фунткцию можно посмотреть на сайтеу

у меня например у одного Дц лот максимальнй 100 лотов у другого 500 лотов у третьего 1000 лотов

PapaYozh
3768
PapaYozh 2012.01.18 19:32  
Dobr:

Доброго времени суток всем.

Я вот написал такой граааль на дюжину строк:

и столкнулся с такой проблемой:

начинаются неправильные объемы.

И причем самое интересное, что ошибка всплывает в ПРОИЗВОЛЬНЫЙ момент времени. Т.е. если запустить эксперта в тестере 10 раз подряд, момент начала выдачи ошибки каждый раз будет другим.

В данном примере лот 56, но может быть 202, 317, 564 и т.д.

И еще сами объемы. Здесь эта строка:

и объем 5,12.


Скорее всего - у ДЦ ограничение максимального лота 5.00
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий