[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 45

 
Stells:

Добрый день.

Помогите извлечь значения линий Up_Line и Down_Line индикатора ExTrendv2 (во вложении) в советник.

Пробую так:

для Up_Line iCustom(NULL, 0, "ExTrendv2", 0, 0,1)

для Down_Line iCustom(NULL, 0, "ExTrendv2", 0, 1,1)

не получается.


А советник с таким индикатором терминал не вешает?
 

в тестере не вешает вроде.

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

 
Всем привет! Пробую советник тестировать на одном инструменте и на 4 таймфреймах одновременно - столкнулся с небольшой неприятностью - ошибка 129 неправильная цена и при открытии и при закрытии, торговый поток вроде как разделен перед отсылкой орера и перез закрытием while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек");
Sleep(Interval);} RefreshRates(); Кто нибудь знает че это за фиготень и как с ней бороться?
 
Stells:

в тестере не вешает вроде.

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


Попробуй так, параметров то нету вроде бы

Up_Line iCustom(  NULL, 0, "ExTrendv2", 0,1);
Down_Line iCustom(NULL, 0, "ExTrendv2", 1,1);

Хотя индикатор на каждом тике делает полный перерасчет.

 
Dimoncheg:
Всем привет! Пробую советник тестировать на одном инструменте и на 4 таймфреймах одновременно - столкнулся с небольшой неприятностью - ошибка 129 неправильная цена и при открытии и при закрытии, торговый поток вроде как разделен перед отсылкой орера и перез закрытием while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек");
Sleep(Interval);} RefreshRates(); Кто нибудь знает че это за фиготень и как с ней бороться?
ERR_INVALID_PRICE 129 Неправильная цена


Нормализуйте цены до Digits перед отправкой запроса на сервер

 
Vinin:


Попробуй так, параметров то нету вроде бы

Хотя индикатор на каждом тике делает полный перерасчет.

Я пожалел, что повесил его на график. Терминал ушёл в глубокую задумчивость, минут через 15 я его убил
 
artmedia70:
ERR_INVALID_PRICE 129 Неправильная цена


Нормализуйте цены до Digits перед отправкой запроса на сервер



Цены естественно нормализованы NormalizeDouble(Ask,Digits) и NormalizeDouble(Bid,Digits), для отправки ордеров пробовал в том числе функцию Игоря Кима, которая сдесь лежит - вылазит та же ошибка, поскольку функция ее не обрабатывает, просто пять раз пробует послать ордер и все. Ошибка возникает не при каждой команде на отправку ордера, большинство ордеров все таки открываются. Ощущение что фигня эта как то связана с торговым потоком, поскольку в частном случае она происходит когда эксперт хочет отправить одновременно несколько ордеров на разных таймфремах одного инструмента, один обычно отсылается а остальные с этой ошибкой нифига.
 
Dimoncheg:

Цены естественно нормализованы NormalizeDouble(Ask,Digits) и NormalizeDouble(Bid,Digits), для отправки ордеров пробовал в том числе функцию Игоря Кима, которая сдесь лежит - вылазит та же ошибка, поскольку функция ее не обрабатывает, просто пять раз пробует послать ордер и все. Ошибка возникает не при каждой команде на отправку ордера, большинство ордеров все таки открываются. Ощущение что фигня эта как то связана с торговым потоком, поскольку в частном случае она происходит когда эксперт хочет отправить одновременно несколько ордеров на разных таймфремах одного инструмента, один обычно отсылается а остальные с этой ошибкой нифига.

Непосредственно перед использованием Ask и Bid выполните RefreshRates()
 
//-------------------------------------------------------------------+
extern int    TotalOrders    = 1;
//-------------------------------------------------------------------+
// Global variables
int Cnt = 0;              // counter variable, used in for() loops
    // only perform analysis and open new order if we have not reached our TotalOpenOrders max
    if(TotalOpenOrders() < TotalOrders)
    {
//+------------------------------------------------------------------+
//|-----------------------//  Orders Count  //-----------------------|
//+------------------------------------------------------------------+
// This function returns the total amount of orders the expert advisor has open  
int TotalOpenOrders()
{
  Cnt=OrdersTotal();
  int TotalOpenOrders = 0;
  if(Cnt==0)
  {
    return(0);
  }
    else
    {
    for(;Cnt>=0;Cnt--)
    {
      RefreshRates();
      OrderSelect(Cnt,SELECT_BY_POS);
      if(OrderMagicNumber()==Magic)
      {
      TotalOpenOrders++;
      }
    }
  }
  return(TotalOpenOrders);
}
 
artmedia70:
Я пожалел, что повесил его на график. Терминал ушёл в глубокую задумчивость, минут через 15 я его убил

А в код не заглядываешь прежде чем что-то куда-то вешать
Причина обращения: