Вопросы от "чайника" - страница 142

 
Yedelkin:
Не могу сориентироваться, а где в Справочнике сказано, что при биржевом исполнении запрос не должен содержать TP/SL?

В справке я этого не помню. Но насколько мне известно это так. Правильней сказать SL/TP насколько я понимаю на бирже нужно ставить отдельными ордерами (имеющими определенный тип и спецификацию).

В принципе можно посмотреть на биржевых терминалах как точно, Грей боксе или скажем в Quik

PS

Это к примеру може быть связанно с законодательством. насколько мне известно по законодательству США стопы должны быть маркерованны определенным образом (и не как иначе).

За их неправильное исполнение накладывается определенные штрафные санкции. точней сказать не смогу, но те кто торговал на NYSE (или подобных биржах) думаю точно должны знать что и как. 

 

Скажите пожалуйста, как взять значения всех линий iBands.

https://www.mql5.com/ru/articles/31

тут есть что-то полезное, но при компиляции редактор не нашел

"#include <GetIndicatorBuffers.mqh>"

MQL5 для "чайников": Получение значений технических индикаторов в своих экспертах
MQL5 для "чайников": Получение значений технических индикаторов в своих экспертах
  • 2010.03.05
  • Sergey Pavlov
  • www.mql5.com
Для получения в торговом советнике значений встроенного или пользовательского индикатора, необходимо предварительно создать его хендл с помощью соответствующей функции. На примерах показано, как воспользоваться тем или иным техническим индикатором при разработке своих программ. Речь идёт о индикаторах, которые непосредственно встроены в язык MQL5. Статья предназначена для начинающих разработчиков торговых стратегий и предлагает простые и ясные способы работы с индикаторами с использованием приложенной библиотеки функций.
 
lazarev-d-m:

Скажите пожалуйста, как взять значения всех линий iBands.

https://www.mql5.com/ru/articles/31

тут есть что-то полезное, но при компиляции редактор не нашел

"#include <GetIndicatorBuffers.mqh>"

К статье внизу приложен.
 

Подскажите куда класть файл загружаемый советником. Пробовал в MQL5/Files. Тестер даёт ошибку 5004. Индюк сразу находит тот же файл в MQL5/Files. И что такое ошибка 5004? 

Немного подробнее:

Файл с расширением .txt. Запрашивается таким образом

   int filehandle=FileOpen(fname,FILE_READ|FILE_ANSI,"\n");
   if(filehandle!=INVALID_HANDLE) Print("FileOpen: ",FileSize(filehandle)," bytes");
   else Print("Operation FileOpen failed, error ",GetLastError());

 

 

Ошибка такая

2012.05.09 21:14:14 Core 01 2011.01.01 00:00:00   Operation FileOpen failed, error 5004

Файл лежит в папке MQL5/Files. 1000 раз проверил. К тому же индюк его загружает без проблем.

Build 642. 

 
gpwr:

Подскажите куда класть файл загружаемый советником. Пробовал в MQL5/Files. Тестер даёт ошибку 5004. 

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

К файлу, расположенному в общей папке, можно обращаться как из терминала, так и из тестера.

Открыть общую папку можно из MetaEditor - Файл - Открыть общую папку данных. 

 
Yurich:
Каждый тестер имеет свою файловую песочницу, файл с данными нужно размещать именно в песочнице тестера, это не очень удобно, поэтому  лучше положить файл данных в общую папку всех терминалов, доступ к ней осуществляется через флаг FILE_COMMON.

К файлу, расположенному в общей папке, можно обращаться как из терминала, так и из тестера.

Открыть общую папку можно из MetaEditor - Файл - Открыть общую папку данных. 

Спасибо, загрузка через FILE_COMMON прошла успешно. Через песочницу тестера никак не получилось. Ну да ладно. Вообще-то разработчикам нужно было упростить этот процесс и позволить советникам брать файлы данных из той же папки откуда индюки их загружают. А также неплохо бы если можно было указывать путь к файлу в его имени.
 
gpwr:
 Через песочницу тестера никак не получилось.
Давно не проверял работу с файлами в локальной песочнице тестера. Но раньше, чтобы иметь доступ к файлу  из тестера, надо было ставить на файл  атрибут "только чтение", т.к. тестер перед запуском эксперта чистил свою песочницу.
 

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

Подскажите пожалуйста, что делать, чтобы на минутных графиках в нужный час рисовалась вертикальная линия. Мои попытки ни к чему не приводят:

//Вертикальные линии в определённое время

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//+----------------------------------------------+
//|  Параметры отрисовки изображения             |
//+----------------------------------------------+
//---- отрисовка линии индикатора 
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  Blue
#property indicator_width1  1
#property indicator_label1  "Time-line"

#define RESET 0 // Константа для возврата терминалу команды на пересчет индикатора
//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input int                           Hour1=10;                    //Время 1
//+----------------------------------------------+
int  StartBars;
bool GoodTime;
//---- объявление динамических массивов, которые будут
//---- в дальнейшем использованы в качестве индикаторных буферов
double TimeDataBuffer[];          //
//+------------------------------------------------------------------+
//|  класс для работы с датой                                        |
//+------------------------------------------------------------------+
class MyDateClass
  {
private:
   int               m_year;          // год
   int               m_month;         // месяц
   int               m_day;           // день месяца
   int               m_hour;          // час в сутках
   int               m_minute;        // минуты
   int               m_second;        // секунды
public:
   //--- конструктор по умолчанию
                     MyDateClass(void);
  };
//+------------------------------------------------------------------+
//| конструктор по умолчанию                                         |
//+------------------------------------------------------------------+
MyDateClass::MyDateClass(void)
  {
MqlDateTime dt;
datetime DT=TimeCurrent(dt);
TimeToStruct(DT,dt);
m_hour=dt.hour;
m_minute=dt.min;
m_second=dt.sec;
if (m_hour==Hour1 && m_minute==0) GoodTime=true;
DT=StructToTime(dt);
Print(DT); 
  }  
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- инициализация глобальных переменных для сигнальных меток  
   StartBars=7;
//----
   SetIndexBuffer(0,TimeDataBuffer,INDICATOR_DATA);
   ArraySetAsSeries(TimeDataBuffer,true);   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---- проверка количества баров на достаточность для расчета
      if(rates_total<StartBars) return(RESET);  
   
int limit,bar; //

//---- расчеты необходимого количества копируемых данных
//---- и стартового номера limit для цикла пересчета баров
      if(prev_calculated>rates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора
      limit=rates_total-StartBars;         // стартовый номер для расчета всех баров
      else limit=rates_total-prev_calculated; // стартовый номер для расчета новых баров  
//---

//---- основной цикл расчета индикатора
   for(bar=0; bar<limit; bar++)
     {
      TimeDataBuffer[bar]=0.0;
     
      if (GoodTime==true) TimeDataBuffer[bar]=2.0;
     }
//--- return value of prev_calculated for next call
//---
   return(rates_total);
  }

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Вот..
Файлы:
V_line.mq5  3 kb
 
papaklass:

 Вот Вам код вертикальной линии:

 

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