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

 

А можно попроще)))

Это мне где взять?

У индикатора код закрытый, как мне узнать имя этого перечисления?

И какой тип переменной мне нужен?

Просто я умею через iCustom  индикаторы объединять, а дальше не судьба.)))

Если не сложно можно попроще)))

ENUM_BASE_CORNER попробовал, все равно некажет.
 
Сергей:

А можно попроще)))

Это мне где взять?

У индикатора код закрытый, как мне узнать имя этого перечисления?

И какой тип переменной мне нужен?

Просто я умею через iCustom  индикаторы объединять, а дальше не судьба.)))

Если не сложно можно попроще)))

ENUM_BASE_CORNER попробовал, все равно некажет.

Вот пример.

Первый вариант это использование штатного перечисления ENUM_BASE_CORNER

Второй вариант — использование пользовательского перечисления enum

Затем в iCustom там где это надо, поставить переменную base или my_base в зависимости от того, какой вариант выберете.

Файлы:
100.mq4  5 kb
 
Сергей:

Здравствуйте.

Подскажите,а то голову сломал.

Через iCustom прописываю индикатор и столкнулся с проблемой, в индикаторе есть текстовое меню с выбором, открывается и там несколько пунктов прописано, ну я думаю понятно)

Так вот, как мне его прописать у себя в меню?

extern int HIT = 0; не катит, перестает отображаться, оставляю без параметров отображается.

может через ENUM , там какой выбрать, или может что еще?

Заранее спасибо.

Вы все параметры в iCustom(,,,,,,,) прописали в правильной последовательности?

 

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

Делаю для этого следующее. Открыл каталог данных, перешёл в папку тестер, в этой папке в папку файлс и там создал файл с именем «ZNA4_ADX.csv». далее в подключаемом файле библиотеки с расширением .mqh начал ваять функцию. Ниже закомментированный код функции.

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

Хочу чтобы данные записались примерно как на скрине ниже.

ПРИМЕР КАК ХОЧУ ЗАПИСАТЬ ДАННЫЕ


То есть красный цвет текста это шапка которую я напишу вручную. А строка 2 это уже то что мне надо чтобы записалось с помощью функции. То есть 1 номер ордера при тесте. И пошли три значения adx. Далее при открытии второго ордера в тесте нужна следующая строка где номер ордера станет 2 и значения adx запишутся для трёх свечей перед открытием этого ордера и так далее сколько ордеров в тесте выйдет…

Саму функцию в коде советника я вызываю как показано в куске кода ниже.


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



Тест идёт без ошибок- но в файле я получил вот такой результат (СКРИН НИЖЕ).

ЧТО ПОЛУЧИЛ ПРИ ЗАПИСИ В ФАЙЛ


Получилась одна строка с первым ордером и тремя значениями, но в тесте было 189 открытых ордеров. Что я и  где  забыл увеличить переменную для подсчёта количества ордеров и как сделать так чтобы последующие после первого ордера данные записались во 2,3-189 строках?  Большая просьба не надо меня отправлять на код бейс и прочие весёлые места- мне сложно читать текст, а чужой код практически не возможно. Поэтому подскажите понятным образом что надо добавить и куда чтобы я смог получить данные в нужном мне виде? P/S если не сложно выделите цветом момент с добавлением …

 

 
DanilaMactep:

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

Делаю для этого следующее. Открыл каталог данных, перешёл в папку тестер, в этой папке в папку файлс и там создал файл с именем «ZNA4_ADX.csv». далее в подключаемом файле библиотеки с расширением .mqh начал ваять функцию. Ниже закомментированный код функции.

Хочу чтобы данные записались примерно как на скрине ниже.


То есть красный цвет текста это шапка которую я напишу вручную. А строка 2 это уже то что мне надо чтобы записалось с помощью функции. То есть 1 номер ордера при тесте. И пошли три значения adx. Далее при открытии второго ордера в тесте нужна следующая строка где номер ордера станет 2 и значения adx запишутся для трёх свечей перед открытием этого ордера и так далее сколько ордеров в тесте выйдет…

Саму функцию в коде советника я вызываю как показано в куске кода ниже.




Тест идёт без ошибок- но в файле я получил вот такой результат (СКРИН НИЖЕ).


Получилась одна строка с первым ордером и тремя значениями, но в тесте было 189 открытых ордеров. Что я и  где  забыл увеличить переменную для подсчёта количества ордеров и как сделать так чтобы последующие после первого ордера данные записались во 2,3-189 строках?  Большая просьба не надо меня отправлять на код бейс и прочие весёлые места- мне сложно читать текст, а чужой код практически не возможно. Поэтому подскажите понятным образом что надо добавить и куда чтобы я смог получить данные в нужном мне виде? P/S если не сложно выделите цветом момент с добавлением …

 

Если файл открывается только с одним флагом FILE_WRITE, то всё что было в файле удаляется. Чтобы сохранить в файле имеющиеся данные надо открывать файл для чтения и записи.

Затем не забывайте перемещать указатель в конец файла.

 
Alexey Viktorov:

Если файл открывается только с одним флагом FILE_WRITE, то всё что было в файле удаляется. Чтобы сохранить в файле имеющиеся данные надо открывать файл для чтения и записи.

Затем не забывайте перемещать указатель в конец файла.

Алексей, большое спасибо что подсказали в какую сторону "копать" ошибку- Поока получилось сделать построчную запись- осталось всё это дело причесать в употребимый для анализа вид)))
 

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

 
Почему это не работает с адресами функций?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
Здравствуйте, подскажите это обьявление двумерного массива?
      ArrayInitialize(ZigZagBuffer,0.0);
За ранее спасибо!
 
Дмитрий:
Здравствуйте, подскажите это обьявление двумерного массива? За ранее спасибо!

Нет, это инициализация уже объявленного.

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