Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1947

 
Vitaly Muzichenko #:

Нужно брать в расчёт стоимость пункта

Могу дать код, но будете долго разбираться в нём, он большой, также принимает во внимание максимально возможный лот на маржу

Давай, если не осилю, задам вопросы))) Конечно надо брать в расчет стоимость пункта и формула не в 2 действия получается. У меня трудность в не до конца понимании терминов, а тестить правильность предположений занимает время))) Стоимость контракта = стоимость одного лота в деньгах день вычислял)))

 

Доброго времени суток, подскажите пожалуйста как из списка констант вернуть значение в виде текста.

К примеру функция HistoryDealGetInteger возвращает значение int из списка ENUM_DEAL_TYPE при запросе события. Как из возвращаемого числа получить информацию, что это именно "DEAL_TYPE_CREDIT - начисление кредита". Потом после отладки естественно это значение уже будет не нужно, хватит и int для обработки события, но в процессе отладки вообще не понятно, что значит цифры 3 или 5 возвращаемые функцией. 

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Кирилл Якимов #:

Доброго времени суток, подскажите пожалуйста как из списка констант вернуть значение в виде текста.

К примеру функция HistoryDealGetInteger возвращает значение int из списка ENUM_DEAL_TYPE при запросе события. Как из возвращаемого числа получить информацию, что это именно "DEAL_TYPE_CREDIT - начисление кредита". Потом после отладки естественно это значение уже будет не нужно, хватит и int для обработки события, но в процессе отладки вообще не понятно, что значит цифры 3 или 5 возвращаемые функцией. 

string s = EnumToString((ENUM_DEAL_TYPE) x)

 
Maxim Kuznetsov #:

string s = EnumToString((ENUM_DEAL_TYPE) x)

Спасибо большое, помогло.
 

Подскажите, пожалуйста, как решить:

1) Историю не загружал, в окне графика в процессе онлайн успело загрузиться 70 000 минутных баров. Запускаю в тестере советник, в который на всякий случай прописал минимальное кол-во баров для определённого паттерна, он мне и ответил заложенной фразой "не хватает баров для анализа". Принтую iBars, пишет 1200 баров. Загрузил историю (8 000 000 баров). Перезапустил, в настройках "9999999999" баров в окне и истории. СНова пишет "не хватает истории". Принтую iBars, снова 1200. Что это такое и как решить?

2) В мультивалютном анализе как заставить индикатор не прозевать пришедшие новые тики на других валютных парах, если вдруг на текущем графике котировки зависли и OnTick не вызывает проверку? Пробовал OnTimer, но он в тестере не работает

 
В этом скрипте я экспериментирую с изменением размера динамических массивов, у которых разные направления индексации - для того чтобы понять в какой стороне появляются новые ячейки после увеличения размера массива
void OnStart()
  {
   
   int a[], b[], size = 5, new_size = size + 5;
   
   if( ArraySize( a ) != size )
     ArrayResize( a, size, 0 );
   
   if( ArraySize( b ) != size )
     ArrayResize( b, size, 0 );
   
   if( ArrayGetAsSeries( a ) )
     ArraySetAsSeries( a, false );
   
   if( !ArrayGetAsSeries( b ) )
     ArraySetAsSeries( b, true );
   
   for( int i = 0; i < size; i++ )
     {
      a[i] = i;
      b[i] = i;
     };
   
   ArrayResize( a, new_size, 0 );
   ArrayResize( b, new_size, 0 );
   
   for( int i = 0; i < new_size; i++ )
     {
      Alert( "a", i, " ", a[i] );
      Alert( "b", i, " ", b[i] );
      Alert(" ");
     };
   
  }

И вот что по итогу


Получается что у массива b[] (у которого обратная индексация) значения каким-то образом зеркально дублируются после увеличения размера

Почему? Я чего-то не знаю или допустил какую-то ошибку?
 
Alexandr Sokolov #:
В этом скрипте я экспериментирую с изменением размера динамических массивов, у которых разные направления индексации - для того чтобы понять в какой стороне появляются новые ячейки после увеличения размера массива

И вот что по итогу


Получается что у массива b[] (у которого обратная индексация) значения каким-то образом зеркально дублируются после увеличения размера

Почему? Я чего-то не знаю или допустил какую-то ошибку?

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

 
Alexandr Sokolov #:
В этом скрипте я экспериментирую с изменением размера динамических массивов, у которых разные направления индексации - для того чтобы понять в какой стороне появляются новые ячейки после увеличения размера массива

И вот что по итогу


Получается что у массива b[] (у которого обратная индексация) значения каким-то образом зеркально дублируются после увеличения размера

Почему? Я чего-то не знаю или допустил какую-то ошибку?

Переворачивать массив надо после заполнения.

 
JRandomTrader #:

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

Верно, но есть 2 но
1) Зеркальность наблюдается при любых других размерах а не только, как в моём примере - 5
2) Если у массива обратная индексация, то по идее новые ячейки должны появляться в начале массива - чего не наблюдается

 
Alexey Viktorov #:

Переворачивать массив надо после заполнения.

Я тоже об этом подумал - по крайней мере другого решения сейчас не вижу

Причина обращения: