Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 343

 
Конечно, можно!!!
 
Vladimirovits:
У меня в папке experts лежит весь проэкт визуал студии... Откомпилировать- это же файл .exe, точно?

нет, откомпилированная библиотека - это файл ExpertSample.dll
 
Forexman77:

Шаблон взял из учебника. Не особо сейчас силен в функциях по обработке ошибок.

На открытии ордеров там есть RefreshRates(); (биды и аски заменил через маркет инфо, как сказали)

И функция обработки ошибок:

Хотел спросить. Можно в нее следующую строку внести от 129 ошибки к примеру так?

129

ERR_INVALID_PRICE

Неправильная цена


При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?


Автоторговлю просто отключат и всего делов.

 
artmedia70:

129

ERR_INVALID_PRICE

Неправильная цена


При получении этой ошибки нужно пересмотреть логику советника. Это ж он отсылает неверную цену в торговом приказе. А вы решили задолбить сервер ошибочным торговым приказом?


Автоторговлю просто отключат и всего делов.

Просмотрел вроде все. Может когда советник посылает запрос:

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
он запоминает по какой цене купить?

А у меня было следующее:

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.

Проблемм с продажами вроде не было, только с покупками.

Нашел инфо по данной теме:

"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."

Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.

 

Вопрос к Гуру.

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

При преодолении величины, значение становится, соответствующему текущему моменту.

Ниже код индикатора с пояснениями:

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua 
//--- input parameters
//--- buffers
bool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   static double MA_otshet;  //здесь хранится информация по MA_otshet
  for(int i=0;i<limit;i++)
   {  
      MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
      RefreshRates();   
      if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_2_t; // записываем значение MA_otshet
          ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
          flag=false; // устанавливаем флаг запрета дальнейших расчетов
          }
      if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;  // то рисуем значение индикатора, как записанный MA_otshet
          }
      if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
          flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
          }
   }  
   return(0);
  }
//+------------------------------------------------------------------+

 
Forexman77:

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

При преодолении величины, значение становится, соответствующему текущему моменту.

Ниже код индикатора с пояснениями:


DRAW_SECTION

 
Forexman77:

Просмотрел вроде все. Может когда советник посылает запрос:

он запоминает по какой цене купить?

А у меня было следующее:

то есть бид меньше или равно МА, то покупаем. Покупки осуществляются по аску вот и получается игра в догонялки аск.

Проблемм с продажами вроде не было, только с покупками.

Нашел инфо по данной теме:

"Если запрашиваемой цены открытия не было в ценовом потоке либо запрашиваемая цена не нормализована в соответствии с количеством знаков после десятичной точки, то будет сгенерирована ошибка 129 (ERR_INVALID_PRICE). Если запрашиваемая цена открытия сильно устарела, то независимо от значения параметра slippage будет сгенерирована ошибка 138 (ERR_REQUOTE). Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage."

Если все-таки дело не в bid и ask, то сделка должна была пройти. Цитирую " Если же запрашиваемая цена устарела, но ещё присутствует в ценовом потоке, то позиция открывается по текущей цене и только в том случае, если текущая цена попадает в диапазон price+-slippage." Цена при зависании была в торговой зоне 100%. Клоз был значительно ниже скользящей средней.

Давайте исходить из того, что Ask всегда нормализована - это цена: она не высчитывается, и нормализовывать её нет смысла.

Значит цена может быть неправильной почему? Может-таки данные устаревшие? Попробуйте непосредственно перед командой OrderSend() выполнить RefreshRates().

 
Приветствую вас, уважаемые трейдеры - программисты!!!
Какой смысл имеет AccountComany?
Из названия можно сделать определенные выводы, но как это относится к языку программирования MT4 ???

AccountCredit?

AccountCurrency?

AccountEquity?

AccountFreeMargin?

AccountFreeMarginCheck?

AccountLeverage?

AccountStopoutLevel?

AccountStopoutMode?

ArrayBsearch?

Мне очень интересно знать подробное описание каждой команды. Прошу вас помочь.

 

ArrayCopy?

ArrayCopyRates?

ArrayCopySeries?

ArrayDimension?

ArrayGetAsSeries?

 

Что такое ставка массива?