MetaTrader 4 Build 186 - страница 7

 
MODE_LOTSIZE 15 Размер контракта в базовой валюте. 


Предположу что все-таки не в базовой, а в валюте баланса. Например для GBPUSD этот параметр на всем протяжении тестирования равен постоянной сумме 100000

MODE_MINLOT 23 Минимальный размер лота. 


значение этого параметра непонятно (для фунта возвращает 10), опять таки предположу что возвращает не минимальный размер лота, а делитель по отношению к 1 контракту (1 лоту) позволяющий определить размер минимального лота (в лотах, в текущем варианте непонятно в каких единицах выражено значение)???
по-прежнему нельзя узнать программно маржинальные требования и самое главное валюту баланса.

 
и самое главное валюту баланса.
string AccountCurrency( )
Функция возвращает наименование валюты для текущего счета.
 
"проруха на старуху" :)
 
Добрый день!
Возможно вопросы очень простые, но ответ хотелось бы услышать.
1. Есть ли в MT4 функция стирания баз (в MT3 erase&refresh). Кнопка "обновление" у меня почему-то не работает. Это нужно для быстрой очистки баз "Архив котировок" и загрузки новых вариантов котировок. Можно ли разработчиков попросить ее ввести?
2. В последнее время несколько раз при попытке установить ордер (конкретно GBPUSD) выдавалось сообщение "Нет связи", однако по другим парам ордера проходили (хорошо, что это на ДЕМО). Как проверить, что глючит на сервере, а не у меня или на линии?
3. Если долго не срабатывает команда на установку ордера, жмешь на кнопку "Отменить", появляется окошечко "Ваш ордер отменен", но через некоторое время этот ордер оказывается действующим. Как правильно пользоваться этой командой.
Build 186
С уважением.

взято здесь
http://forum.alpari-idc.ru/viewtopic.php?p=302492#302492
 
Есть индюк (см. ниже). В нём заведены 2 массива. Один (WPR1) обьявлен функцией SetIndexBuffer(), другой (WPR2) установлен функцией ArrayResize(). В оба массива "суются" значения Williams' Percent Range. Затем оба подставляются в функцию iMAOnArray(), которая из этих двух массивов "делает" совершенно разные значения и соответственно линии индикатора рисуются по-разному. Самое интересное в массивах WPR1 и WPR2 значения совершенно одинаковые. Таким образом получается, что для функции iMAOnArray() является критичным способ объявления массива. Почему, собссно? И возникает сразу же второй вопрос - а какую же линию считать истинной?

Уважаемые разработчики, я высылал примерно этого индюка с этими же вопросами недели три назад на stringo. Ответа не последовало. Может сейчас объясните разницу?

Может ещё кто-то в курсе?

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 Yellow

#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_level2 20
#property indicator_level3 50
#property indicator_level4 80

int M_Period = 7;
int W_Period = 3;

double WPR1[],WPR2[],MA1[],MA2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  IndicatorBuffers(3);
  SetIndexBuffer(0,MA1);
  SetIndexStyle (0,DRAW_LINE,1,2);
  SetIndexBuffer(1,MA2);
  SetIndexStyle (1,DRAW_LINE,1,2);
  SetIndexBuffer(2,WPR1);
  return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
  int i,limit,nBars;

  if(nBars<Bars)
  {
    nBars=Bars;

    ArrayResize(WPR2,nBars);

    limit=nBars-1;
    for(i=0; i<limit; i++)
    {
      WPR1[i]=100+iWPR(NULL,0,W_Period,i);
      WPR2[i]=100+iWPR(NULL,0,W_Period,i);
    }

    for(i=0; i<limit; i++)
    {
      MA1[i]=iMAOnArray(WPR1,0,M_Period,0,MODE_LWMA,i);
      MA2[i]=iMAOnArray(WPR2,0,M_Period,0,MODE_LWMA,i);
    }
  }

  return(0);
}
//****************************************************************************************************
int deinit() { return(0); }
 
Используй для WR2 ArraySetAsSeries()
Справка:
bool ArraySetAsSeries( double& array[], bool set) 


Устанавливает направление индексирования в массиве. Значение параметра set TRUE устанавливает направление индексирования в обратном порядке, то есть, последний элемент имеет нулевой индекс. Значение FALSE устанавливает нормальное направление индексирования. Функция возвращает предыдущее состояние. 

Параметры

array[]   -   Числовой массив для установки. 
set   -   Направление индексирования массива. 

Пример

   double macd_buffer[300];
   double signal_buffer[300];
   int    i,limit=ArraySize(macd_buffer);
   ArraySetAsSeries(macd_buffer,true);
   for(i=0; i<limit; i++)
      macd_buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
   for(i=0; i<limit; i++)
      signal_buffer[i]=iMAOnArray(macd_buffer,limit,9,0,MODE_SMA,i);



А также на примере индикатора TDI можно увидеть миграцию массивов из обычных( http://forexsystems.ru/materials/subscribe/3/rfs3.htm ) в индикаторные ( http://forexsystems.ru/materials/subscribe/4/rfs4.htm )

 
2 Rosh
Большое спасибо. С ArraySetAsSeries() работает нормально. В общем-то, я всегда и объявлял промежуточные массивы в секции init(). Но там их всего-то 8 можно использовать. И как минимум один должен быть "рисовальным". Не всегда хватает. Вот и столкнулся с такой ерундой.
Причина обращения: