(Модератор, перенеси в алго плз)
Всем привет,
Допустим, есть система(и не одна, но пока упростим), изначально писавшаяся инструментов обладающих определенными свойствами(трендовость или контртрендовость, например). Тестирование, без глубоких оптимизаций итд, дало хорошие результаты. При этом, тестирование на некоторых других инструментах, очевидно(на глазок :) ) не обладающих этими свойствами, достаточно ожидаемо, дает в лучшем случае околонулевые результаты.
Результаты достаточно постоянны 10-15 лет(таймфрейм не минутки :), но сделок минимум десятки, по каждому инструменту. Часто сотни), так что логически кажется, что изменение свойств этих инструментов на дистанции а) не ожидается б) если и ожидается, то не всех же сразу :)
На первый взгляд кажется, что торговать слишком большую корзину инструментов — это просто раздавать деньги в рынок.
При этом, классики торговых систем, описывающие «как надо», говорят, что мы не знаем наперед, что будет, и торговать надо максимально разнообразную корзину инструментов.
Что думаете ?
Вопрос 2(с теми же входными условиями):
те же системы, все так же, но при тестировании на другом классе инструментов(допустим изначально использовались фьючерсы, а теперь хотим протестить на акциях), мы видим тоже самое: условно говоря 3 группы: акции а) где все шикарно, б) где все средне, может быть даже умеренно позитивно, но с плохой кривой эквити, для отдельной акции(но суммарно — очень достойно), и в) группа где все плохо. достаточно стабильно плохо. Только сложность теперь в том, что мы имеем не(скажем) 30 инструментов, а 2000. Идти по каждому и анализировать — муторно, почти не реально. Можно автоматически выбрать хороших, и(возможно) нормальных, и выкинуть плохих. Возможно, оставить всех, как учит теория. Каким путем идти ?
Если плохих выкидывать, то как часто пересматривать портфель инструментов? А что, если система неплохо работает на разных таймфремах? после какого количества плохих трейдов выкидывать инструмент из корзинки и когда добавлять ?
В этом Полигоне участвует 9 торговых систем. Участники – самые разные. Кто-то самостоятельно подготовил свою торговую систему и прислал мне ее на Полигон. Кто-то прошел у меня перед Полигоном квест, и теперь подготовленная им торговая система испытывается на Полигоне.
Все ТС трендовые и большинство из них торгуют фьючерс на доллар-рубль. Лишь одна ТС «Мартинс» торгует фьючерс на обыкновенные акции Сбербанка. Некоторые торговые системы несут в себе обязательство закрывать позиции в конце дня, а другие переносят свои позиции на следующий день.
Фьючерс на доллар-рубль сегодня медленно сползал вниз. Большинство торговых систем, участвующих в Полигоне, открыли по этому инструменту короткие позиции и в течение дня плюсовали. А фьючерс на акции Сбера после утреннего рывка вверх остальной день провел в боковике.
Более подробно см. прилагаемое видео.
Про то, что такое Полигон, можно узнать здесь smart-lab.ru/blog/360646.php
Господа, всех приветствую. Продолжаем цикл изучения языка mql4.
В прошлом посте мы познакомились со средой разработки MetaEditor, в которой и происходит процесс набора кода программ для терминала MetaTrader. Теперь неплохо было бы разобраться с тем, какого рода программы и вспомогательные файлы можно написать на языке mql4.
В этом нам поможет «Мастер MQL4». Чтобы его запустить, достаточно в MetaEditor’e в меню «Файл» выбрать команду «Создать», либо нажать на соответствующую кнопку на панели инструментов, которая находится прямо под главным меню, либо зажать комбинацию горячих клавиш Ctrl + N. Любое из перечисленных действий запустит «Мастер MQL4». Он хорош не только тем, что помогает создать заготовку будущей программы, но он ещё и размещает её в правильном каталоге для выбранного типа программы или файла.
После этого перед нами предстанет выбор из 6 возможных вариантов:
local w32 = require("w32") function FindLoginWindow() hLoginWnd = w32.FindWindow("", "Установка сетевого соединения") if hLoginWnd == 0 then hLoginWnd = w32.FindWindow("", "Network connection setting") end return hLoginWnd end timeout = 1000 -- таймаут между попытками поиска окна логина is_run = true function OnStop() timeout = 1 is_run = false end function main() while is_run do sleep(timeout) if isConnected() == 0 then local hLoginWnd = FindLoginWindow() if hLoginWnd ~= 0 then local nBtnOk = w32.FindWindowEx(hLoginWnd, 0, "Button", "&Ввод") if nBtnOk == 0 then nBtnOk = w32.FindWindowEx(hLoginWnd, 0, "Button", "&Enter") end w32.SetFocus(nBtnOk) w32.PostMessage(nBtnOk, w32.BM_CLICK, 0, 0) while not isConnected() do sleep(1000); end; end end end end