Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 932

 

Пишу советник. Его работу тестирую не в тестере, а сразу в реальной торговле.

Если возможность при старте эксперта очищать log файл (вкладка " Эксперты " )  ? 

А то сейчас удалить этот файл получается, только если закрыть терминал. Подошел бы и способ удаления файла с открытым терминалом.

 
pivomoe:

Если возможность при старте эксперта очищать log файл (вкладка " Эксперты " )  ? 

Ето возможно в ручную : на вкладке, (правой клавиш мыши) -> "Clear"

 
Ivan Ivanov:

Ето возможно в ручную : на вкладке, (правой клавиш мыши) -> "Clear"

Так пропадет только текст на самой вкладке эксперты. Файл останется на месте. Мне нужно именно файл удалить или очистить. 

 

Я хочу научить машину находить точный флэт. Условия его нахождения такие: значит имеется на графике бар


для того чтобы сформировался флэт, который я хочу находить нужно чтобы напротив 1го бара между его высотой HL сформировалось 3 бара (т.е. всего 4 бара которые расположены в одном диапазоне).Для сравнения баров и нахождения уровней записал такое условие

        if(
        Bar_Op[qt+2]<=Bar_Hi[qt+3]&&Bar_Cl[qt+2]>=Bar_Lo[qt+3]&& 
        Bar_Op[qt+2]>=Bar_Lo[qt+3]&&Bar_Cl[qt+2]<=Bar_Hi[qt+3]&&
        Bar_Op[qt+1]<=Bar_Hi[qt+3]&&Bar_Cl[qt+1]>=Bar_Lo[qt+3]&&
        Bar_Op[qt+1]>=Bar_Lo[qt+3]&&Bar_Cl[qt+1]<=Bar_Hi[qt+3]&&
        Bar_Op[qt+0]<=Bar_Hi[qt+3]&&Bar_Cl[qt+0]>=Bar_Lo[qt+3]&&
        Bar_Op[qt+0]>=Bar_Lo[qt+3]&&Bar_Cl[qt+0]<=Bar_Hi[qt+3])         
        {

Как я понял сравнение происходит но у меня возникла проблема с построением уровней если использовать такую запись 

double Price_Ur = Bar_Cl[qt+2];

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


Так вот у меня вопрос как вернуть самую низкую цену из условия или как её найти возможно моё условие не возвращает цены а только сопоставляет вершины свечей, которая проходит через OP и CL? Я использовал такую запись

int iLwCL=iLowest(_Symbol,PERIOD_D1,MODE_CLOSE,3,qt+1); int iLwOP=iLowest(_Symbol,PERIOD_D1,MODE_OPEN,3,qt+1);
double Price_Ur = Bar_Cl[iLwCL]<Bar_Op[iLwOP] ? Bar_Cl[iLwCL]:Bar_Op[iLwOP];

Функция iLowest определяет самую низкую вершину относительно 0го бара но в моём случае оно не находит нижнюю цену, как мне вернуть нижнюю цену из условия чтобы построить уровень как в случае с double Price_Ur = Bar_Cl[qt+2];?

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

Может это поможет https://www.mql5.com/ru/code/818. Сам я этим никогда не пользовался.

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

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

Библиотеки: TradeTransactions

fxsaber, 2018.09.20 16:23

// Пример хранения/обмена данными через Ресурсы внутри Терминала
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{  
  const RESOURCEDATA<int> ResourceINT("::int"); // Ресурс для обмена int-ами. const - как доказательство, что ничего не пишется в объект класса
  
  int ArrayINT[] = {1, 2, 3};
  int Num = 5;
  
  ResourceINT = ArrayINT;  // Ресурс хранит массив.
  ResourceINT += Num;      // Добавили в ресурс еще значение.
  ResourceINT += ArrayINT; // Добавили массив.
  
  int ArrayINT2[];  
  ResourceINT.Get(ArrayINT2); // Считали данные из ресурса.
  ArrayPrint(ArrayINT2);      // Вывели: 1 2 3 5 1 2 3

  ResourceINT.Free();                // Удалили данные из ресурса
  Print(ResourceINT.Get(ArrayINT2)); // Убедились, что данных нет: 0

  const RESOURCEDATA<MqlTick> ResourceTicks("::Ticks"); // Ресурс для обмена тиками. const - как доказательство, что ничего не пишется в объект класса
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    for (int i = 0; i < 3; i++)
      ResourceTicks += Tick; // Добавили в ресурс тики

  MqlTick Ticks[];
  ResourceTicks.Get(Ticks); // Считали данные из ресурса.
  ArrayPrint(Ticks);        // Вывели.
  
  // Это полное имя ресурса для обращения из другой программы
  const string NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::Ticks";  
  Print(NameOut); // Вывели полное имя ресурса.
  
  const RESOURCEDATA<MqlTick> Resource(NameOut); // Ресурс для доступа к данным (read-only) из другой программы
  
  MqlTick TicksOut[];
  Resource.Get(TicksOut); // Считали данные из ресурса.
  ArrayPrint(TicksOut);   // Вывели.
  
  Resource.Free();   // Не получится повлиять на данные read-only-ресурса.
  Print(_LastError); // ERR_INVALID_PARAMETER - Ошибочный параметр при вызове системной функции.
}
 
pivomoe, @fxsabe, спасибо. Буду разбираться.
 

Никак не пойму как в этом советнике

https://www.mql5.com/ru/code/20254

Запретить рисование текущего (ещё не сформировавшегося)бара. Может кто подсказать?

Renko 2.0 Offline
Renko 2.0 Offline
  • www.mql5.com
Неторгующий советник Renko 2.0 Offline генерирует информацию по пользовательскому символу на минутном графике. Полный график Ренко с фитилями. Доступен и оффлайн! Ссылается на библиотеку Symbol для MetaTrader 5, написанную пользователем fxsaber. Настраивается с...
 
EgorKim:

Никак не пойму как в этом советнике

https://www.mql5.com/ru/code/20254

Запретить рисование текущего (ещё не сформировавшегося)бара. Может кто подсказать?

Так в теме обсуждения советника () и спрашивать нужно.

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