Авторское - страница 4

 
С синхронизацией с грехом пополам разобрался . Подскажите плз , есть ли какой нибудь способ заморозить терминал ( чтобы он не принимал котировки ) на время работы скрипта или эксперта .
 
ivandurak:
С синхронизацией с грехом пополам разобрался . Подскажите плз , есть ли какой нибудь способ заморозить терминал ( чтобы он не принимал котировки ) на время работы скрипта или эксперта .

Это нонсенс.

Зачем это надо?

 
her.human:

Это нонсенс.

Зачем это надо?

Мультивалютный тестер который можно запихнуть внутрь советника индикатора или скрипта практически дописал, надеюсь. Была основная трудность с синхронизацией разных торговых инструментов при наличии дыр в истории . Здесь под дырой понимается не только пропущенный бар .Например анализируем евро и  акции газпрома , понятно что время торгов разное поэтому в газпроме относительно евро буде много дыр также включая выходные и празндики . Из положения вышел - создается образцовый массив времени открытия на выбранном таймфрейме без пропусков на выбранном участке истории . Далее время открытия образцового массива сравнивается с временем открытия торгового инструмента , при совпадении времен запоминается номер бара торгового инструмента , и этот номер передается в ТС .ТС на этом номере расчитывает значения индикаторов и соотв выставляет приказы БАЙ, СЕЛЛ, ТРАЛЛ и тд . Теперь имеем несколько торговых инструментов и за время их пересчета на последнем инструменте может начаться следующий бар , в результате тот бар который вернули для расчетов оказывается смещенным со всеми вытекающими . Выход- можно постоянно корректировать номер бара , но это приличное усложнение кода . Можно как вы предложили возвращать в ТС не номер бара , а время открытия на котором ведутся расчеты , но тогда это усложнение для пользователя ( пока я склоняюсь к этому варианту ). Вот и подумал , ведь встроенный тестер не даст новое значение цены пока не отработает Deinit , может есть способ тормозить терминал пока не отработает прога .
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
ivandurak:
возвращать в ТС не номер бара , а время открытия на котором ведутся расчеты , но тогда это усложнение для пользователя
CopyTime("EURUSD",0,Время,Количество_Баров,Time);
CopyOpen("EURUSD",0,Время,Количество_Баров,OpenEU);
Вроде сложностей нет.
 

Ну вот первая ласточка по мультивалютнику . Сразу предупрежу , это даже не релиз , код не оптимизирован и до конца не отлажен в нем  обязательно должны быть ошибки . Если не трудно гляньте и выскажете пожелания , плеваться пока рано.

Тестер предназначен для мультивалютного тестирования  выбранного куска истории . Все торговые функции взяты из 4-ки . Подробная инструкция после доделок .

Забыл добавить должны быть открыты все интересующие графики на однинаковых таймфреймах 

Файлы:
Tester.mqh  61 kb
 

Первый релиз

Доброго дня вашему вниманию представлен класс для написания мультивалютного тестера внутри скриптов, индикаторов или советников .Тестирование происходит по ценам открытия .

Методы класса

void  Initialization() ;// в этом методе происходит обнуление переменных метод должен стоять в самом начале с него начинается работа .

void  AddSymbol(string Symb) ;//  метод добавления тестируемого символа в тестер символ должен быть загружен и терминале выведен график на тестируемом периоде .

bool  SetBeginEnd( int Begined, int Ended);// устанавливает начало и конец тестируемой истории . Ввиду принятого стандарта индексация начинается с конца . поэтому начальный бар тестируемой истории больше конечного .

void Visualisation(true); //разрешение визуализации сделок .По умолчанию запрещено

void  Printing(true) ;// вывод результатов сделки в журнал по умолчанию запрещено .

bool  Start(datetime &IndexInstrum[]) в этом методе проверятся окончание выбранного тестируемого периода , а также возвращается массив времени начала бара тестируемых инструментов . Это необходимо для синхронизации тестирования разных инструментов при условии наличия пропусков .

int GetBarsNambe(string GSimb,datetime TimeOpen);// возвращает номер бара по выбранному символу и времени открытия бара.

void Vedenie_v() основной метод где производится проверка всех установленных ордеров на предмет срабатывания , закрытия по стопу или профиту .

Тестирование идет по образцу Mql4  то есть каждый ордер живет своей жизнью , поэтому можно локировать и открывать встречные ордера .

Все методы торговых функций взяты также из Mql4 . Это сделано для легкой адаптации советников написанных на этом языке .

Внимание метод  OrderClose_v закрывает выбранную позицию полностью .

OrderCloseBy  отсутствует .

double OrderProfit_v( ) рассчитывает прибыль без учета плеча , плечи на разных тестируемых инструментов могут быть разными .

Остальное все без изменений см документацию.

Порядок применения

Вначале идет инициализация . Затем выбор тестируемой истории . Затем добавление тестируемых инструментов . Разрешение на визуализацию при необходимости . Разрешение на вывод отчета при необходимости .

Само тестирование происходит внутри цикла  Do While

Первым идет обязательно метод

aaa=Test.Start(timeopen) ; возвращает признак окончания тестирования и массив времен открытия бара для тестируемых инструментов . Размерность timeopen должна совпадать с кол-вом тестируемых инструментов .Если к примеру timeopen[0] <0 то это признак пропуска в истории  см пример .

Далее идет сама торговая система их кол-во не ограничено . Для удобства пользования по времени открытия возвращаем номер бара это обеспечивает метод  nambebars=Test.GetBarsNambe(Symbol(),timeopen[0]) ; где соотв символ торгового инструмента и время открытия бара . По этому номеру можно рассчитать значения индикаторов и установить торговый сигнал согласно логике ТС .

В самом конце обязательно должен идти метод Vedenie_v.

После окончания тестирования ( выхода из цикла )  доступна вся торговая история по всем ордерам . См описание и форум к Mql4

Также необходим файл HeadTester.mqh для полного совмещения формата торговых функций Mql4 .

Удачи и процветания .

 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
Файлы:
Tester.mqh  69 kb
 
ivandurak:

Первый релиз

...

Удачи и процветания .

 

Спасибо. Может быть статью напишите? Так скажем, увековечите. )))
 

Господа ПЛЗ. Где то очень интенсивно притормаживаю. Вопрос касаемся SOM. Если можно на конкретном примере .

Предположим есть карта состоящая из 50Х60 нейронов (прямоугольные ячейки). Берем случайно обучающий вектор пусть его размерность равна 5 Х1={х1,х2,х3,х4,х5}.Общая длина обучающей выборки предположим 5000 векторов. Предположим наиболее близкий к входному вектору нейрон имеет индекс 25,30  я его нашел , благо детеныш в школе уже геометрию проходит. А дальше  все моя нейросетка больше не  оптимизируется . Собственно далее куча вопросов .

1 Как вычислить индексы нейронов подлежащие  обучению на 1 шаге.

2 Как вычислить индексы нейронов подлежащие обучению на 2 шаге.

3 Сколько всего шагов обучения должно быть  для входного вектора Х1.

4 если тормозну с правилом обучения Кохонена спрошу еще.

ПС Статью читал, доп литературу читал, коды смотрел , вывод требуется пендель. 

 

Ну вроде с окрестностью нейрона победителя внутри которой идет обучение как разобрался . Теперь следующий вопрос 

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

 

Необходим алгоритм раскраски карты Кохонена. Есть большое желание не рисовать все карты , а обойтись одной , соответственно каждому кластеру надо назначить свой цвет . Как это сделать ума не приложу .На рисунке представлена карта которая получилась у мну . По вей видно что есть разделение по признакам .Принцип раскраски, вектор большей длины красится в наиболее светлый цвет . Хотя это не правильно вектора Х1=(1,1) и Х2=(-1,-1). имеют одинаковую длину но принадлежат к разным областям .

 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
Причина обращения: