tol64: Как и следовало ожидать, у каждого своя структура и понимание, как должно быть. ))
Именно, поэтому предлагаю забить на этот спор, т.к. все равно ни к какому консенсусу не придем. Предлагаю снова перейти к обсуждению общих принципов программирования больших проектов.
C-4: Нет, нет и еще раз нет!!!!!!!!!!!!!!!! По этой логике простой переворот стратегии на скользящей средней - это тоже MM. А что, был +1 контракт, а стал -1.
:)
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
C-4: Именно, поэтому предлагаю забить на этот спор, т.к. все равно ни к какому консенсусу не придем. Предлагаю снова перейти к обсуждению общих принципов программирования больших проектов.
Таки вроде и обсуждается как раз один из таких принципов. Применительно к трейдинговым проектам (к базовой логике их построения).
Вот так намного понятнее мысли рассматривать. Всё понятно даже без слов. А то эти бесконечные бла-бла-бла очень трудно усваиваться иногда. )) А после схемы можно уже и уточняющие вопросы задавать. У меня пока их нет. ))
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
Картинко. Стрелки показывают движение информации:
Ага, вижу. Только сложность никуда не далась, а делегировалась корректору рекомендаций и драйверу рынка. По этой схеме корректор должен копать историю торговли ТС и понимать за нее, в каком же состоянии она на самом деле. Драйвер же рынка по-прежнему должен правильно определить текущую позицию стратегии и скорректировать ее, а в неттинге, это ой как не просто.
Вот так намного понятнее мысли рассматривать. Всё понятно даже без слов. А то эти бесконечные бла-бла-бла очень трудно усваиваться иногда. )) А после схемы можно уже и уточняющие вопросы задавать. У меня пока их нет. ))
Вот вам и ответ нужно ли рисовать картинкО для понимания задачи :)
MetaDriver:
:)
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
Картинко. Стрелки показывают движение информации:
А хде там трал? так понимаю что в блоке ММ? ведь для него нужен прогнозатор направления
или всё же в драйвере рынка? ведь для трала нужна текущая поза.
Я бы ввёл ещё прогнозатор волатильности и пиханул ещё один блочёк корректор защитных стопов, именно защитных тк (имхо) выход по ТП или СЛ для нормальной ТС это форсмажор.
Вот вам и ответ нужно ли рисовать картинкО для понимания задачи :)
А хде там трал? так понимаю что в блоке ММ? ведь для него нужен прогнозатор направления
или всё же в драйвере рынка? ведь для трала нужна текущая поза.
Я бы ввёл ещё прогнозатор волатильности и пиханул ещё один блочёк корректор защитных стопов, именно защитных тк (имхо) выход по ТП или СЛ для нормальной ТС это форсмажор.
А потом еще и еще несколько блоков и понесется стратегия по кочкам... Если в самом начале возникают совершенно обоснованные вопросы в каком блоке описать одну часть стратегии, а какую в другом, то значит схема не однозначна, а это ведет известно к каким проблемам.
Раз уж начали рисовать схемы, вот вам моя улучшенная схемка. Надеюсь она будет понятней предыдущей:
ПРЕИМУЩЕСТВА
Модулей всего два.
Связи четко определены и однозначны
Торговой стратегией может быть любой класс, описывающий 4 метода
Описание всех правил всегда хранится в одном месте: классе торговой стратегии. Не надо бегать по всему проекту в поисках какого-нибудь "модуля волатильности"
Количество состояний стратегии является константой. Ни при каких правилах ТС, оно не может быть больше. Ни каких дополнительных модулей быть не может и они просто не нужны
Все общие сущности могут и должны быть описаны в базовом классе управления*.
*Так универсальное для всех стратегий правило "выход в конце торговой сессии" может быть описано в базовом классе. И если это правило установлено, то вместо того что бы в очередной раз вызвать метод сопровождения открытой позиции, описанной в классе стратегии, базовый класс вызовет метод сопровождения закрытие позиции в конце дня. И позиция принудительно закроется в нужное время, даже если базовая стратегия в своих правилах это не подразумевает.
Ага, вижу. Только сложность никуда не далась, а делегировалась корректору рекомендаций и драйверу рынка.
Это нормально. Цель была не в устранении объективных сложностей, а несоздавании новых.
По этой схеме корректор должен копать историю торговли ТС и понимать за нее, в каком же состоянии она на самом деле.
Мы же вроде выяснили уже что у ТС нет никакого состояния (памяти). Корректор тоже не обязан копать историю. Его вообще специально по вашей же просьбе воткнули в схему - я и без него прекрасно обхожусь.. ))
Драйвер же рынка по-прежнему должен правильно определить текущую позицию стратегии и скорректировать ее, а в неттинге, это ой как не просто.
:)
Мне надо на слово верить?
double CMarketDriver::GetCurrentPos(string Sym)
{
if(!PosInfo.Select(Sym)) return0; // DBL_MIN;double v=PosInfo.Volume();
return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
}
bool CMarketDriver::Synhronize(const SymbolPos &sp,int &Err)
{
Err=0;
bool res=true;
{
SymInfo.Name(sp.Sym);
SymInfo.Refresh();
double fp= TranslateLots(sp.Pos); // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
double cp=GetCurrentPos(sp.Sym);
double pos=fp-cp; // вычисляет разницу текущей и рекомендованной позы
if(pos>0.000001)
res=Trade.Buy(NolrmalizeLots(pos),sp.Sym); // "обналичивает разницу"
if(pos<-0.000001)
res=Trade.Sell(NolrmalizeLots(pos),sp.Sym); // "обналичивает разницу"
}
return res;
}
Как и следовало ожидать, у каждого своя структура и понимание, как должно быть. ))
Нет, нет и еще раз нет!!!!!!!!!!!!!!!! По этой логике простой переворот стратегии на скользящей средней - это тоже MM. А что, был +1 контракт, а стал -1.
:)
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
Картинко. Стрелки показывают движение информации:
Именно, поэтому предлагаю забить на этот спор, т.к. все равно ни к какому консенсусу не придем. Предлагаю снова перейти к обсуждению общих принципов программирования больших проектов.
...
Картинко. Стрелки показывают движение информации:
Вот так намного понятнее мысли рассматривать. Всё понятно даже без слов. А то эти бесконечные бла-бла-бла очень трудно усваиваться иногда. )) А после схемы можно уже и уточняющие вопросы задавать. У меня пока их нет. ))
:)
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
Картинко. Стрелки показывают движение информации:
Вот так намного понятнее мысли рассматривать. Всё понятно даже без слов. А то эти бесконечные бла-бла-бла очень трудно усваиваться иногда. )) А после схемы можно уже и уточняющие вопросы задавать. У меня пока их нет. ))
Вот вам и ответ нужно ли рисовать картинкО для понимания задачи :)
:)
Коллега попытался вам объяснить как можно с удобством структурировать советник. (Названия модулей конечно же условны.) Вместо того чтоб играться с терминологией (которая неважна) попробуйте заценить такой структурное разделение. Оно вполне удобно и продуктивно.
Картинко. Стрелки показывают движение информации:
А хде там трал? так понимаю что в блоке ММ? ведь для него нужен прогнозатор направления
или всё же в драйвере рынка? ведь для трала нужна текущая поза.
Я бы ввёл ещё прогнозатор волатильности и пиханул ещё один блочёк корректор защитных стопов, именно защитных тк (имхо) выход по ТП или СЛ для нормальной ТС это форсмажор.
Вот вам и ответ нужно ли рисовать картинкО для понимания задачи :)
А хде там трал? так понимаю что в блоке ММ? ведь для него нужен прогнозатор направления
или всё же в драйвере рынка? ведь для трала нужна текущая поза.
Я бы ввёл ещё прогнозатор волатильности и пиханул ещё один блочёк корректор защитных стопов, именно защитных тк (имхо) выход по ТП или СЛ для нормальной ТС это форсмажор.
Раз уж начали рисовать схемы, вот вам моя улучшенная схемка. Надеюсь она будет понятней предыдущей:
ПРЕИМУЩЕСТВА
*Так универсальное для всех стратегий правило "выход в конце торговой сессии" может быть описано в базовом классе. И если это правило установлено, то вместо того что бы в очередной раз вызвать метод сопровождения открытой позиции, описанной в классе стратегии, базовый класс вызовет метод сопровождения закрытие позиции в конце дня. И позиция принудительно закроется в нужное время, даже если базовая стратегия в своих правилах это не подразумевает.
Ага, вижу. Только сложность никуда не далась, а делегировалась корректору рекомендаций и драйверу рынка.
По этой схеме корректор должен копать историю торговли ТС и понимать за нее, в каком же состоянии она на самом деле.
Драйвер же рынка по-прежнему должен правильно определить текущую позицию стратегии и скорректировать ее, а в неттинге, это ой как не просто.
:)
Мне надо на слово верить?