Ошибки, баги, вопросы - страница 3530

 
Slava #:

Ну так и сделайте собственную таблицу соответствий целых чисел строкам

А ещё лучше набор флагов соответствующих определённым словам. Набор флагов и есть набор слов. )))

 
Slava #:

...

Скажите пожалуйста, отсутствие возможности выделять сразу несколько папок в окне - так задумано или это баг?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Andrey Dik, 2024.05.24 09:26

FileSelectDialog () не позволяет выбирать несколько папок, или я делаю что-то не так?

void OnStart ()
{
  string filenames [];

  Print (FileSelectDialog ("Выбор папок агентов",
                           NULL,
                           NULL,
                           FSD_SELECT_FOLDER | FSD_ALLOW_MULTISELECT | FSD_FILE_MUST_EXIST | FSD_COMMON_FOLDER,
                           filenames,
                           NULL));
  ArrayPrint (filenames);
}

Код выше вызывает такое окно:

Несолько папок невозможно выбрать, ни с зажатым Ctrl, ни с Shift ни по Ctrl+A, можно выбрать только одну папку. А требуется выбор сразу нескольких папок.

Вывод в принт ожидаемый:

1
"Test CNT mod 1.09\Agent-127.0.0.1-3003"


 

А компилятор всегда глаза прикрывал на подобное? В рантайме incorrect casting of pointers - как и ожидалось. Но компилируется без ошибок.

class A {};
class B : public A {};

void OnStart()
  {
   B *x = new A;
   delete x;
  }
 

В справочнике по работе с функцией ArrayResize сказано следующее:

Примечание

Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала.

Общее число элементов в массиве не может превышать 2147483647.

При частом распределении памяти рекомендуется использовать третий параметр, задающий резерв для уменьшения количества физического распределения памяти. Все последующие вызовы функции ArrayResize не приводят к физическому перераспределению памяти, а только меняется размер первого измерения массива в пределах зарезервированной памяти. Следует помнить, что третий параметр будет использоваться только тогда, когда будет происходить физическое распределение памяти, например:

ArrayResize(arr,1000,1000);
for(int i=1;i<3000;i++)
   ArrayResize(arr,i,1000);

В данном случае произойдёт 2 перераспределения памяти, один раз до входа в цикл на 3000 итераций, при этом размерность массива будет установлена в 1000 и второй при i равной 2000. Если третий параметр опустить, то произойдёт 2000 физических перераспределения памяти и это замедлит выполнение программы.

Я ошибочно полагал, что при первом запуске функции третий параметр выделит память под массив:

ArrayResize (a, 0, 10000);

но жестоко ошибся, такой код не выделяет под массив память. Распределение памяти происходит только в случае, если второй параметр не 0.

В моём случае нужно делать так:

ArrayResize (a, 10000, 10000);
ArrayResize (a, 0, 10000);

или так:

ArrayResize (a, 1, 10000);
ArrayResize (a, 0, 10000);

что является равнозначным, или так:

ArrayResize (a, 1, 10000);
ArrayResize (a, 0);

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


Таким образом, прошу разработчиков добавить в справку этот момент, что дополнительное выделение памяти под массив происходит только в случае ненулевого второго параметра.

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

 

В Документации SetIndexBuffer отсутствует значение третьего входного параметра по умолчанию.

SetIndexBuffer

Связывает указанный индикаторный буфер с одномерным динамическим массивом типа double.

bool  SetIndexBuffer(
   int                    index,         // индекс буфера
   double                 buffer[],      // массив
   ENUM_INDEXBUFFER_TYPE  data_type      // что будем хранить
   );

ЗЫ В Учебнике - в порядке.

Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
Связывает указанный индикаторный буфер с одномерным динамическим массивом типа double . Параметры index [in]  Номер индикаторного буфера...
 
Что такое "Prop Firm Ready"? И какие основания частого использования этой фразы в маркетинге для покупателей советников?
 
fxsaber #:
Что такое "Prop Firm Ready"? И какие основания частого использования этой фразы в маркетинге для покупателей советников?

ChatGPT-4o

Фраза "Prop Firm Ready" (готовность к проп-трейдингу) в контексте маркетинга торговых советников (также известных как экспертные системы или роботы) относится к тому, что данный советник или торговая стратегия соответствует требованиям проп-трейдинговых компаний. Проп-трейдинговые фирмы предоставляют трейдерам капитал для торговли в обмен на долю от прибыли, и они обычно накладывают строгие критерии на стратегии, которые они готовы финансировать.

Что означает "Prop Firm Ready"?

  1. Соответствие требованиям: Советник должен соответствовать критериям, установленным проп-трейдинговыми компаниями. Это включает в себя правила управления рисками, максимальную просадку, процент выигрышных сделок и другие показатели.
  2. Демонстрация стабильности: Советник должен демонстрировать стабильную и устойчивую прибыльность на протяжении определенного времени, что свидетельствует о его надежности и способности генерировать доходы.
  3. Прохождение проверок: Многие проп-трейдинговые компании требуют, чтобы советники проходили проверку на демо-счетах или реальных счетах в течение определенного периода. "Prop Firm Ready" означает, что советник уже прошел такие проверки или имеет все необходимые характеристики для успешного прохождения.

Основания частого использования в маркетинге

  1. Увеличение доверия: Фраза "Prop Firm Ready" внушает доверие потенциальным покупателям, показывая, что продукт соответствует высоким стандартам и требованиям профессиональных трейдеров.
  2. Привлечение целевой аудитории: Многие трейдеры стремятся получить финансирование от проп-трейдинговых фирм. Утверждение о готовности советника к проп-трейдингу привлекает именно таких трейдеров.
  3. Подтверждение качества: Использование этой фразы подчеркивает качество и надежность советника, что является важным фактором для покупателей, ищущих эффективные и проверенные торговые решения.
  4. Маркетинговое преимущество: В условиях конкуренции среди множества советников на рынке, наличие такой метки может стать конкурентным преимуществом, выделяя продукт среди остальных.
  5. Упрощение выбора: Для трейдеров, которые хотят сократить время на проверку и тестирование различных советников, "Prop Firm Ready" служит маркером того, что данный советник уже проверен и готов к использованию.

Вывод

Использование фразы "Prop Firm Ready" в маркетинге торговых советников направлено на создание уверенности в качестве и надежности продукта, привлечение трейдеров, стремящихся работать с проп-трейдинговыми фирмами, и выделение продукта среди конкурентов.

Не думаю, что здесь это имеет реальное значение. 
 
Anatoli Kazharski #:

ChatGPT-4o

Спасибо. Просьба поделиться ссылкой, где формировался вопрос/ответ.

 
fxsaber #:

Спасибо. Просьба поделиться ссылкой, где формировался вопрос/ответ.

https://chatgpt.com/


 
Делаю раз в минуту WebRequest в простом GET-режиме.
WebRequest("GET", URL, NULL, NULL, TimeOut, Post, 0, Data, Headers)

Иногда получаю значение, которое равно тому, что было две минуты назад. Т.е. попадает какая-то кешированная версия Web-страницы.


Как избежать этого кеширования?