Скажите, можно ли каким-либо образом программно задать список оптимизируемых параметров?
Дело в том, что у меня параметров очень много. Тысячи. Я их выношу в отдельную программу. EA подгружает их во время инициализации через внеший файл. Вот моя задача прооптимизировать сейчас эти параметры.
То есть например список оптимизируемых параметров со значениями и диапазонами в файле. Оттуда читать, туда же и писать результат.
Пишу функцию для закрытия графиков на которых нет советников и скриптов. Получаю имя эксперта и скрипта на графике с помощью функции ChartGetString. Если и там и там пусто закрываю. И вот как раз в строке с закрытием графика по условию проблема. Условие не выполняется никогда. Вот код.
Добрый день! Я сделал .mqh для обработки данных и хранение в ресурсе. Всё работает, но есть нюанс, если скомпилировать индикатор, то .mqh сбрасывается и заново делает вес процесс для хранение. Цель - пока есть данные в ресурсеони не сбрасывается. Где ошибка, как исправить?
// Сохранение данных#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166#include <GlobalVariables.mqh>
const RESOURCEDATA<MqlTick>m_Resource("::"+__FILE__); // Ресурс для передали данных (тики)//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CMyTicks
{
protected:
public:
//+------------------------------------------------------------------+//| Constructor. |//+------------------------------------------------------------------+ void CMyTicks()
{
_GlobalVariableSet("ResourceName",m_Resource.GetFullName()); // Записали в глобальную переменную полное имя ресурса (read-only)
}
//+------------------------------------------------------------------+//| Destructor. |//+------------------------------------------------------------------+ void ~CMyTicks()
{
//_GlobalVariableDel("ResourceName");
}
//+------------------------------------------------------------------+ void CollectTicks()
{
MqlTick m_Ticks[];
CopyTicks(_Symbol,m_Ticks,COPY_TICKS_ALL,0,5); // Сформировали данные
m_Resource=m_Ticks; // Записали данные
}
};
//+------------------------------------------------------------------+
// Получение данных#property indicator_chart_window#property indicator_plots0#include <Test_Keep_Info_13.mqh>
CMyTicks Test;
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166#include <GlobalVariables.mqh>
staticconst RESOURCEDATA<MqlTick>Resource(_GlobalVariableGet<string>("ResourceName")); // Создали ресурс на основе переданного в глобальной переменной полного имени MqlTick Ticks[];
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,constint prev_calculated,constint,constdouble &[])
{
if(prev_calculated==0)
{
Resource.Get(Ticks); // Считали данные из ресурса.ArrayPrint(Ticks); // Распечатали полученные данныеif(ArraySize(Ticks)<1)
{
Test.CollectTicks();
Print(" SAVE TICKS ");
}
Resource.Get(Ticks); // Считали данные из ресурса.ArrayPrint(Ticks); // Распечатали полученные данные
}
return(rates_total);
}
//+------------------------------------------------------------------+
Подскажите, как примерно будет выглядеть следующая конструкция:
1) Сгенерировался новый тик - выполнилось условие, например, на этом тике будет отрисовываться указание паттерна и будет подан алерт
2) Нужно после выполнения условия выше остановить выполнения множества повторений одного и того же действия вышеописанного дествия до периода времени, равного:
Подскажите, как примерно будет выглядеть следующая конструкция:
1) Сгенерировался новый тик - выполнилось условие, например, на этом тике будет отрисовываться указание паттерна и будет подан алерт
2) Нужно после выполнения условия выше остановить выполнения множества повторений одного и того же действия вышеописанного дествия до периода времени, равного:
3) Как только бар сменяется на следующий, вновь возобновить работу условия до следующего временного периода, описанного выше
Написать об этом автору на странице обсуждения его библиотеки:
Есть необходимость использовать числовые значения в качестве элементов перечисления.
enum ENUM_HOURS { 0, 1, .., 23 };Так нельзя. Ошибка при компилировании identifier expected. Можно как-то обойти (оставив исключительно числовые значения)?
Есть необходимость использовать числовые значения в качестве элементов перечисления.
Так нельзя. Ошибка при компилировании identifier expected. Можно как-то обойти (оставив исключительно числовые значения)?
Можете дать силку на документацию что означает эти символы <> ?
Скажите, можно ли каким-либо образом программно задать список оптимизируемых параметров?
Дело в том, что у меня параметров очень много. Тысячи. Я их выношу в отдельную программу. EA подгружает их во время инициализации через внеший файл. Вот моя задача прооптимизировать сейчас эти параметры.
То есть например список оптимизируемых параметров со значениями и диапазонами в файле. Оттуда читать, туда же и писать результат.
Пишу функцию для закрытия графиков на которых нет советников и скриптов. Получаю имя эксперта и скрипта на графике с помощью функции ChartGetString. Если и там и там пусто закрываю. И вот как раз в строке с закрытием графика по условию проблема. Условие не выполняется никогда. Вот код.
А вот, что выводит Print
Я понимаю, что можно условие поменять на такое
Ну, а как всё таки правильно сравнить переменную string c пустой строкой ?
Добрый день! Я сделал .mqh для обработки данных и хранение в ресурсе. Всё работает, но есть нюанс, если скомпилировать индикатор, то .mqh сбрасывается и заново делает вес процесс для хранение. Цель - пока есть данные в ресурсе они не сбрасывается. Где ошибка, как исправить?
как всё таки правильно сравнить переменную string c пустой строкой ?
Есть две штатные пустые строки - "" и NULL. И могут быть еще кастомные пустые строки.
Подскажите, как примерно будет выглядеть следующая конструкция:
1) Сгенерировался новый тик - выполнилось условие, например, на этом тике будет отрисовываться указание паттерна и будет подан алерт
2) Нужно после выполнения условия выше остановить выполнения множества повторений одного и того же действия вышеописанного дествия до периода времени, равного:
3) Как только бар сменяется на следующий, вновь возобновить работу условия до следующего временного периода, описанного выше
Реальная ли такая конструкция?
Подскажите, как примерно будет выглядеть следующая конструкция:
1) Сгенерировался новый тик - выполнилось условие, например, на этом тике будет отрисовываться указание паттерна и будет подан алерт
2) Нужно после выполнения условия выше остановить выполнения множества повторений одного и того же действия вышеописанного дествия до периода времени, равного:
3) Как только бар сменяется на следующий, вновь возобновить работу условия до следующего временного периода, описанного выше
Реальная ли такая конструкция?
Вы уже почти всю логику сами написали..