Вопросы от "чайника" - страница 130

 
Омг... идите читайте дальше.
 

Добрый!

Win7 что-то сходу не нашёл  в форуме, как быть с рабочим каталогом программы? Как мне показалось. в win7 в момент запуска создаётся какой-то свой временный каталог. куда копируется вся проргамма, поэтому , при работе с MetaEditor получается. что копирую файл в include, например на диске D, а в окне metaeditor ничего нет. Из окна metaeditor вызвал" Открыть папку", появляется окно на диске C где-то во временных. Как быть? Как их синхронизировать или запретить win7 такое разделение?

Спасибо! 

Документация по MQL5: Файловые операции / FileCopy
Документация по MQL5: Файловые операции / FileCopy
  • www.mql5.com
Файловые операции / FileCopy - Документация по MQL5
 
bivmail:

Добрый!

Win7 что-то сходу не нашёл  в форуме, как быть с рабочим каталогом программы? Как мне показалось. в win7 в момент запуска создаётся какой-то свой временный каталог. куда копируется вся проргамма, поэтому , при работе с MetaEditor получается. что копирую файл в include, например на диске D, а в окне metaeditor ничего нет. Из окна metaeditor вызвал" Открыть папку", появляется окно на диске C где-то во временных. Как быть? Как их синхронизировать или запретить win7 такое разделение?

Спасибо! 

https://www.mql5.com/ru/forum/1111/page712#comment_173757
 
TheXpert:

1.  Каждый язык имеет свою область применения. Говорить о языке, что он "самый продвинутый" в целом это абсурд.

2.  А давай! Какая разница как это называется? Суть почти не меняется.

1.  Ладно, соглашусь.  Тогда mql5 - самый продвинутый язык для автоторговли. :)  Давай дальше продвигать.

2.  Ну всё, просим, просим !!

Vladix:
2. Поддерживаю

Уже очень коллективно просим!

:)

 
всем привет.
а элементарные вопросы по языку mql5 здесь задают? :-)
а то судя по обсуждению, тут одни адовые ооп-ники...
 
GameOver:
всем привет.
а элементарные вопросы по языку mql5 здесь задают? :-)
а то судя по обсуждению, тут одни адовые ооп-ники...

Чайники разного калибра бывают.  Ну можешь ещё сделать ветку "для ламеров", если там тебе уютней будет ;-)
 
в попытках освоить сие синтаксические творение, уверовав в "простоту" языка,
начал рисовать элементарный скрипт.
кароч одно замечание и один вопрос.

void OnStart() {
   MqlRates  aBars[];
   ArraySetAsSeries(aBars,true);
   int maxBars=TerminalInfoInteger(TERMINAL_MAXBARS); , bad_bars=0;
   int bars=CopyRates(Symbol(),Period(),0,maxBars,aBars);

 увы, если количество баров выставлено как стоит Unlimited, скрипт не работает. закавырка в maxBars,
говорит - памяти нехватка. т е по сути, получается вызов TerminalInfoInteger(TERMINAL_MAXBARS);

бесполезен, все равно надо ставить конкретное число. что странно, ибо в реале на графике не больше 100 000 баров.
как же получить количество реально загруженых баров? ибо копирайтс тупо не успевает ничего вернуть...

второй вопрос такой.
пытаясь реализовать элементарную проверку (элементарна она была в мкл4)

      // delete bad day of week and bad bars
      if (TimeDayOfWeek(Time[i])<1 || TimeDayOfWeek(Time[i])>5 || (High[i]-Low[i])<10*Point) { errBar++; continue; }

поиски на форуме (поиск в справке mql5 на фразы day_of_week, dayofweek ниче не дал.. оч полезная справка!) вывели на такую реализацию

 

MqlDateTime temp;
TimeToStruct(aBars[i].time,temp);
if (temp.day_of_week<1 || temp.day_of_week>5 ||  aBars[i].high-aBars[i].low<10*Point() ) {errBar++; continue;}

 

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

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 

добрый день!

Подскажите,  пжл, есть ли в РФ брокеры, которые предоставляют в качестве терминала для работы на ФОРТС и ММВБ Метатрейдер? 

 

Предложите, пожалуйста, более быстрый вариант алгоритма "рулетка" чем этот:

//——————————————————————————————————————————————————————————————————————————————
// Рулетка.
int Selection()
{
  //----------------------------------------------------------------------------
  int    i=0,u=0;
  double p=0.0,start=0.0;
  double          fit[][2];
  ArrayResize(fit,SizeOfPop);
  ArrayInitialize(fit,0.0);
  double delta=(Population[0][0]-Population[0][SizeOfPop-1])*0.1-Population[0][SizeOfPop-1];
  //----------------------------------------------------------------------------
  for(i=0;i<SizeOfPop;i++)
  {
    fit[i][0]=start;
    fit[i][1]=start+MathAbs(Population[0][i]+delta);
    start=fit[i][1];
  }
  p=RNDfromCI(fit[0][0],fit[SizeOfPop-1][1]);

  for(u=0;u<SizeOfPop;u++)
    if((fit[u][0]<=p && p<fit[u][1]) || p==fit[u][1])
      break;
    //--------------------------------------------------------------------------
  return(u);
}
//——————————————————————————————————————————————————————————————————————————————
понятно, что массивы можно вынести из функции что бы их не объявлять каждый раз и не ресайзить, но мне нужно более революционное решение. :)
 
GameOver:
в попытках освоить сие синтаксические творение, уверовав в "простоту" языка,
начал рисовать элементарный скрипт.
кароч одно замечание и один вопрос.

void OnStart() {
   MqlRates  aBars[];
   ArraySetAsSeries(aBars,true);
   int maxBars=TerminalInfoInteger(TERMINAL_MAXBARS); , bad_bars=0;
   int bars=CopyRates(Symbol(),Period(),0,maxBars,aBars);

 увы, если количество баров выставлено как стоит Unlimited, скрипт не работает. закавырка в maxBars,
говорит - памяти нехватка. т е по сути, получается вызов TerminalInfoInteger(TERMINAL_MAXBARS);

бесполезен, все равно надо ставить конкретное число. что странно, ибо в реале на графике не больше 100 000 баров.
как же получить количество реально загруженых баров? ибо копирайтс тупо не успевает ничего вернуть...

Попробуем разобраться. Для функции CopyRates() предпоследний параметр

int              count,             // сколько копируем
Т.е. количество копируемых элементов. В Вашей конструкции кол-во элементов - Unlimited. Грубо говоря, unreal :)  Вот, наверно, и происходит при работе непрерывное перераспределение памяти, пока она не истощится. Попробуйте ипользовать не TerminalInfoInteger(TERMINAL_MAXBARS), а более конкретное значение: Справочник MQL5 / Доступ к таймсериям и индикаторам / Bars  
Причина обращения: