Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника"
Очень полезная статья для меня. Все намного проще если использовать библиотеки !
Просьба к разработчикам: напишите класс для работы с High[i] , Low[i]. Open[i], Close [i]. Я думаю всем будет полезен этот класс! Для себя я эту проблему решил, но не уверен что правильно, т.к. тестирование занимает много времени...
Посмотрите раздел Группа классов таймсерий
#include <Indicators\Series.mqh> double High[]; CiHigh z;
почему такой код выдает ошибку
'1.mq5' 1.mq5 1 1
'Series.mqh' Series.mqh 1 1
'ArrayObj.mqh' ArrayObj.mqh 1 1
'Array.mqh' Array.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'ArrayDouble.mqh' ArrayDouble.mqh 1 1
'CiHigh' - declaration without type 1.mq5 12 2
1 error(s), 0 warning(s) 2 1
если не трудно напишете как получить
Print High[2], например.
почему такой код выдает ошибку
если не трудно напишете как получить
Print High[2], например.
в документации опечатка. Этот класс в находится в файле TimeSeries.mqh.
Пример использования (скрипт выводит три последних High текущего графика):
#include <Indicators\TimeSeries.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double High[]; CiHigh z; int count=3; if(z.Create(_Symbol,_Period)==true) { if(z.GetData(0,count,High)==count) { for(int i=0; i<count; i++) Print(i,"=",High[i]); } else Print("Не удалось получить ",count," данных таймсерии."); } else Print("Ошибка создания таймсерии."); } //+------------------------------------------------------------------+
в документации опечатка. Этот класс в находится в файле TimeSeries.mqh.
Пример использования (скрипт выводит три последних High текущего графика):
прекрасно понимаю, что каждый программирует под себя и свои потребности, но мне в корне не нравятся Группа классов таймсерий, т.к. они по сути все состоят из одного метода и описательной части больше чем функционала, и обычно необходимо иметь сразу все таймсерии для конкретного инструмента, себе я сделал один класс в котором есть все таймсерии по необходимому инструменту, в методах производится подкачка истории, примерно так:
struct str_bars{ datetime time[]; // Массив-таймсерия, содержащий время открытия каждого бара текущего графика double open[]; // Массив-таймсерия, содержащий цены открытия каждого бара текущего графика. double close[]; // Массив-таймсерия, содержащий цены закрытия каждого бара текущего графика. double high[]; // Массив-таймсерия, содержащий максимальные цены каждого бара текущего графика. double low[]; // Массив-таймсерия, содержащий минимальные цены каждого бара текущего графика. }; struct str_info{ double point; // Размер пункта текущего инструмента в валюте котировки int spread; // Текущий спред }; //____________________________________________________________________ class currency { public: //---- данные MqlTick TICK; // тиковые данные str_bars BAR; // данные таймсерий str_info INFO; // информация об инструменте int error; //---- методы int create(string sym,ENUM_TIMEFRAMES period, int numbars); int refresh(void); private: string symbol; ENUM_TIMEFRAMES per; int num; datetime lastbar_time; int tmpint1,tmpint2; int ch_load(void); }; //____________________________________________________________________
работаю со своим классом только в части уже готовых данных, ну и конечно класс самостоятельно получает данные путем вызова метода refresh()
в статье неточность
double lot_price = myaccount.MarginCheck(_Symbol,otype,Lot); //цена лота/кол-во требуемой маржи
должно быть
double lot_price=myaccount.MarginCheck(_Symbol,otype,Lot,price); //--- цена лота/кол-во требуемой маржи
Отлчная статья. Большое спасибо автору. Еще бы написать проверку уровня Stop_Level перед размещением ордера, проверку значения спреда. Дело в том, что если спред плавающий, то при больших значениях можно не входить в рынок, т.к. это не выгодго. Это поможет советнику не торговать во время новостей. Еше провеку на отклонение хочется - рассуждения аналогичные. И еще есть вопрос по библиотеке: что такое функция (что за процесс она обозначает и описывает)?
FreezeLevel
Получает дистанцию заморозки торговых операций в пунктах.
int FreezeLevel() const |
простым языком - объясните, пожалуйста, кто знает.
И еще один вопрос. Мы можем узнать ограничения, например, Stop_Level на текущий момент(пусть 10 пунктов). Выставляем отложенный ордер со значением SL=10 пунктов. Через, к примеру час цена достигает указанной в ордере цены, но Stop_Level на этот момент равен, например 15п. Что будет - сработает отложенный ордер или будет отклонен? Кроме того, когда цена достигает указанной в ордере цены, а спред изменился - значит ли это, что вход или выход возможен по худшей цене, по отношению к той предполагаемой, что была на момент открытия ордера, или ордер вообще не сработает?
подскажите что я неправильно делаю ? почему Bid не печатается ?
Вот лог работы
2011.01.31 20:20:18 00 (EURUSD,M1) EURUSD 0
вот код
#include <Trade\SymbolInfo.mqh> //--- Класс CSymbolInfo CSymbolInfo my_symbol; //--- Объект класса CSymbolInfo //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { my_symbol.Name(_Symbol); my_symbol.Refresh(); Print(_Symbol," ",my_symbol.Bid()); } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Как использовать торговые классы Стандартной библиотеки при написании советника:
Автор: Samuel