PDA

Виж пълната версия : мулти-маркет с автономна настройка



Kosyo
18.01.2021, 02:14
Ръчният трейдинг умря! Да живеят Роботите!
Mateev припокрива на 90% вижданията ми, но ще се опитам да дефинирам моя идеал за робот
Поддържам мнението, че нито една идея не подлежи на открадване, защото ноу-хау-а е в реализацията й
А когато става въпрос за борсова търговия, пазара е необятен и ако драсканиците ми по-долу помогнат на някой да дръпне, само може да ме радва!

1. МТ5!!! ако е МТ4, то в краен случай, но не универсален код, а два различни проекта.
2. Мулти-маркет, да може да поддържа всички инструменти на всеки брокер, и тъй като калкулациите по сектори са различни, то ще се добавят по етапно.
3. Потребителя, т.е. Аз избирам кои пазари да се търгуват, като избора да се добавят или премахват става в движение без рестарт.
4. Предполага се, че робота е стартиран при различни брокери като някой от тях може да не работят с всички от зададените инструменти, но при листването им от брокера, стартират автоматично.
5. Всеки пазар на база история на пазара си настройва всички динамични параметри (ауто), като всичките се разглеждат като фрагментация на спреда.
6. Въвеждане на рейтинг на инструментите (пазарите) чрез който се определя квотата му на участие от капитала, като старта е равен 1/n, а с всяка сделка и други фактори се коригира (ауто).
7. Времето за обработка на един цикъл е добре да не надвишава 1-1.5 сек, колкото по-малко, по-добре! При по-слаба машина, повече тикове за сек, пазарите с по-нисък рейтинг отпадат до влизане в норма.
8. Плюс списъка от търгуваните пазари от потребителя се въвеждат още много малко параметри:
- максимален % на използване от наличния капитал (10-100) % Аз лично 99-100% в зависимост от точността на калкулация на Volum/Инвестиция/Динамика
- степен на агресивно припокриване на свободния капитал от пазара със сигнал, (0-10) % Аз 5%.
- IBAN за автоматичен трансфер при надхвърляне на поставените цели :о).
9. Системата се само обучава ако не на всеки тик, то на минута, 5 мин или 1 ч, с много на брой прости статистики, невронните мрежи, не ми допадат, дори и LSTM.
10. Един пазар - една позиция (нет акаунт)
11. Един акаунт - един робот.
12. Робота - унифицирана техническа и търговска част, но уникална сигнална логика.
13. Секюритито, определено е обвързано с акаунта и още 4-5 неща, като естествено когато е нарушено, не спира търговията, а я кара на случаен принцип.
14. Сигналния модул (май най-важния) генерира 0 за close, +1,+2,+3, ... за long и -1,-2,-3, ... за short, като нарастването на стойността увеличава вероятността.
15. Всяка сделка се пуска със стопове отгоре и долу, като изхода й, е предимно от насрещен сигнал.
16. Наличните класове и примерни функции, определено не вършат работа за реала, когато става въпрос за бързодействие и големи суми.
17. За съжаление много от реалните процеси не подлежат на тестване в тестера и симулатора, да оставим, че някои са изключително рядко срещащи се, а други уж такива в последно време почнаха да се менкат през ден.
18. Относно специалните договорки с брокера! Остават си такива! Брокерите в БГ определено са трудни на малките суми, а при по-голямите ти пробутват най-смотаните служители, които в нормални услови отговарят само за тоалетната хартия в офиса. Но със солидни финансови институции, съм достигал много добри условия, уви извън БГ.
19. Начален капитал - поне 5 пазара да могат да отворят позиция с най-малкия обем. Контрола над Левърича, последната година се засили, та всеки да смята сам.
20. Колкото по-малък е капитала при мулти-маркет търговията, толкова по-трудно се спазват квотите между различните пазари.

Х. Таргета (въпроса на всеки начинаещ) х10 капитала месечно (х1.5-2 седмично), (5-20% дневно), но в действителност - всичко над х2 месечно е супер! ;о)))

Какво мога да кажа за себе си. Имам любителски опит в ръчния трейдинг на различни платформи и инструменти от 2000 г. (по ония времена спреда на €/$ беше 7 пипса при 0.6 сега). Определено си падам по опции (едни от най-спекулативните инструменти). Печелил съм и губил неприлични суми, като печалбата е плод на много на брой сделки, а загубата само на няколко. Добре се справям с MQL и съумявам да прескачам издънки в платформата, а от някой даже да реализирам и доходност (естествено само временно). С Роботи на тестера съм постигал добри резултати, но уви на реала не! Като заключение, оказа се, че сам не съм си достатъчен за този проект, макар да съм писал различни фрагменти в годините.

PS: Нахвърлях го набързо и ще коригирам във времето

Mateev
19.01.2021, 18:02
Радвам се, че някой разсъждава почти като мене. Ще допълня написаното и дори ще направя леки корекции, които мога да ги обясня защо ги правя, ако има интерес.

1. Робота търгува с хиляди стратегии, или десетки хиляди (ако компютъра има съответните ресурси).
2. Всяка една стратегие е 100% адаптивна и не се нуждае от никакви параметри, освен финансовия инструмент. Мисля че дори и този параметър може да се премахне.
3. Всяка стратегия си има собствен вграден симулатор на исторически данни. Никаква предварителна симулация не е нужна - просто измисляме логиката на поредната стратегия и я пускаме да търгува на REAL.
4. Тънкия момент за тази голяма смелост е ПРЕФЕКТНИЯ MONEY MANAGEMENT, който ако стратегията е каплпава, ще и предостави 0 (нула) лота за търговия. Това ще го обясня в друг постинг.
5. Всяка една стратегия търгува виртуално. Започва в далечното минало с капитал 1-ца, и с течение на времето го увеличава или намалява.
6. Стратегията не се интересува от размера на лота. Тя винаги си търгува с този абстрактен капитал, започвайки от 1-ца и стигайки до 0 или до + безкрайност.
7. Ако стратегията стигне до 0-ла се самоизключва.
8. Има си специален модул СУМАРИЗАТОР, който събира желанията на хилядите стратегии, сумаризира ги, и към пазара изпраща тяхната нетна позиция.
9. Тази позиция може да се променя едва ли не на всеки тик или по-рядко, и модула СУМАРИЗАТОР се грижи да поддържа минимална разлика между ЖЕЛАНИЯТА и РЕАЛНАТА НЕТНА ПОЗИЦИЯ.

По управлението на капитала:
1. Всяка стратегия "разсъждава" виртуално в рамките на собствения си капитал, който винаги започва от 1-ца и се движи нагоре или надолу
2. Този капитал може да стане много малък (напр. 0.0000000001), но въпреки това стратегията продължава виртуално да си търгува с него
3. В процеса на своята виртуална търговия (в миналото или в реално време) стратегията поддържа статистическа информация за своето представяне. Това е dH/L на кривата на Equity-то.
4. Процента от капитала за всяка една нова виртуална сделка на дадената стратегия също винаги е dH/L. За това чудодейно dH/L ще говорим по-нататък.
5. Всяка минута (или дори всеки тик) СУМАРИЗАТОРА събира желанията на всичките стратегии, и след това преобразува сумата, като я мащабира от позицията на наличните средства в акаунта, и изчислява необходимите лотове. Ако реално са отворени други лотове, прави корекция посредством увеличаване или намаляване на нетната позиция към търговския сървър.
6. Ако в акаунта се внесат нови средства, още на следващия тик сумаризатора премащабира сметките си и започва да използва новите средства.
7. Ако се изтеглят част от средствата в акаунта, още на следващия тик сумаризатора премащабира и намалява отворената позиция по правилния начин (с правилното мащабиране).

С описаното до момента елиминирахме няколко много важни проблема в трейдинга:
1. Стратегиите вече не "мислят" за лотове и не се съобразяват с минималните такива. Те просто си търгуват с абстрактни единици, започвайки от 1 и стигайки до произволно положително число (голямо или малко).
2. Стратегиите вече не "мислят" за парите в акаунта. Те винаги си търгуват виртуално дори и с части от стотинката.
3. Стратегиите вече не "мислят" за Money Management. Той е унифициран, възможно най-оптимален, и зависи само и единствено от представянето на стратегията в миналото.
4. Стратегиите вече няма нужда да се тестват върху исторически данни. Те сами си го правят това, и ако са калпави, dH/L много бързо ги принуждава да търгуват със суми, близки до нулата.
5. Имаме огромно опростяване на кода на стратегиите, защото те вече не мислят за нищо друго, освен за собствената си вътрешна логика, която също е много проста - AND на няколко логически функции
6. Няма нужда да правим развойна дейност и да търсим печеливши стратегии, защото калпавите такива се самоизключват с минимален разход на средства още на етап исторически автотест, а добрите бързо излитат в небесата още в исторически план, и след това и на Real.

А ето как работи единичната стратегия:
1. При тръгване на компютъра стратегията е със занулена статистика
2. Започват да и се подават исторически тикове, които след изчерпването си преминават в тикове в реално време
3. Стратегията дефакто не знае кога се случва събитието в т.2 - тя просто си продължава работата и си променя статуса след всеки един нов тик - исторически или в реално време.
4. Следователно кода ще е силно опростен, защото стратегията не трябва да "мисли" кога сме в миналото и кога - в реално време
5. Кода на стратегията ще бъде много бърз, защото тя няма да оперира със списък от истински сделки, а само с едно число, започващо от 1-ца и нарастващо/намаляващо във времето
6. Статистиката dH/L всъщност ще представлява само 2 числа, които се манипулират на всеки един тик.
7. Като цяло кода на единичната стратегия ще е силно опростен и ще се изпълнява светкавично.

Ако има въпроси до момента - здавайте ги, за да можем да преминем към по-важната част - как ще се конструират самите стратегии.

Mateev
19.01.2021, 18:46
А сега и няколко думи за организацията на класовете в самия робот:

1. Основния клас е е класа СУМАРИЗАТОР или каквото там име му измислим
2. Този клас ще съдържа в себе си лист (списък) от обекти на класа на търговските стратегии
3. Функционалноста му ще се изчерпва със сумаризиране на техните виртуални позиции, премащабиране спрямо реалните пари, и поддържането на реална сумарна позиция.
4. Този клас ще работи с един единствен символ (финансов инструмент) и ще поддържа една единствена реална позиция по него.
5. Обекти на този клас със същите (или с други) стратегии в него могат да бъдат пуснати и по други символи
6. Следователно се нуждаем и от един главен клас, например TradingEngine, който ще съдържа в себе си лист от обекти на сумаризатори по различните символи.
7. Класа TradingEngine ще се занимава и с преразпределянето на средствата в акаунта към различните сумаризатори

Колкото до класа на една търговска стратегия - той трябва да е максимално опростен:
1. Ще съдържа метод AddTick, и това ще е единственият метод за добавяне на информация в обекта на класа
2. Ще съдържа методи Save и Load, за да може да се записва докъде е стигнала симулацията и при следващото пускане на компютъра да не започва от нулата, а от там, докъдето се е стигнало.
3. Ще съдържа и един единствен метод GetSize, в който метод ще можем да попитаме какъв виртуален капитал има в текущата сделка. Ако е нула - няма сделка. Ако е положително число, класа иска Buy сделка. Ако е отрицателно - Sell сделка. Въпросът можем да го задаваме на всеки тик, и класът трябва да ни отговори, като има правото да си променя мнението буквално на всеки тик.
4. Ще има и помощни методи за нуждите на визуализацията и статистиката, като например GetDH и GetL, GetTradesCount, и май с това се изчерпва всичко.
5. Разбира се можем да накичим класа и с други методи, но тези по точка 1,2 и 3 са предостатъчни за пълноценното функциониране на стратегията както в исторически план, така и в реално време.

Kosyo
20.01.2021, 00:59
*1. Може би тук ни е основното разногласие! :о) ...ако нямаше такова нещата щяха да са много подозрителни!
Задачата е достатъчно сложна (програмно) и натоварваща (за машината) и да кажа с твоите камъни по твоята глава ха-ха! Ако имаш ДОВЕРИЕ за едно, защо да нямаш за друго! Защо подлагаш сигналния модул под съмнение!? Имаш ли на идея при няколко хиляди сигнални "схеми" какъв бъркоч ще се роди! Е не съм краен - компромисен варянт - прави се с 1на сигнална техника и като се стабилизира всичко останало, тогава да започне тестването с допълнителни сигнални логики!
*2. Нещо подобно ми се връткаше, но не го бях изчистил, а като го прочетох, съвсем се изсветли! Пазарите с нисък рейтинг (който не се търгуват, няма значение заради рейтинга или липсата на капитал), симулират търговия - това е единствения разумен начин как да се коригира рейтинга им! Рейтинга - фактора за монетарния контрол, той е сред регулаторите на волюма. А имаме ли виртуална търговия, наистина няма значение от коректността на обема 1, 0.1, ..., 0.0000001
* Относно всички пазари на брокера или списък от юзера!? Опита ми на живо, ме кара да ми се иска да има контрол! Защо! Защото всеки пазар навлиза в тъмен период, макар и веднъж на 10-20 г. примерно технически ограничения за дълъг период, особено когато говорим за акции (естествено опции над тях) или електронни валути, доста по-често срещани явления. Но в духа на т.2 определено може да остане на виртуална търговия или по-просто на "нашият" тестер.
Други причини за списъка с пазари - а) да се облекчи машината; б) не всички сектори (групи) от пазари ще са алгоритмизирани с начале, а списъка е един за всички N брокера и определено не всички от тях ще поддържат всички пазари от списъка, но появи ли се, тръгва на раз, е след местният му анализ де.

единичната стратегия
* На всеки брокер започва от 0 (условията са му уникално дървени)
* На всеки час или там колкото записва установените параметри и при срив (ток, нет, ...) ги зарежда на готово, защо да не ги преизчисли на ново, най-малкото защото вече има позиции и да не губи време, особено ако е кът за момента, примерно 5 мин до US close time.
Всяка сделка => и позиция е самодостатъчна има малки стопове примерно 10-20п за €/$ да се лимитират загубите при срив (ток, нет, ...)
* Трейд функцията правя и 10-та версия :) всички проверки са пред постването, след нищо не обработвам, само го принтирам за някогашни анализи за бъдещи пред проверки, а за всеки случай 3 опита да мине, а щом не е няма смисъл от анализ, това явно е проблем от нов тип.
* Спреда е сред основните параметри и всичко което е цена, ниво, ценова дистанция е фрагментирано от спреда. Определят се няколко, нормален, максимален, добър, среден и това за всеки 15 мин или 1 ч от денонощието - много спредове, става въпрос за един пазар - около 500

zezo
20.01.2021, 01:10
Интерес и въпроси ще има..
Буквално съм потресен и едновременно впечатлен от последните два посата на Матеев..
Няколко въпроса:
1. Логиката на всяка стратегия отговаряща за посоките на отваряне на позициите на този робот на база на рандум генератор ли ще бъде?
2. След като основното свойство на чистата случайност, е че всеки един маршрурут е равно вероятен, би следвало ако пуснем 1000 случайни робота поне няколко от тях със сигурност да бъдат печеливши поне за следващите 1000 сделки, и ако можем да ги отсеем да търгуваме само по тях... На базата на подобен вид разсъждения ли се гради новия метод?
3. Какво стана с търсенето, доказването и търгуването по зависимости?
4. Само на управлението на кипитала (ММ) ли разчитаме да ни извади от големите DrawDown ни?

Kosyo
20.01.2021, 02:59
история и терминологията!
МТ преди версия 3 беше олеле! Версия 3 - тук там някои брокери се престрашиха да го ползват. Версия 4 почна да става! Версия 5 - определено става! За съжаление малко брокери я предлагат...
Хич не ми допада 4 в сравнение с 5, има толкова много бъгове, да оставим, че официално не се поддържа и ангажира от 2 до 10 пъти повече памет, с 2 думи достатъчно е сложно да се прави още по сложно!
Символ - това животно за първи път го срещнах в МТ, толкова години още не мога да свикна, но опция, инструмент, маркет, е друго нещо! Предпочитам маркет, че е по-кратко.
Bay, Sell - голям бъркоч! (при уорантито си е класификатор) използвам Long / Short

Класовете - без тях не може, но където не са задължителни предпочитам структури и функции - внушил съм си, че са по-бързи.
В МТ OnInit е малко фъни функция, рестартира се всеки път при смяна на параметър, добре е основните класовете да се декларират преди нея.
Параметри в краен случай, инициализацията през текст файл, dll, веб пост или стрим, най-просто е с файл/ове.
Няма да обсъждам всички класове, защото някои са прищявка, като таймерите NY/London/HK/Tokyo

Моите Основни класове:
Ексептион, Глобал (структ.), Маркет, Трейд_Лист, SX_Clock
Ексептион - принтира варнингите или не и смс-ите
Глобал - структура с много на брой глобални параметъра
Трейд_Лист - добавя и премахва маркети, съответно ги записва и чете при старт
Маркет - даунлоад, ъпдейт, хистори, тик, сигнал, траде, волюм, статистик
SX_Clock - отчита отварянето и затварянето на основните борси

метода: Маркет::сигнал - Може да се изведе като лист от сигнални функции, но както казах по-горе е доста сложно да се тества и е добре да е част от версия 2

Най-интересното на всички тук им е именно сигналната функция, по скоро принципа :)
Аз специално последно съм се спрял на анализ на последните няколко бара при тайм-фрейм 20-30 сек до 1 мин

Таргета за Робота ми е около 20 плюсови сделки на ден за 3-8 пъти нормалния спред,
Колко губещи? Нито една! - говоря за таргет! :) иначе 80:20 да е отношението печеливши губещи, ако няма такав % на прогнозата - няма сигнал, а сигнали се генерират непрекъснато и съответно се оценява, независимо дали е било реална сделка или виртуален анализ, оценката се използва за рейтингуване на пазара и корекция на параметрите

Kosyo
20.01.2021, 04:24
Случаен фактор - 0!
Ако 100 пъти се пусне на един и същи брокер с еднакъв хистори старт ще даде 100 еднакви резултата - говоря за една и съща версия
Какво няма да даде!
При една и съща ситуация (патерн) по различно време, даже и при един и същ брокер е възможно да има различни решения, като казвам различни, то един път да няма сигнал, друг път Лонг, а трети - много силен Шорт.

Опростен Пример, колкото да се хване идеята:
Анализираме последните 3 бара непрекъснато, като анализите от преди 7-8 дни леко, избледняват, като се следи разпределението на патерна (повторяемостта му), тези с хомогенното не представляват интерес, а на другите се прихваща модела, оценява се на виртуално и когато този модел постигне над 80% оценка, се прилага.
Казано просто търси модели с висока степен на предсказуемост с над минималния профит, всичко това към последната седмица и СИГНАЛ!
После в зависимост от текущата позиция, рейтинга, спреда и какво ли още не ;) на пазара, се отваря позиция, надгражда налична такава, частично я затваря или я реверсира! - Сигнал! :)

Всяка позиция има SL & TP, при това малки! Те не са за изход от позицията, те са превантивни, ако се загуби връзката със сървъра. Позицията се контролира от сигнали, като насрещния затваря или реверсира позицията, надграждащият трилва SL & TP и я увеличава.

Волюма (ММ) - от рейтинга на пазара, като е желателно да има поне 2-3 стъпки на влизане (в случай, че няма капитала, само трилване). Това и броя пазари, определят минималния разумен капитал.
Е ако са пуснати 20 пазара и всичките са с положителен рейтинг, а капитала е малко, се инвестира конкурентно, първо най-високите рейтинги, после конкурентно, който маркет пръв генерира сигнал, като другите се ограничават за да има 2-3те стъпки на влизане за активните пазари.

...Сигналната функция - май говорим доста сродни неща, но се разминаваме в терминологията...

Патерна (силуета) се свежда до число, търси модели, т.е. това число какви представяния е имало, като се замислям - това са различни модели, но в една функция с масив от индексите им - числото
числото не трябва да е много голямо примерно 2^16, даже по-малко. Ами абсурдните патерни, няма значение колко са различни все дават 0
Тук трика е в дълбочината на представяне на модела - анализ на баровете и връзките между тях. При барове над 20 сек се появява и динамична компонента

Mateev
21.01.2021, 02:05
Интерес и въпроси ще има..
Буквално съм потресен и едновременно впечатлен от последните два посата на Матеев..
Няколко въпроса:
1. Логиката на всяка стратегия отговаряща за посоките на отваряне на позициите на този робот на база на рандум генератор ли ще бъде?
2. След като основното свойство на чистата случайност, е че всеки един маршрурут е равно вероятен, би следвало ако пуснем 1000 случайни робота поне няколко от тях със сигурност да бъдат печеливши поне за следващите 1000 сделки, и ако можем да ги отсеем да търгуваме само по тях... На базата на подобен вид разсъждения ли се гради новия метод?
3. Какво стана с търсенето, доказването и търгуването по зависимости?
4. Само на управлението на кипитала (ММ) ли разчитаме да ни извади от големите DrawDown ни?

1. Логиката на всяка стратегия отговаряща за посоките на отваряне на позициите на този робот на база на рандум генератор ли ще бъде?
Не съм казал, че ще пускаме Random стратегии. Само казвам, че дори и да пуснем такива, те автоматично ще се самоизключат още в миналото, преди да започнат търговия с реални пари. Дори и да се изхитрят да излъжат системата, и тя да им даде някакви пари, то това ще са смешни стотинки, базирани на смешния положителен резултат. Истински сериозни пари за търговия имат шанса да получат само истински добрите стратегии. Самият метод за преразпределение на капитала го предполага това.

В процеса на търговия трейдера ще следи и ще разбира кои стратегии са добри и кои - лоши, и в следващата версия на робота може да изхвърли лошите стратегии и да добави други такива, които според него имат потенциал. Тези експерименти са безопасни от финансова гледна точка, въпреки че нито една стратегия не се тества предварително. Калпавите стратегии могат да си останат в робота, но може и да се изхвърлят в следващата версия.

Важното е обаче да се осъзнае, че една калпава стратегия по един финансов инструмент може да се окаже добра по друг - все пак класа е един и същи и стратегиите са едни и същи по всички финансови инструменти, само че се обучават на различни ценови графики и от там постигат различни резултати.

2. След като основното свойство на чистата случайност, е че всеки един маршрурут е равно вероятен, би следвало ако пуснем 1000 случайни робота поне няколко от тях със сигурност да бъдат печеливши поне за следващите 1000 сделки, и ако можем да ги отсеем да търгуваме само по тях... На базата на подобен вид разсъждения ли се гради новия метод?
Да, метода разчита основно на това, че Money Management-a е най-добрия възможен, който дава най-оптималния капитал за всяка една нова сделка. Защо това е така ще трябва да разкажа друг път, но повярвайте ми - това е най-ценното от цялата концепция, което освен всичко друго няма къде да го прочетете в интернет. Иначе има абсолютна гаранция, че метода е по-добър от този на Кели или от Optimal F. По-точно, ако Кели или Ралф Винс бяха доразвили методите си, щяха математически да достигнат до моя метод, който е единствения верен, и това се доказва много лесно както теоретически, така и практически (вече е проверено с много на брой сравнителни тестове).

Та този оптимален ММ ще отсвири случайните стратегии, като им даде почти нулеви суми за търговия. В същото време на добрите стратегии ще дава по-големи суми за търговия. И най-интересното - на дълбоко губещите стратегии ще дава отрицателни суми, което е индикация, че просто трябва да обърнем посоката на сделките, и стратегиите ще станат печеливши.

3. Какво стана с търсенето, доказването и търгуването по зависимости?
От това не сме се отказали. То си е вярно и концепцията го отчита, само където тези зависимости се откриват автоматично в процеса на тестване на единичната стратегия.

4. Само на управлението на кипитала (ММ) ли разчитаме да ни извади от големите DrawDown ни?[/QUOTE]
Да, разчитаме само на ММ да ни управлява DrawDown-ите. Нещо повече - ние и нашите стратегии спираме да мислим за DrawDown-ите. Това е една от самозаблудите на повечето трейдери, че DrawDown-а в миналото има някакво значение за потенциалните такива в бъдещето.

Трябва да се разсъждава така:
1. Всяка една стратегия в процеса на търговията си предизвиква някакво Equity, което се подчинява на нормалното разпределение. Отместването на медианата от центъра в положителна посока има смисъл на ВЕРОЯТНОСТ, различна от 50%. С други думи - добрите стратегии генерират крива на Equity-то с вероятност, по-голяма от 50%. Тя и затова кривата расте нагоре, защото вероятноста е по-голяма от 50%.
2. Ако тази вероятност я оставим да генерира сделки до безкрай, в полученото Equity ще има всякакви DrawDown-и, включително и много дълбоки такива, които биха занулили всеки един акаунт.
3. Независимо колко добра е тази вероятност, тя в безкрайноста пак ще изгенерира някакво количество DrawDown-и, които биха занулили акаунта. Единствената разлика между добрите и лошите вероятности не е в дълбочината на генерираните DrawDown-и, а в честотата на тяхното срещане.
4. А сега си представи тази безкрайна поредица от сделки, при която имаме следното:
- Някакви сделки в миналото, които вече сме ги наблюдавали, и които се явяват само една малка ИЗВАДКА от всичките сделки на безкрайноста
- Някакви сделки в близкото бъдеще, които все още не ги знаем какви са, и които представляват друга малка ИЗВАДКА от сделките в безкрайноста
5. Никой обаче не ни гарантира, че едната извадка (в миналото) ще ни поскаже поведението на другата извадка (близкото бъдеще).
6. Гарантира ни се само факта, че ВЕРОЯТНОСТА на стратегията, която вероятност генерира двете малки извадки, е една и съща в безкрайноста.
7. На нас обаче не ни се чака цялата тази безкрайност, и затова ще се опитаме само по едната извадка (миналото) да определим вероятноста на всички сделки в безкрайноста, разбира се с някакъв ДОВЕРИТЕЛЕН ИНТЕРВАЛ. Има си строга математика, която го прави това, и която е доказано безпогрешна.

А сега виж как се опростяват нещата:
1. Дoкато тече историческия тест например след 30-тата сделка започваме да смятаме ВЕРОЯТНОСТТА на получилото се Equity
2. Тази вероятност ни дава една единствена стойност на MM, така че вече знаем с какъв капитал ще отворим следващата сделка
3. С напредването на теста се рисуват нови и нови участъци на Equity-то, които динамично променят и MM за всяка една следваща сделка
4. Това се случва по време на историческия тест и незабелязано от стратегията продължава да се случва и по време на последвалата REAL търговия.
5. Нещо повече - контрола на ММ може и е желателно да се разпространи не само в началото на сделката, но и по време на целия нейн живот. Тоест дори и да се направи единична сделка, която би занулила акаунта, ММ няма да го позволи това, защото със задълбочаването на DrawDown-а постепенно ще намалява броя на лотовете, и така никога няма да допусне Margin Call.

Не забравяй, че ако се разсъждава логаритмично (а трябва така да се разсъждава), то разстоянието от цена 1-ца до цена 2-ка е равновероятно с намаляването до цената от 1 до 0.5. При това положение пътя от 1 до нула също е толкова безкрайно дълъг както и пътя от 1 до +безкрайност. И това важи не само за цените, но и за движението на нашата крива на Equity-то. Тоест зануляването на акаунта е равновероятно на увеличаването му до безкрайност, като всъщност и двете събития никога не могат да се случат. Ето това се гарантира математически от този ММ.

Наличието на спред обърква тази идеална математическа логика, но с него ще се процедираме по друг начин, който ще го мислим на етап СУМАРИЗАТОР. Той ще се старае ЖЕЛАНИЕТО на всички стратегии да отговаря на РЕАЛНАТА СДЕЛКА, но приблизително, а не на всеки тик и не на всеки пипс. Това с цел намаляване на щетите от спреда.

Като цяло за да разбере човек всичко написано до момента трябва да осъзнае следното:
1. Тестовете в миналото ни дават ВЕРОЯТНОСТ, заедно с доверителен интервал.
2. По тази вероятнот определяме оптималния ММ, и спираме да се безпокоим за DrawDown-ите.
3. Вероятноста, създаваща Equity-то, се променя с всеки един новопостъпил тик, което динамично променя и размера на капитала, вложен в текущата сделка.
4. Разбира се ние няма на всеки тик да променяме лотовете на сделката, а ще си оставим някакъв диапазон, в който нищо не правим, но след излизането от него променяме лотовете нагоре или надолу.

Mateev
21.01.2021, 02:56
Цялата идея се състои в това да създадем пирамидална йерархия от класове и техните обекти, като колкото по-ниско в йерархията се намира даден обект, толкова по-абстрактно да си представя цялата търговия. Обектите в дъното на йерархията (елементарните стратегии) на практика не знаят нищо за търговията. Те само получават някакви тикове, които дори можем да си ги изгенерираме изкуствено, и след това се опитват в тези тикове да открият някаква зависимост, и да се адаптират към нея. Как това става ще говорим по-нататък. Съществуват само 4 вида зависимости, така че ние точно и ясно знаем какво търсим и как трябва да го търсим.

С вдигане на нивото от дъното на пирамидата към нейния връх абстрактните виртуални сделки на стратегиите стават все по-конкретни и по-конкретни и там на върха (сумаризатора) вече се превръщат в истинска реална търговия с идеалния ММ и идеалното преразпределение на капитала между калпави и добри стратегии.

На всяко едно ниво от тази пирамида ние мислим и програмираме само на нивото на абстракция, на което се намираме. Забравяме за всичко отдолу и за всичко отгоре. Така кода става оптимален и всяко едно ниво (всяка една жаба) точно и ясно си знае гьола.

Именно поради тази причина единствения лесен начин за програмиране е Обектно-ориентираното програмиране. Само то е в състояние да се справи с голямата сложност на робота и да я сведе до елементарни обекти, лесни за осмисляне и проектиране. Където е възможно ще ползваме готови библиотеки, каквито има на сайта на MetaQuotes.

Най-интересното в моята концепция е как аз си представям функционалноста на една единична стратегия, защото там също обръщам наопаки представите на трейдерите що е това СТРАТЕГИЯ и има ли тя почва у нас. Накратко само ще нахвърлям основните моменти:

1. Предварително режем графиката на някакви предопределени парчета посредством някаква нетърговска логика. Например 1 час или 1 сегмент от ЗИГ-ЗАГ-а или 1 ценови диапазон (напр. +/-30 пипса).
2. Всяко едно парче представлява една сделка.
3. Търговската логика се опитва да направи следното:
- Да реши дали по дадено парче ще отваряме сделка или не
- Да реши в каква посока ще е тази сделка
4. Отпадат понятията Stop Loss и Take Profit просто защото няма нужда от тях.
5. Сделка се отваря в началото на парчето и се затваря в неговия край, но този край се определя от нетърговската логика.
6. Ако следващото парче е в същата посока, предишното не се затваря, а само се удължава живота на сделката.
7. Създаваме парламент от много депутати (еднотипни микростратегии)
8. Тези депутати гласуват от позицията на собствената си търговска логика, която е подобна на останалите, но с различни параметри
9. Използваме факта, че ако N на брой депутати (стратегии) гласуват с ниска познаваемост (напр. 51%), то общата познаваемост на вота се вдига и може да надхвърли 55% или дори 60%.
10. Това се случва защото при много на брой опити случайноста се подтиска, а познаваемоста (ако я има) се усилва.
11. Нашата стратегия от най-ниско ниво всъщност ще представлява ПАРЛАМЕНТ от много на брой гласуващи депутати (микростратегии) от още по-ниско ниво.
12. Такъв един подход силно ще натовари компютъра и ще доведе до продължителни във времето изчисления, но какво ни пука да смятаме цяла минута и само веднъж в минутата да правим търговска операция. За сметка на това обаче ще използваме силата на парламентаризма - подтискане на случайноста и усилване на познаваемоста.

Това можете сами да си го изтествате на Excel. Създайте някаква колонка от числа (1 и 0), които ще представляват един еталон. След това създайте 100 колонки (депутати), като на всеки един от тях задайте 51% вероятност за познаване на числото от първата колонка. След това изчислете сумарния вот на всички депутати ред по ред, и сами ще видите, че познаваемоста на всеки един депутат е 51%, но на вота не е 51%, а доста по-висока - 55-60%. Точно това може много да ни помогне в търговията - стотици калпави стратегии да се изхитрят да дадат по-висока познаваемост посредством гласуване.

Абсолютно същия ефект се получава и в СУМАРИЗАТОРА, който обединява търговиите на стотици или хиляди стратегии. При това обединение също случайноста се подтиска, а закономерностите се усилват, така че дори и на това по-високо ниво отново използваме ефекта на парламентаризма. Колкото по-малко корелират стратегиите една с друга, толкова по силен става този ефект.

Mateev
21.01.2021, 04:00
А сега още по-конкретно за една елементарна стратегия и един елементарен парламент:

1. Разбиваме пазара с някаква логика на много на брой парчета. Например едно парче е +/- 30 пипа. Броя на пиповете в парчето е ПАРАМЕТЪР 1, който има стойности например от 10 до 200 през 10, или така се получават 20 разлини мащаба за изчисление/търговия.

2. Всяко едно парче е сделка, на която нашата търговска логика трябва да определи само посоката и нищо друго.

3. Върху същите парчета можем да наложим и друга логика, която само определя дали да търгуваме по това парче или да останем извън пазара.

4. Обединяването на точки 2 и 3 ни дава 3 различни комбинации - BUY, SELL и вън от пазара.

5. Имаме една базова ЕТАЛОННА СТРАТЕГИЯ, при която всички сделки са BUY от първата до последната. При тази стратегия получената крива на Equity-то ще представлява точно копие на кривата на движение на цената през целия период. Тази еталонна стратегия ще има някаква печалба/загуба за целия период. Нашите стратегии ЩЕ СЕ СРАВНЯВАТ с тази еталонна печалба/загуба. Тоест няма да гледаме дали нашите стратегии са постигнали някаква абсолютна печалба, а ще гледаме дали са постигнали по-голяма или по-малка печалба от еталонната стратегия. И в двата случая за нас е добре, и колкото по-голяма РАЗЛИКА получим, толкова по-печеливша стратегия сме намерили.

6. Тоест тука тотално отхвърляме всички методи за анализ на печелившоста на една стратегия и ги заменяме с един единствен метод - ПО-ГОЛЯМА РАЗЛИКА ОТ ЕТАЛОНА.

7. Измисляме си някакво логическо търговско правило, което за всяко едно парче да връща 0-ла или 1-ца. Ако е 1-ца, за следващото парче правим BUY сделка. Ако е 0-ла, за следващото парче правим SELL сделка.

8. С това това търговско правило ние всъщност създадохме една елементарна стратегия, състояща се от един единствен програмен ред код. Познаваемостта на тази стратегия ще я измерваме посредством отклонението на крайния резултат от еталонната стратегия. Тоест това ще бъде нашето dH (Delta H или разликата във височината между нашата стратегия и еталонната).

9. ДЪлжината на маршрута или броя на стъпките, които е направила цената (L1) и нашето Equity (L2) ще ни дадат информация за вероятността, създала цената, както и за вероятността, създала нашето Equity. Нашата вероятност трябва да е по-висока от вероятноста на цената. Тоест не е достатъчно да постигнем голяма разлика, но и голямо отклонение на нашата вероятност от еталонната такава.

10. Тази наша елементарна стратегия става ДЕПУТАТ, който гласува със своя глас в парламента.

11. Самият парламент се състои от много такива депутати, които се образуват от комбинаториката на стойностите на параметрите. Например ако търговското правило е RSI(N), където N се изменя от 10 do 50 със стъпка 5 (9 стойности) и параметъра за мащаба по т.1 има 20 стойности, то тогава се получават 20*9=180 депутата, всеки от които има различна стойност на RSI и различен мащаб на пипове, от които се състои един блок.

12. Тъй като ние не знаем дали даден депутат наистина ще има някаква познаваемост, или ще гласува напълно случайно, въвеждаме ТЕГЛО НА НЕГОВИЯ ГЛАС. Тоест той няма да гласува с +/-1-ца, а с нещо по-малко, което е равно на dH/L на неговото Equity. И ако депутата има напълно случайно Equity, то той ще гласува с тегло, близко до 0-ла, и така няма да влияе на вота на другите, по-познаващи депутати.

13. Така всъщност ние създадохме парламент, депутатите на който се самообучават по време на историческия тест, и с неговото напредване те си изясняват каква познаваемост имат, и спрямо нея гласуват с по-лек или по-тежък глас.

14. На практика по този начин ние създадохме концепция за 100%-ова автоматична адаптация без нито един параметър, като при тази адаптация калпавите депутати се отсвирват с почти нулеви вотове, а на качествените депутати гласа им става по-тежък и те влияят по-силно на крайния вот, в който освен всичко друго случайноста се подтиска, а ако някъде има някаква закономерност, то тя се усилва.

15. Този парламент го кръстваме например RSI парламент, и за нас той представлява една от хилядите стратегии, които ще включим в сумаризатора. Самият парламент също си води статистика за собствения си dH/L и съобразно тази статистика определя с какъв процент от капитала ще търгува.

16. Интересното е, че този парламент можем да го пускаме да се самообучава по различни финансови инструменти, и съобразно тяхната графика едни или други депутати да стават по-познаващи или по-калпави, като по различните инструменти различни депутати ще са умни или калпави, но самата концепция гарантира, че парламента като цяло ще се представя по-добре от който и да било единичен депутат, дори и по-добре от най-добрия депутат,

17. И последно - сега вече можем да си създадем стотици или хиляди парламенти, всеки един от които има различни базови логики - по RSI, по ADX, по MACD, по часове от денонощието, по дни от седмицата, и по милион други признаци, които фантазията ви може да измисли. Всичките тези парламенти се очаква да се самообучат и да бъдат малко по-добри от чистото 50%. Сумаризатора допълнително ще подтисне случайноста и ще засили познаваемостта, така че очакванията са робота да стане печеливш, базиран на 100% адаптивност и 0-ла броя параметри.

18. При бъдещата експлоатация на робота ще се изясни в кои парламенти има хляб и в кои няма, така че обратната връзка ще я има, и трейдера ще знае с кои търговски логики да се занимава и с кои - не. Например от старите ми експерименти със Strategy Quant стигнах до извода, че много на брой печеливши стратегии се получават посредством използването на Bollinger Bands и/или Keltner Channel. Ами значи ще наблегна на този тип парламенти.

Kosyo
21.01.2021, 15:04
Дълбоко в мъглата!
Да се върнем към по-простите неща.

На всички ни е ясно, че спреда играе важна роля! Всяка идея относно анализа му е голяма крачка за човечеството! :D
Аз се опитвам да го анализирам за всеки час или 15 мин по следните стойности:

struct SPREAD {
double dGood; // good
double dNorm; // optimum
double dAvg; // average
double dLimit; // limit
double dMax; // max
};


SPREAD Spr[24]; // 24 | 96

и после го съпоставям с текущото му състояние

Други идеи?

alphaomega
21.01.2021, 16:00
Спреда не ти дава почти никаква ценна информация от която да извадиш пмо а и при повечето брокери е различен. Има брокери и с фиксиран спред.
Но все пак е важно да провериш спреда преди да правиш сделка.
Часовете в които спреда се разширява се знаят предварително. Обикновено между 23:00 и 1:00 часа българско време и в минутите около всички по важни новини. Също и в почивни дни. Ако през другото време има разширение значи има някакво рисково извънредно събитие/новина и липса на ликвидност.

От програмна гледна точка за бърз и лесен анализ на масива може да ползваш стандартните функции в MQL.
Mасива разбира се трябва да се актуализира на всеки тик иначе е безсмислено. Може да си направиш и детайлна статистика по часове и по дни но според мен това вече е overkill.

iMAOnArray
iStdDevOnArray

С тези функции си изчисляваш нивата и сравняваш къде се намира текущия спред. На колко стандартни отклонения от средната стойност.

zezo
21.01.2021, 18:31
Изключително съм благодарен за отговорите. Лично на мен малко в повече ми идва цялата тази информация и идеи накуп, препрочетох няколко пъти всички постове, но ще ми трябва време за осъзнаване и разбиране на написаното и да питам по неразбраното, все пак това е виш пилотаж. Разбирам по-голямата част от концепцията и логиката но въобще не ми е ясно как цялото това нещо ще се реализира на практика. Въпреки това съм на ясно, че почти няма невъзможни неща..
Ефекта на силата на парламентаризма е страхотен и съм обеден, че съществува и е точно така, защото съм виждал какво се получава когато направим портфейл от стратегии. Не ми беше ясно защо се получава това нещо, а именно за принципа, че се подтиска случайността и се усилва зависимостта ако има има такава, когато се пуснат едновременно няколко стратегии. Лошото е че този ефект съм го виждал само когато портфейла от стратегии е пуснат на един единствен инструмент и на един и същ таймфрейм (просто програмата която използвом позволява само това). Ще го има ли този ефект ако на един акаунт пуснеме не корелиращи стратегии по различни финансови инструменти и/или ако на един и същ инструмент ги пуснеме на различни тайм ферймове или на различни по големина сегменти?
Идеята за Сумаризатора е интересна, мисля че това гласуване и вадене на пазара на нетната стойност според мен това може да стане ако всичките стратегии (депутати) са пуснати да търгуват на един и същ финансов инструмент и на един и същ таймфрем. Иначе ще трябва да се изчислява някакъв коефициент, който е унифициран за всички финансови инструменти и след сравнението им по този коефициент да се пускат да търгуват само тези с най-висок коефициент. Освен ако за всеки отделен финансов инструмент и отделен таймфрейм ще имама Сумаризатор.

Понеже в момента съм на етап търсене и откриване на зависимости силно ме заинтресова този твой пост."Съществуват само 4 вида зависимости, така че ние точно и ясно знаем какво търсим и как трябва да го търсим." - моля за малко разяснения кои са тези 4 вида зависимости. Аз нарязах пазара на еднакви парчета 500 пункта всяко, приемам че това са и параметрите на всяка сделка стоп=таргет=500. Установих че при този тип разделяне на пазара на еднакви сегменти има зависимости в тяхната последователност, като например, при ЕВРО ДОЛАР комбинацията ↓↓↑↓ се е срещала 824 пъти, а комбинацията ↓↓↑↑ се е срещала 736 пъти, съответно когато срещенем комбинацията↓↓↑ отваряме къса позиция зашото по-вероятно е следващия бар да е ↓ отколкото ↑. Ако пусна Автокорелация по тези еднакви сегменти дали тя ще установи същото или ще излене нещо ново? Има ли друг начин за намиране на зависимости по така нарязания пазар на сегменти с еднакви големини?

Kosyo
21.01.2021, 19:28
Относно спреда не съм съгласен!!!
Има голяма роля, особено при роботите! Там какво ли няма роля де!

Фиксирания спред - определено сте на грешното място! Знаете за триците и брашното!
Динамичния спред - добре дошли в реалния свят!

Спреда се променя по всяко време и нарастването му е добър индикатор за неочаквани новини, тревожност на пазара.
Изключвам класиката голям спред - ниц сделка!
Супер снижаването му при муден пазар води до още по-голямо успиване.
При снижаване в динамичен пазар - е сега е момента да форсирате сигналната си функция и сделка!

Както каза колегата: Всеки брокер... (нова булка - нов късмет) ...различен спред.
Супер! Това на първо място е добра оценка на брокера.

И сега най-важното: Фризването на пазара (и при най-добрите го има), SL, TP, deviation-a и др. е добре да се отчитат в съотношение спрямо спреда.
Това води до унифициране на характеристиките на пазар-брокер-робот. Ако не можете да схванете връзките, определено си губите времето с роботи.
...е изключвам по-старото поколение роботи, където за всеки пазар се вкарваха по 2 куфара параметри и ако тази седмица бях мръднал В4 с 3 п по-по-най, щах, аме не, да съм на хавайте сега!

Спреда е Индикатор! При ръчна търговия, следенето му е доста занижено, но Робота - трябва да го ползва този индикатор, както за индикация на пазара, така на брокера и не на последно място Вашият ключ към повечето ви настройки.

Е, има ли и други мнения?

Kosyo
21.01.2021, 20:21
Mateev има интересни идеи, но са толкова сложни и на места противоречащи, че е трудно с 1-2 прочита да се обгърнат.
Идеята му не е шлифована, основно я поддържа като идея в главата си и от там и хлопа структурираността.
Радвам се, че го (те) провокирах за да си до окомплектовам моите липсващи бръмки :)

Всеки скача на това което му липсва! Няма лошо, но глобално идеите са купчина - нищо! Няма значение на кой са!
Разковничето е в малките неща и в този дух ми се иска, естествено с Вашето съгласие, да почнем от крайъгълните камъни - да ги определим!
После, разбивка на всеки! Така и по посредствени програмисти като мен, да могат да структурират смислен код.

Апропо: Аз не ползвам вградените класове, само отделни фрагменти след пудрене, парфюмиране, оптимизиране. Повечето от нещата са направени да презентират езика, а не за реал трейдинг - поне на мен не ми допадат и на 90% си пиша сам кода. Е опитах се да приобщя 1-2-ма приятели, но леко, леко ме отсвириха... :)

Дайте предложения как да направим една добра спецификация и тук там с примерен код, вместо да си чешем езиците.
Като начало, само толкоз, колкото на всеки от нас му се откъсне от сърцето.

PS: Говорим за един автоматизиран на 99% мулти-маркет робот, необвързан от брокер! Който след като го стартираме първото нещо което да даде до колко този брокер става.

zezo
21.01.2021, 20:50
Според мен спредът не може да бъде индикатор на база на който да се взимат решения за тъговски операции, поради няколко причи:
1. Спредът зависи от брокера и по всяко време той може да изптрати към клиента каквато си поиска информация, следователно всяка една такава стратегия става податлива за управление за брокера, което не мился че е целта на задачата.
2. При така описаният подход можеш да ползваш спреда само за детектиране на евентуални по-големи движения или при фризване както казваш, но и в двата случая брокера го увеличава и през това време не е порепоръчително да се търгува, да не кажа забранено.
3. По-добре според мен е да се вкара правило в стратегията не търгувай ако спредът е по-голям от определена стойност.
4. Както каза алфаомега спреда не ти носи никакво ПМО

alphaomega
21.01.2021, 21:20
Според мен няма смисъл да се увличаш много много по детайлите и периферията на една система при положение че още нямаш никаква стабилна основа на ниво сигнали.
Периферията е най лесната част и тя се прави за да оптимизираш вече работеща система.

По това отношение Матеев подхожда правилно като първо мисли по основните идеи. Да сложни са нещата, но друг начин няма.
Концепцията е много интересна и наистина точно такова нещо мисля че не е правено. Или поне не е описано никъде да е правен такъв експеримент. Обсъждали сме я доста пъти идеята по различни форуми и постепенно се избистри тази последната версия описана в предните постове. Въпреки всичко аз честно казано все още не вярвам че от това нещо може да излезе пмо. На теория би трябвало да излезе нещо. Но.....понеже имам доста опит с форекс експериментите и знаейки колко е ефективен пазара надеждите ми не са големи.

Няколко пъти съм си мислил да я захвана тази концепция като мой проект и да го праграмирам изцяло дори и по нагрубо само за да проверя дали има потенциал в реални условия. Ама всеки път като се замисля колко много код ще трябва да се напише от нулата и нещо ми се губи ентусиазма. Последната ми идея я развивах близо една година, написах една камара код, десетки версии и в крайна сметка нищо не излезе от нея освен че за пореден път си доказах че пазара е супер ефективен.....и не пуска никакви стотинки :bigsmile:

А и имаме някой разминавания по отношение на начина по които трябва да се програмират системите за търговия. Матеев държи това да става изцяло с OOP пък аз си искам старомодните функции защото според мен са по ефективни за тези цели колкото и абсурно да звучи. ;)

Матеев също не е убеден че концепцията си струва усилията и затова все още я държи само на ниво идея без да я реализира. Иначе нищо не му пречи да наеме един екип от програмисти и да я реализира.

Mateev
21.01.2021, 21:30
Аз едно време също си играх със спреда, и дори написах индикатор за визуализацията му и за натрупване на статистика. Дори съм го публикувал в този форум:
http://fff.bg/showthread.php?t=4670

В общия случай обаче аз не мисля, че спреда може да се използва като източник на някаква прогностична информация. Той не само е различен при различните брокери, но е различен и при различните групи клиенти в рамките на един единствен брокер. Аз съм бил брокер и го знам това. Спреда при брокерите не се генерира от пазара, а от алгоритъм, в който някой програмист е вложил собственото си творчество. Този алгоритъм хвърля по едно око на пазара, но в повечето време регулира спреда непазарно така, щото да защити и обогати брокера и да обере доверчивите и нищо неподозиращи клиенти.

В нашия робот се интересуваме от спреда, но само до толкова, щото да не правим търговска операция в тиковете с висок спред. За да си изясним понятието "висок спред" се налага да си създадем собствена статистика за едно цяло денонощие на всеки един М5 бар в денонощието, за да си изясним каква цикличност и какви нива е заложил брокера в своя си алгоритъм. След това на базата на тази статистика решаваме какво ниво определяме за "висок спред" в дадения 5-минутен бар, и правим сделки само ако текущия тик е под това ниво.

Тази логика съм я реализирал в роботите на Strategy Quant, и тя работи при мене вече 2 години.

Mateev
21.01.2021, 21:41
....
Матеев също не е убеден че концепцията си струва усилията и затова все още я държи само на ниво идея без да я реализира. Иначе нищо не му пречи да наеме един екип от програмисти и да я реализира.

Два пъти пробвах с различни програмисти да започнем някаква съвместна разработка, но и двата пъти още в самото начало нещата се объркваха, защото имахме различни виждания как трябва да се реализира даденото нещо. От тука идва и основният проблем - или човек е шеф и плаща труда на програмиста, като така има правото да му наложи собственото си виждане за софтуера, или ако се прави опит за безплатно съвместно сътрудничество, то той се проваля поради разминаванията на мненията и липсата на възможност единия програмист да се наложи над другия.

Между другото с всеки, с който започна да работя съвместно, му слагам отделен сървър в публичното пространство, и му давам парола и Remote Control. И два съървъра от 2-3 години все още си стоят и чакат някой да започне да работи на тях.....:)

Като цяло стигнах до извода, че ако човек иска нещо да стане както са му вижданията, трябва да седне и да си го направи сам, а форумите остават само като място за споделяне на идеи и нищо повече. Дори и да се качи някакъв код във форума, най-вероятно никой няма да го ползва, и всеки ще предпочете да си го напише отново по неговия си начин.

Mateev
21.01.2021, 22:00
Според мен няма смисъл да се увличаш много много по детайлите и периферията на една система при положение че още нямаш никаква стабилна основа на ниво сигнали.
Периферията е най лесната част и тя се прави за да оптимизираш вече работеща система.

По това отношение Матеев подхожда правилно като първо мисли по основните идеи. Да сложни са нещата, но друг начин няма.
Концепцията е много интересна и наистина точно такова нещо мисля че не е правено. Или поне не е описано никъде да е правен такъв експеримент. Обсъждали сме я доста пъти идеята по различни форуми и постепенно се избистри тази последната версия описана в предните постове. Въпреки всичко аз честно казано все още не вярвам че от това нещо може да излезе пмо. На теория би трябвало да излезе нещо. Но.....понеже имам доста опит с форекс експериментите и знаейки колко е ефективен пазара надеждите ми не са големи.

Няколко пъти съм си мислил да я захвана тази концепция като мой проект и да го праграмирам изцяло дори и по нагрубо само за да проверя дали има потенциал в реални условия. Ама всеки път като се замисля колко много код ще трябва да се напише от нулата и нещо ми се губи ентусиазма. Последната ми идея я развивах близо една година, написах една камара код, десетки версии и в крайна сметка нищо не излезе от нея освен че за пореден път си доказах че пазара е супер ефективен.....и не пуска никакви стотинки :bigsmile:

А и имаме някой разминавания по отношение на начина по които трябва да се програмират системите за търговия. Матеев държи това да става изцяло с OOP пък аз си искам старомодните функции защото според мен са по ефективни за тези цели колкото и абсурно да звучи. ;)

Матеев също не е убеден че концепцията си струва усилията и затова все още я държи само на ниво идея без да я реализира. Иначе нищо не му пречи да наеме един екип от програмисти и да я реализира.

С тебе много пъти сме обсъждали идеите си по различните форуми, и в общия случай ти си наясно с тях. Но докато при старите си идеи аз вярвах (пък и ти вярваше), че ще успеем да намерим стабилна стратегия с високо ПМО, то сега вече разсъждавам малко по-различно. Вече не вярвам в намирането на стратегия с високо ПМО, въпреки че Strategy Quant ни подлъга, че такива стратегии има. Вярвам обаче, че има хиляди стратегии с малко ПМО, по-малко дори и от спреда, и сега се опитвам да обединя хилядите дребни ПМО-та и да получа едно по-голямо и по надеждно във времето ПМО.

Тоест няма да си поливам градината с пожарникарски маркуч, в който има вода в изобилие, а ще накарам облаците да пуснат дъжд с хиляди дребни капчици вода.

Моята нова концепция би се провалила само ако се окаже, че пазара е толкова много ефективен, щото да няма никакво отклонение от 50-те процента. Да, ама многобройните ми експерименти през годините доказват, че такива отклонения има много - буквално гъмжи от тях. Затова и моите усилия се насочиха към обединяването на тези хиляди дребни ПМО-та, още повече че експеримента с екселския файл недвусмислено доказа, че такова обединение (парламентаризъм) извлича високо ПМО от стотици дребни ПМО-та.

Между другото новата ми концепция не изключва старата, а само я развива на едно по-високо ниво. Нищо не ни пречи обаче в новата концепция да сложим стратегии от старата както на ниво парламент, така и на ниво сумаризатор. Тоест дори и нищо да не излезе от новата концепция, пак ще се сдобием с пълната автоматика на Money Management-a и на преразпределянето на капитала между отделните стратегии, какти и премащабирането, когато се теглят или се вкарват нови пари в акаунта.

Освен това добавянето на стратегии от стария тип вече ще става лесно и бързо - просто слагаме обект на техния клас в списъка със стратегии на сумаризатора, и той започва да се грижи за тях.

bvg
21.01.2021, 22:34
С тебе много пъти сме обсъждали идеите си по различните форуми, и в общия случай ти си наясно с тях. Но докато при старите си идеи аз вярвах (пък и ти вярваше), че ще успеем да намерим стабилна стратегия с високо ПМО, то сега вече разсъждавам малко по-различно. Вече не вярвам в намирането на стратегия с високо ПМО, въпреки че Strategy Quant ни подлъга, че такива стратегии има. Вярвам обаче, че има хиляди стратегии с малко ПМО, по-малко дори и от спреда, и сега се опитвам да обединя хилядите дребни ПМО-та и да получа едно по-голямо и по надеждно във времето ПМО.

Тоест няма да си поливам градината с пожарникарски маркуч, в който има вода в изобилие, а ще накарам облаците да пуснат дъжд с хиляди дребни капчици вода.

Моята нова концепция би се провалила само ако се окаже, че пазара е толкова много ефективен, щото да няма никакво отклонение от 50-те процента. Да, ама многобройните ми експерименти през годините доказват, че такива отклонения има много - буквално гъмжи от тях. Затова и моите усилия се насочиха към обединяването на тези хиляди дребни ПМО-та, още повече че експеримента с екселския файл недвусмислено доказа, че такова обединение (парламентаризъм) извлича високо ПМО от стотици дребни ПМО-та.

Между другото новата ми концепция не изключва старата, а само я развива на едно по-високо ниво. Нищо не ни пречи обаче в новата концепция да сложим стратегии от старата както на ниво парламент, така и на ниво сумаризатор. Тоест дори и нищо да не излезе от новата концепция, пак ще се сдобием с пълната автоматика на Money Management-a и на преразпределянето на капитала между отделните стратегии, какти и премащабирането, когато се теглят или се вкарват нови пари в акаунта.

Освен това добавянето на стратегии от стария тип вече ще става лесно и бързо - просто слагаме обект на техния клас в списъка със стратегии на сумаризатора, и той започва да се грижи за тях.

Здравей Матеев, За много години!

Последната седмица имах непреодолимо желание да покодя и едновременно с това и малко налично време.

Споделял съм, че използвам метод за оценка R^2 който решава много проблеми накуп, като оценка на дроудауна, колко постоянна е във времето дадена стратегия, дали са разпределени добре губещи спрямо печеливши сделки и някои други...

Досега не съм срещал софтуер който да оцени добре следния резултат: имаме 10 години хоризонтална линия с дроудаун под 1% и последната година правим 1000% печалба, или 1000% печалба първата година и след това 10 години нямаме сигнали за търговия. Всички тези недостатъци ги елиминирам с горепосочения метод и вадя стратегии които са близки до идеалните.

Както ти каза проблема е как ще се държат в бъдеще време, оказва се, че на повечето от тях показателите се развалят драстично още следващите 10 сделки, въпреки че сме имали 10-12 години перфектна графика преди това с няколко стотин сделки.

Както често обаче се случва най-гениалните открития се правят случайно. Бях допуснал една неточност за момента на вход. Тази неточност вкарваше една лека случайност в стратегията -/+10 пипса и се оказа, че стратегиите които оцеляват след това леко разкалибриране, са много по устойчиви в бъдеще време.

Пробвай ще се изненадаш! Вкарай някаква случайна величина за вход или изход. Примерно да излиза с минута закъснение или да влиза в сделка с минута закъснение. Това оказва влияние със случаен характер върху стратегията и след селекцията тези които са излезнали с добри показатели се оказват много хард кор.

Mateev
21.01.2021, 22:35
........
Понеже в момента съм на етап търсене и откриване на зависимости силно ме заинтресова този твой пост."Съществуват само 4 вида зависимости, така че ние точно и ясно знаем какво търсим и как трябва да го търсим." - моля за малко разяснения кои са тези 4 вида зависимости. Аз нарязах пазара на еднакви парчета 500 пункта всяко, приемам че това са и параметрите на всяка сделка стоп=таргет=500. Установих че при този тип разделяне на пазара на еднакви сегменти има зависимости в тяхната последователност, като например, при ЕВРО ДОЛАР комбинацията ↓↓↑↓ се е срещала 824 пъти, а комбинацията ↓↓↑↑ се е срещала 736 пъти, съответно когато срещенем комбинацията↓↓↑ отваряме къса позиция зашото по-вероятно е следващия бар да е ↓ отколкото ↑. Ако пусна Автокорелация по тези еднакви сегменти дали тя ще установи същото или ще излене нещо ново? Има ли друг начин за намиране на зависимости по така нарязания пазар на сегменти с еднакви големини?

Ти вече си чел за това - писал съм го в други форуми. Накратко:

1. Представяме си пазара като фрактално вложени сегменти един в друг.

2. Линейното представяне на пазара всъщност е един зиг-заг, нарисуван от тиковете.

3. Всяко едно сегментче от този зиг-заг е фрактално вложено в друг, по-голям ABC сегмент, който пък е вложен в още по-голям ABC сегмент и така докато стигнем до един единствен най-голям сегмент, определен от Highest High и Lowest Low на цялата история на финансовия инструмент.

4. От фракталноста на тези влагания един в друг можем да вадим информация за родителите и децата на текущия сегмент, като тука може да се извлече една доста добра прогностичност.

5. Писах го този софтуер преди поне 5-6 години, но той така и си остана като клас, който засега ми натрупва интересни статистики, които все още не съм ги влагал в търговията.

6. По-интересното е линейното разглеждане на зигзаците. Те също могат да се окрупняват на принципа на изхвърляне на сегменти, по-малки от даден размер. При тази операция не се губи нито един връх или дъно, а само се премахва зашумяването на графиката с дребни случайни движения.

7. Зависимостите, които могат да се търсят в един такъв зиг-заг са следните:

- ПО ДЪЛЖИНАТА - Средната дължина на всички сегменти е точно 2 единици при 50% вероятност. Ако по време на теста се открие, че е повече или по-малко, значи е намерена зависимост.

- ПО БРОЙКАТА - Дължината на сегментите при 50% вероятност се подчинява на правилото "Увеличаването на дължината с 1-ца намалява бройката на срещанията 2 пъти". Ако по време на теста се открие нещо друго, значи е намерена зависимост.

- ПО ПОДРЕДБАТА - Подредбата на сегментите е случайна при 50% вероятност. Тоест след сегмент с дължина N следват сегменти със случайна дължина, подчиняващи се на горните две точки. Ако се открие нещо друго, то тогава след сегмент с дължина N ще знаем дали да отворим Buy или SELL сделка.

- ПО ПАТЕРНИ - слиза се на ниво не цял сегмент, а единична стъпка. От N стъпки назад образуваме патерн, и след това изследваме пълната комбинаторика. Например ако стъпките назад са 6, то тогава ние имаме 64 различни патерна. За всеки един от тях натрупваме статистика за посоката на следващата стъпка. И ако тази статистика се различава от 50-те процента, значи знаем в каква посока да търгуваме при появата на даден патерн. Този е един от най-переспективните методи.

Това са четирите метода за търсене на зависимости. Всяка една зависимост, намерена на барово ниво с някаква комбинация от индикатори, всъщност представлява зависимост на това първичното зиг-заг ниво, която може да бъде детектирана с тези 4 метода.

Тъй като на това зиг-заг ниво зависимостите се откриват лесно и са унифицирани, то ако работим на него, ще си спестим милиарди и милиарди тестове, които трябва да направим на барово ниво. Тука на тиковото ниво обаче можем да се разминем само с няколко стотин теста (това защото трябва да обхванем всички мащаби на цените).

Mateev
21.01.2021, 23:02
Здравей Матеев, За много години!

Последната седмица имах непреодолимо желание да покодя и едновременно с това и малко налично време.

Споделял съм, че използвам метод за оценка R^2 който решава много проблеми накуп, като оценка на дроудауна, колко постоянна е във времето дадена стратегия, дали са разпределени добре губещи спрямо печеливши сделки и някои други...

Досега не съм срещал софтуер който да оцени добре следния резултат: имаме 10 години хоризонтална линия с дроудаун под 1% и последната година правим 1000% печалба, или 1000% печалба първата година и след това 10 години нямаме сигнали за търговия. Всички тези недостатъци ги елиминирам с горепосочения метод и вадя стратегии които са близки до идеалните.

Както ти каза проблема е как ще се държат в бъдеще време, оказва се, че на повечето от тях показателите се развалят драстично още следващите 10 сделки, въпреки че сме имали 10-12 години перфектна графика преди това с няколко стотин сделки.

Както често обаче се случва най-гениалните открития се правят случайно. Бях допуснал една неточност за момента на вход. Тази неточност вкарваше една лека случайност в стратегията -/+10 пипса и се оказа, че стратегиите които оцеляват след това леко разкалибриране, са много по устойчиви в бъдеще време.

Пробвай ще се изненадаш! Вкарай някаква случайна величина за вход или изход. Примерно да излиза с минута закъснение или да влиза в сделка с минута закъснение. Това оказва влияние със случаен характер върху стратегията и след селекцията тези които са излезнали с добри показатели се оказват много хард кор.

Това с вкарването на случаен елемент във входа и изхода като критерий да открием кои стратегии са по-устойчиви е интересна идея, в която има някакъв резон, но не трябва да вярваме сляпо, че тя ще изчисти всички проблеми с кървфитнатите стратегии.

Според мене подхода трябва да е друг, и аз мисля, че съм го реализирал в моята концепция. Защо си мисля така?

Представи си какво представляват историческите тестове - ами тестване на хиляди милиони или дори милиарди стратегии, и след това преценяване коя е била най-добрата. След това я вземаме и почваме оптимизации. Да, ама всичко това се прави ОТ ПОЗИЦИЯТА НА БЪДЕЩЕТО !!! Ами че тя и баба може така след като нещо вече се е случило, да каже дали е добро или лошо, и после да скочи в миналото и чрез оптимизации доброто да го направи още по-добро.

Номера е още преди да е дошло далечното бъдеще да си създадем представа как се представя дадената стратегия, и аз точно това правя в моята концепция, като тик по тик изчислявам вероятноста и на база на нея определям ММ на стратегията. Нито в един момент от време не гледам бъдещето, и след това да се връщам в миналото и да вземам решения от знанието си за бъдещето.

Затова и подхода е с пускане в търговия на толкова много стратегии - ами защото 99.9% от тях ще се окажат калпави, и моя метод за ММ ще ги принуди да търгуват с нула лота, тоест да не търгуват изобщо. В края на краищата пак постигам същия резултат - елиминирам хиляди стратегии и оставям да стигнат до реална търговия само единици от тях, но така със сигурност не гледам в бъдещето, което масово се прави от трейдерите при стандартния метод на ресърч.

Kosyo
21.01.2021, 23:07
Техника на сделката:

1. Аз ползвам задължително deviation или по-точно: Front & Back deviation. Защо? За кеф, защото се чудя как да си направя по сложно кодирането.

Когато сигналната функция (СФ) така ще я наричам за краткост, като няма значение дали е цял модул, клас или външен dll, подаде сигнал, то тоя сигнал е на база стойностите на Bid & Ask цените, които последно са стигнали до СФ, това съвсем не значи, че те са меродавни към този момент или по-късния на изпращане на ордера.
Да, но те са ключови за взимане на сигналното решението и спрямо тях е сметнат Volume-a (със съдействието на ММ), съответно единственият начин по който мога да се обвържа с тях и все пак да сключа сделка, е като ги наложа за цена на ордера, дам им толеранс и обозрим контрол чрез deviation, а не ползвам "новите" цени (ако има такива), защото както Volume ще ми изгърми при 100% ползване на инвестицията, така и сигнала ще ми бъде опорочен.
А дали сделката ще мине или поради промяна в цената ще бъде блокната от deviation-а е друг въпрос, но за мен това е правилното ако държа за достоверност на сигнала и искам останалите сметки да излезнат.

double _dSprNorm = _m.GetSpread(); // нормалния спред за този брокер

uint _nDevFront = (uint)round(_dSprNorm / _dPoint) + 1 >> 1; // deviation front - по посока на сигнала
uint _nDevBack = (uint)round(_dSprNorm / _dPoint); // deviation back
uint _nDeviation = _nDevFront + _nDevBack + 1 >> 1; // deviation




double _dPriceCorrection = (_nDeviation - _nDevFront) * _dPoint; // коректор на ордер цената, заради удоволствието от Front & Back deviation

Този код е просто като пример за връзката между спред-девиейшън, спред-сигнал, спред-волюм, спред-ордер_цена
кода е писан тук и не е "чист и порядъчен"

Kosyo
22.01.2021, 00:42
Сигналната функция или клас...

само едничка ми е! една е защото не работи с твърди упори за да се нуждае от хиляди параметрични копия, а търси модели, но не статични модели ами добре представили се патерни през последните 5-10 дни до 2 месеца назад от днешна дата.
как работи - уви не съм я завършил още, туко няма, няма и ми излезе някаква статистична зависимост (спредна например) и я зарязвам да реша новата статистика...

принципа на който съм се спрял:
ще ползвам Е/$ - за примерни стойности да не е отнесено

1. Входящите: тиков/20-30 сек/1 мин бар (тиков, сек бар - виртуален) се анализират за смислено отместване (над 3 до към 10 пипса профит или 5 до 20 спреда), т.е. + 1-1.5 спреда да покрие и самия спред
2. След като засече такова отместване, кодира патерна на последните п бара (п тика) в число, като в това число влизат и динамични показатели на патерна, при барове от 20 сек може да се съкрати динамиката
3. Тези патерни, въпреки че изглеждат безкрайно число, съвсем не са такова! смислените търговски ситуации са доста обозрими. След като се анализират последните 5- 10 дни, с връткане на въображаеми сделки по всеки един, му се гради Пред Рейтинг.
4. На база на този Пред Рейтинг се допускат до действителни сделки, резултата от които също се следи и от него получаваме Пост Рейтинга
5. В началото Пост Рейтинга е 1/п броя пазари в робота, но с времето се корегира и определя квотата капитал/пазар

В заключение - Патерните не са предварително зададени, а като открит исторически или съответно на живо - онлайн момент на потенциален профит.
Открива го функцията (сори, класа) в крачка.
Анализират се за успеваемост, основно в последните дни и който мине бариерата се ползва, пак оценява успеваемостта му за корекция на рейтингуването

Това е отгоре-отгоре сигналната функция
Аз го водя метод за търсене на печеливши модели, но след прочетеното, може да бъде представено като оценяване на безкрайно много системи - въпрос на изказ.

zezo
23.01.2021, 22:43
Благодаря за отговорите. Имам още няколко въпроса:
1. Ефекта на силата на парламентаризма ще го има ли ако на един акаунт пуснеме не корелиращи стратегии по различни финансови инструменти и ако на един и същ инструмент ги пуснеме на различни тайм ферймове или на различни по големина сегменти? Или важи само пир пускане на много стратегии само на един финансов инструмнет и на един и същ тайм фрейм?
2. Какво се случи със тестовете с Strategy Quant и защо ги спря, програмата не откриава стратегии с ПМО а само кърв фитнати стратегии ли?
3. Относно зависимостите, въпростът ми беше само за случая в който сме разделили пазара на еднакви по големина(дължина промерно 500 пункта) сегменти подредени един след друг (нивото на затваряне на предишния сегмент е равно на нивото на отваряне на следващия сегмент):
- В случай, че пазара е нарязан на еднакви по големина сегменти ПО ДЪЛЖИНА няма как да се търси, те са еднакво дълги. В същия случай - еднакви по големина сегменти ПО ПОДРЕДБАТА и ПО ПАТЕРНИ не е ли едно и също?
- Има ли някакъв начин да се определи колко би била бройката при 50% товата вероятност при определена големина на сегмента за даден финнасов инструмент (нещо на база АTR, можеби или делене на месечните и дневните барове по някакъв начин), при еднакви по големина сегменати за да може да се търси отклонение от тази стойност? За да можем да търсим зависимот и ПО БРОЙКАТА на сегментите.
Забелязъл съм, че при увеличаване на общата бройка на срещанията за дадена двойка (примерно ↓↓↑↓ и ↓↓↑↑ в сравнение с бройката на другите възможни комбинации с 4 поредни сегмента) се увеличава вероятността пазара да в тренд (тоест по вероятно е да видим ↓↓↑↑ отколкото ↓↓↑↓), а при намаляване на срещанията на бройката на на същата комбинация в сравнение с всички други възможни комбинации с 4 поредни сегмента сме в момент на противотрендов пазар (тоест по вероятно е да видим ↓↓↑↓ отколкото ↓↓↑↑).