[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 410

 
Morzh09 >>:

Коллеги, почему может возникать такая проблема:


условие на открытие позиции выполняется, а позиция, при этом, не открывается...


if ( ((MathRound(iCustom(NULL, 0,"ind1",2,0))==1)&&(ind2()==1) )
{
if ( buy_order_open==0 )
{
Alert("Время покупать ", Symbol());
//long
ticket = OrderSend(Symbol(), OP_BUY, lots,NormalizeDouble(Ask, Digits), 3,NormalizeDouble(Bid - sl * Point, Digits), 0, "Buy", MagicNumber, 0, Blue); //Ask
//----
if(ticket < 0)
{
Sleep(30000);
prevtime = Time[1];
}

buy_order_open = 1;
}

}

Alert с сообщением срабатывает, а ордера не отправляются... :((

Что такое  NormalizeDouble(Ask, Digits),разве не достаточно ASK. И если вы его решили нормализовать,то что за Digits ? чему равен или как получен?.

 
zhuki >>:

Что такое NormalizeDouble(Ask, Digits),разве не достаточно ASK. И если вы его решили нормализовать,то что за Digits ? чему равен или как получен?.

NormalizeDouble

Округление числа с плавающей запятой до указанной точности.

Digits

Количество цифр после десятичной точки в цене текущего инструмента.

Иногда ошибки в торг. функциях из-за пятого знака 1,45562

 
zhuki писал(а) >>

Что такое NormalizeDouble(Ask, Digits),разве не достаточно ASK. И если вы его решили нормализовать,то что за Digits ? чему равен или как получен?.

С Digits все нормально.

Проблема скорее всего сидит в слиппаже. На пятизнаке 3 пунктов мало

 
Vinin >>:

С Digits все нормально.

Проблема скорее всего сидит в слиппаже. На пятизнаке 3 пунктов мало

Но, как ни ставь слиппаж в тестере всё равно работать будет.А у него в тестере не работает.И о каких ошибках в торговых функциях  идёт речь?

Уберите NormalizeDouble и я думаю всё заработает.

 
zhuki >>:

Но, как ни ставь слиппаж в тестере всё равно работать будет.А у него в тестере не работает.И о каких ошибках в торговых функциях идёт речь?

Уберите NormalizeDouble и я думаю всё заработает.

слиппаж=25 у меня нет проблем!

Речь идет о

ERR_INVALID_STOPS 130 Неправильные стопы
ERR_INVALID_PRICE 129 Неправильная цена
ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции
 
costy_ >>:

Речь идет о

ERR_INVALID_STOPS130Неправильные стопы
ERR_INVALID_PRICE129Неправильная цена
ERR_INVALID_PRICE_PARAM4107Неправильный параметр цены для торговой функции

130 вы просто не в ту сторону пытаетесь поставить SL или слишком близко.

129 может быть если вы ставите цену один из вариантов использование Digits(неправильного)

4107 никогда не встречался сказать не могу.

А у вас ошибка есть или нет?.

 
zhuki >>:

130 вы просто не в ту сторону пытаетесь поставить SL или слишком близко.

129 может быть если вы ставите цену один из вариантов использование Digits(неправильного)

4107 никогда не встречался сказать не могу.

А,вас ошибка есть или нет?.

Были проблемы, уже давно поменял и все ОК, 130 не из-за неправильных стопов( у меня их нет!) Зависит от диллера.

Советник всегда в рынке! Предлагаю и Вам использовать функцию OrderCloseBy вместо стопов, отлично зарекомендовала себя(не интрадей).

Ask=1.54889 и Lots = 0.1 =))

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем
 
Vinin писал(а) >>
Функция Period() возвращает теккущий таймфрейм в минутах

Все, разобрался, спасибо!

 
kon12 >>:

Все, разобрался, спасибо!

Пользуйтесь триггером для текста

string PeriodToStr(int Per)
   {
      switch(Per)                 // Расчёт коэффициентов для..     
      {                              // .. различных ТФ      
      case     1: return("M1");  // Таймфрейм М1      
      case     5: return("M5");  // Таймфрейм М5      
      case    15: return("M15");  // Таймфрейм М15      
      case    30: return("M30");  // Таймфрейм М30      
      case    60: return("H1");  // Таймфрейм H1      
      case   240: return("H4");  // Таймфрейм H4      
      case  1440: return("D1");  // Таймфрейм D1      
      case 10080: return("W1");  // Таймфрейм W1      
      case 43200: return("МN");  // Таймфрейм МN     
      }
   }
 
costy_ >>:

Были проблемы, уже давно поменял и все ОК, 130 не из-за неправильных стопов( у меня их нет!) Зависит от диллера.

Советник всегда в рынке! Предлагаю и Вам использовать функцию OrderCloseBy вместо стопов, отлично зарекомендовала себя(не интрадей).

Ask=1.54889 мой терминал такого не кушает как и Lots = 0.1 =))

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем

а если...

double LotNorm(double lots, string sim="")
{
int dig=0; double hh;
if(sim=="") sim=Symbol();
//
if(lots<MarketInfo(sim, MODE_MINLOT)) {Print(sim+"=МИНИЛОТ=Недостаточно денег"); return(-1);}
if(lots>MarketInfo(sim, MODE_MAXLOT)) lots=MarketInfo(sim, MODE_MAXLOT);
//
if(MarketInfo(sim,MODE_MINLOT)==0.1) dig=1;
if(MarketInfo(sim,MODE_MINLOT)==0.01) dig=2;
if(MarketInfo(sim,MODE_MINLOT)==0.001) dig=3;
if(MarketInfo(sim,MODE_MINLOT)==0.0001) dig=4;
//
lots=NormalizeDouble(lots, dig);
//
return(lots);
}
Причина обращения: