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

 
ivandurak:
Вплотную подошел к написанию тестера внутри советника , ну и как теска нахожусь перед дилемой .Если за основу брать 4-ку то получаем простой и весьма эффективный инструмент с точки зрения анализа ТС по результатам торговли . Если 5-ку то удобство в переносимости кода . Пока мое имхо склоняется к первому варианту, как говорится шашечки или ехать  .

Здесь https://www.mql5.com/ru/forum/4956/page46#comment_117097  и  https://www.mql5.com/ru/forum/4956/page47#comment_118646, можно посмотреть для начала.

Сначала шашечки, потом ехать. имхо. 

 
Bene_Nota:
И по моим наблюдениям история не повторяется, так что уже на первом пункте не соглашусь

Аргументируйте.

Никто не говорит о том что текущее движение с точностью до пипса повторит то, что было когда то . Если возмем несколько признаков флета , несколько признаков тренда , загоним это все в нейросетку то получим ограниченное кол-во кластеров ( это не мои умозаключения где то видел заметку сейчас не найду ).То что под любой кусок истории читай кластер можно построить адекватную ТС в доказательстве не нуждается .Таким образом остается своевременно распознать в каком кластере находимся , чтобы успеть стащить пару крошек .Сделать статистику , по времени нахождения , прикинуть возможную траекторию движения характеристик рынка для упреждения выбора ТС .........

 То her.human 

Спасибо гляну . Дело в том что если принимать философию ведения ордеров  и позиций для 5-ки . То скажем выбор лучшего из  мультитайфреймовых экспертов осложнено позицией нетто , без дополнительных ухищрений нельзя сказать какая ТС на часовиках или минутках предпочтительнее, а елси у вас еще и мультиТСная стратегия даже не знаю как к такой задаче подступить кроме как создания множества обьектов + управление ими  . На 4-ке с точки зрения удобства программирования  все намного проще. Достатоно создать массив структур описывающих ордер, каждый из которых живет своей жизнью, все данные по открытию ,закрытию ,прибылям , убыткам все сохраняется . Я такое уже делал  получилось вполе приемлемое решение .

 
ivandurak:

 То her.human 

Спасибо гляну .

1) Дело в том что если принимать философию ведения ордеров  и позиций для 5-ки . То скажем выбор лучшего из  мультитайфреймовых экспертов осложнено позицией нетто , без дополнительных ухищрений нельзя сказать какая ТС на часовиках или минутках предпочтительнее, а елси у вас еще и мультиТСная стратегия даже не знаю как к такой задаче подступить кроме как создания множества обьектов + управление ими  .

2) На 4-ке с точки зрения удобства программирования  все намного проще. Достатоно создать массив структур описывающих ордер, каждый из которых живет своей жизнью, все данные по открытию ,закрытию ,прибылям , убыткам все сохраняется . Я такое уже делал  получилось вполе приемлемое решение .

1) В том то и дело, если сделать виртуальный журнал (тестер) ведения и учета позиций в МТ5, все проблемы с одновременным тестированием нескольких стратегий и локированием (связанным с применением нескольких стратегий), исчезают. Так же, можно вести виртуальную торговлю и на основе анализа виртуальной торговли, делать выводы применительно к реалу, и выводить на рынок совокупную позицию.

   Я такое делал в МТ5, но не в виде отдельной библиотеки (класса), никаких проблем не вижу. 

2) В МТ4 нету массив структур. В МТ4 такое тоже можно сделать без проблем, только вместо массива структур использовать двумерный массив. 

   Может что то перепутано МТ4 - МТ5? 

 
her.human:

1) В том то и дело, если сделать виртуальный журнал (тестер) ведения и учета позиций в МТ5, все проблемы с одновременным тестированием нескольких стратегий и локированием (связанным с применением нескольких стратегий), исчезают. Так же, можно вести виртуальную торговлю и на основе анализа виртуальной торговли, делать выводы применительно к реалу, и выводить на рынок совокупную позицию.

   Я такое делал в МТ5, но не в виде отдельной библиотеки (класса), никаких проблем не вижу. 

2) В МТ4 нету массив структур. В МТ4 такое тоже можно сделать без проблем, только вместо массива структур использовать двумерный массив. 

   Может что то перепутано МТ4 - МТ5? 

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

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

Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Торговые функции - Документация по MQL5
 
ivandurak:

Говорим об одном и том же разными словами .

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

2) Тут другая проблема нарисовалась , как синхронизировать торговые инструменты если делать мультивалютный тестер. Пойду по статьям полажу. 

1) Согласен. Я о том же. 

2) Для тестера синхронизация не нужна. Подача в тестер котировок - это уже другая тема. 

Какие проблемы с синхронизацией? Может подскажу. 

 
her.human:

1) Согласен. Я о том же. 

2) Для тестера синхронизация не нужна. Подача в тестер котировок - это уже другая тема. 

Какие проблемы с синхронизацией? Может подскажу. 

Пока сам не до конца задачу сформулировал .

 Для мультивалютного тестирования необходимо чтобы все бары на выбранных инструментах были синхронизированы на выбранном участке оптимизации .Иначе , если есть пропуск ,то может получиться заглядывание в будущее( тестерный грааль на 4-ке сигналы по одному инструменту открытие позиций по другому).

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

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

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

 
ivandurak:

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

Здесь есть решение вопросов синхронизации для реала. Возможно, навеет какие-то идеи синхронизации для вашего тестера.
 

Пока лучшее что удалось придумать добавляем метод .

bool  HoleHistory(int Bar,string Simb) ;//метод возвращает признак дыры в истории если выбранный бар выбранного символа
      //моложе одноименного бара хотя бы одного из выбранных символов возвращaем фальсе расчеты на этом баре не производятся  
Правда остается привязка к фин иструменту на котором ведется тестирование .Имхо это меньшее зло . 
 
ivandurak:

Пока сам не до конца задачу сформулировал .

 Для мультивалютного тестирования необходимо чтобы все бары на выбранных инструментах были синхронизированы на выбранном участке оптимизации .Иначе , если есть пропуск ,то может получиться заглядывание в будущее( тестерный грааль на 4-ке сигналы по одному инструменту открытие позиций по другому).

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

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

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

Если правильно понял проблему.

//=============================================================================================
// Подготавливаем массивы цен с синхронизацией по времени 
void PrepareQuotes()
{
 CopyTime("EURUSD",0,0,Количество_Баров,Time);
 CopyOpen("EURUSD",0,0,Количество_Баров,OpenEU);
 for(int i=0; i<Количество_Баров; i++)
    {
     CopyOpen("EURJPY",0,Time[i],1,OpenEJ);
     CopyOpen("EURGBP",0,Time[i],1,OpenEG);
    }
}
//=============================================================================================
// Получаем значение индикатора по времени    
CopyBuffer(handle,0,Time[i],1,Buffer);

Вычислять индикатор надо не по номеру бара, а по времени. Или рассчитывать самостоятельно, библиотек в базе хватает.

 
Имхо если перед баром по какому нибудь инструменту нашелся пропуск лучше вообще ничего не делать . Пропуск идентифицировать просто , достаточно сравнить время открытия бара с временем открытия бара на других  инструментах .
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
Причина обращения: