На первое место сходу вылетел новичок рейтинга - ТС 543122 - перевороты по лимитным отложкам на пиках зигзага фунтофранка. Система запущена еще со середины ноября, но в рейтинг войти никак не могла. Но, за последнюю неделю совершено несколько удачных сделок, и система резко улучшила качество торговли, обогнав прошлого победителя.
киньте кусочком кода или индикатором на котором эти пики смотрите с кодом подключения его показаний, было бы очень интересно на него посмотреть в торгах.
У меня канальных вообще мало было ТС. На них не зарабатывал...
в смысле - "интуитивно" хлопотно, как Вы пишете, а не интуитивно ещё хлопотнее...
д а и если честно, на такую элементарщину также серьезные деньги страшно ставить... она сегодня работает после оптимизации - завтра - нет, да и сразу на реале может лить...
В принципе №1 понравился - канальная на лимитках, графики - чем-то чемпионат напомнили... :-)
Объем - это объем ИТОГОВЫЙ сделок ВСЕГО ПУЛА отобранных ТС.
Ну, понятно, что "интуитивно" - поглядел, думаешь, во, этого надо поставить. Поставил, а он - сливать начал. И грош цена моей "интуиции". Интуиция - это огромный опыт. У меня его нет. А значит, единственная возможность отбора - только четкие правила.
Насчет "ставить серьезные деньги на элементарщину"... ну, как я уже не раз говорил - несколько лет назад я занимался написанием очень сложного и неэлементарного эксперта, на ТС которого автор затратил не один год, а потом - я ее еще почти полгода кодировал. Ну и ?... Сперва эксперт начал было зарабатывать, а буквально через пару месяцев - начал сливать, и слил все, что заработал.
Вот теперь и посуди сам - да любая "элементарщина" может работать точно так же - один-другой месяц давать неплохую прибыль, а потом - начать сливать. И какой смысл после этого в не-элементарщине ? После того эипзода - я и пришел к выводу, что надо создать "футбольную лигу", и отбирать "игроков", а не "бегать по полю с мячом" самостоятельно. Сейчас - у меня постоянно есть МНОГО систем, которые показывают неплохие результаты. И основной вопрос теперь у меня не "что делать, чтобы ТС работала", а "как выбрать из ТС, которые работают, таких, которые еще некоторое время будут работать".
Насчет объема - у меня сейчас на "контрольном" центовике 1000 центов работает шесть ТС. И некоторые даже открываются объемом 0,02. Так что я не думаю, что здесь возможны какие-то проблемы.
киньте кусочком кода или индикатором на котором эти пики смотрите с кодом подключения его показаний, было бы очень интересно на него посмотреть в торгах.
У меня канальных вообще мало было ТС. На них не зарабатывал...
Боюсь, в моем коде тебе (давай на "ты") будет непросто разобраться. Мой код - это целая библиотека из нескольки тысяч файлов.
Скажем, вот функция OnRefresh() главного шаблона, от которого пронаследованы все 672 ТС, именно она отвечает за принятие решения:
EEAWorkRetcode CBinder_EPFT::OnRefresh(datetime dtCurMoment)
{
m_asTradeOperationInfo.Clear();
EEAWorkRetcode wrRes = CEAPartsFactoryT::OnRefresh(dtCurMoment);
if(wrRes != WR_SUCCEEDED)
{
_AddTOInfo("Ошибка CEAPartsFactoryT::OnRefresh() ! Код: ",(int)wrRes);
return(wrRes);
};
// Проверим, возможно, надо срочно выходить из позиции ? if(m_bNeedExit)
{
_SetExit();
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
};
// Установим флаги рабочего времени.bool bWorkTime = _IsWorkTime(dtCurMoment);
bool bNearWeekEnd = _IsNearWeekEnd(dtCurMoment,HOURS_TO_WEEKEND_EXIT);
// Разрешим трейлинг в рабочее время
_SetTrailingPermition(bWorkTime);
// Проведем входы, если сейчас рабочее время и не конец недели.if((bWorkTime == true) && (bNearWeekEnd == false))
{
// Проверим возможность входа, и войдем, если надо.
m_dCurTruePrice = _GetTruePrice();
m_tdSignal = TD_FLAT;
datetime dtCurBarTime = CTimeSeriesT::GetStartMomentOfBar(dtCurMoment,m_didData.m_etWorkTimeFrame);
if(m_dtGetSignalMoment < dtCurBarTime)
{
m_tdSignal = _GetSignal();
m_dtGetSignalMoment = dtCurBarTime;
};
_SetEnter(_IsTrendSystem(),dtCurMoment);
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
}; // if(bWorkTime == true && bNearWeekEnd == false)// В этой точке - либо рабочее время закончено, либо уже конец недели// Получим число компонент позицииuint uiNumOfTPC = GetCurrentPosition().GetTotalComponents();
// Закончим обработку, если компонент нетif(uiNumOfTPC == NULL)
{
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
};
// В этой точке - либо рабочее время закончено, либо конец недели, и есть компоненты позиции // Проверим, может конец недели и надо выходить ? if((bNearWeekEnd == true) && (m_bMustExitOnWeekEnd == true))
{
TRACE("Есть компоненты позиции, сейчас конец недели, и требуется выходить");
_SetExit();
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
};
// Проверим, может быть конец рабочего времени, и надо выходить ? if((bWorkTime == false) && (m_bMustExitOnWorkEnd == true))
{
TRACE("Есть компоненты позиции, сейчас конец рабочего времени, и требуется выходить");
_SetExit();
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
};
_TellTradeOperationInfo();
return(WR_SUCCEEDED);
};
В функции _GetSignal() в наследниках и решается возможность входа.
Вот, скажем, эта функция для всех канальных ТС (там, в зависимости от системы вызваются функции для тренда или флета):
ETrendDirection CPriceChannel_Binder_EPFT::_GetSignal()
{
ETrendDirection tdSignal = TD_FLAT;
if(_IsTrendSystem())
tdSignal = _GetTrendSignal();
else
tdSignal = _GetFlatSignal();
_AddTOInfo("Сигнал: ",(int)tdSignal);
return(tdSignal);
};
ETrendDirection CPriceChannel_Binder_EPFT::_GetTrendSignal()
{
#ifdef ASSERTION_CODE_ON
datetime dtCurTime = m_tcContainer.Time(1);
#endif // ASSERTION_CODE_ON// Получим границы каналаdouble dCurHi = m_tcContainer.High(1);
double dPrevHiBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::HI_BOUND_BUFF);
double dCurLo = m_tcContainer.Low(1);
double dPrevLoBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::LO_BOUND_BUFF);
_AddTOInfo("Time(1): ",m_tcContainer.Time(1));
_AddTOInfo("High(1): ",dCurHi);
_AddTOInfo("Lo(1): ",dCurLo);
_AddTOInfo("HiBound(2): ",dPrevHiBound);
_AddTOInfo("LoBound(2): ",dPrevLoBound);
// Проверим, возможно, пробоя канала нет ? if(dCurHi <= dPrevHiBound && dCurLo >= dPrevLoBound)
{
_AddTOInfo("Сигнала нет.");
return(TD_FLAT);
};
// Проверим, возможно, пробой с обоих сторон ? if(dCurHi > dPrevHiBound && dCurLo < dPrevLoBound)
{
TRACE_INTEGER("Пробой канала с обоих сторон ! Сигнала нет. Магик: ",GetMagic());
return(TD_FLAT);
};
// Пробой в одну сторону. if(dCurHi > dPrevHiBound)
{
// Пробой вверх.
_AddTOInfo("Пробой вверх. Сигнал в лонг !");
return(TD_UP);
};
// Пробой вниз.
_AddTOInfo("Пробой вниз. Сигнал в шорт !");
return(TD_DOWN);
};
ETrendDirection CPriceChannel_Binder_EPFT::_GetFlatSignal()
{
datetime dtCurTime = m_tcContainer.Time(1);
// Отбой вниз - это момент, когда High(1) < High(2) && High(2) + PricePoint >= HiBound// Отбой вверх - это момент, когда Low(1) > Low(2) && Low(2) - PricePoint <= LoBound// Получим границы канала на втором баре (у нас должен произойти отбойdouble dCurHi = m_tcContainer.High(1);
double dPrevHi = m_tcContainer.High(2);
double dPrevHiBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::HI_BOUND_BUFF);
double dCurLo = m_tcContainer.Low(1);
double dPrevLo = m_tcContainer.Low(2);
double dPrevLoBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::LO_BOUND_BUFF);
_AddTOInfo("Time(1): ",m_tcContainer.Time(1));
_AddTOInfo("High(1): ",dCurHi);
_AddTOInfo("High(2): ",dPrevHi);
_AddTOInfo("Lo(1): ",dCurLo);
_AddTOInfo("Lo(2): ",dPrevLo);
_AddTOInfo("HiBound(2): ",dPrevHiBound);
_AddTOInfo("LoBound(2): ",dPrevLoBound);
bool bHiBreakback = false;
bool bLoBreakback = false;
if(dCurHi < dPrevHi && dPrevHi + m_psiWorkSymbol.GetPointPrice() >= dPrevHiBound)
bHiBreakback = true;
if(dCurLo > dPrevLo && dPrevLo - m_psiWorkSymbol.GetPointPrice() <= dPrevLoBound)
bLoBreakback = true;
// Проверим, возможно, отбоя не было, или были сразу два отбоя ? if(bHiBreakback == bLoBreakback)
{
_AddTOInfo("Сигнала нет.");
return(TD_FLAT);
};
TRACE_DATETIME("Time(1): ",m_tcContainer.Time(1));
// Проверим, возможно, пробой с обоих сторон ? // Пробой в одну сторону. if(bHiBreakback)
{
// Был отбой вниз
_AddTOInfo("Отбой вниз. Сигнал в шорт !");
return(TD_DOWN);
};
// Был отбой вверх.
_AddTOInfo("Отбой вверх. Сигнал в лонг !");
return(TD_UP);
};
Для работы используется указатель на интерфейс Прайс-Ченела, он при инициализации получается от Дата-провайдера:
То есть, мы создаем объект параметров прайс-ченнела, и запрашиваем у дата-провайдера указатель на интерфейс этого индикатора.
Дата-провайдер смотрит, и если такой индикатор еще не создан создает его, и возвращает указатель. Вот этот код:
CIndicatorI* CDataProviderT::GetIndicator(CIndicatorParametersI* pipIndicatorParameters,uint uiMinBufferSize,bool bLoadData)
{
ASSERT_MYPOINTER(pipIndicatorParameters);
ASSERT(uiMinBufferSize > 0);
CIndicatorI* piResult = NULL;
int iIndIdx = WRONG_VALUE;
// Поищем нужный индикаторif(_FindWithResizeIndicator(pipIndicatorParameters,uiMinBufferSize,iIndIdx) == true)
{
// Индикатор найден, и его размер подходит.
ASSERT(iIndIdx < m_aoIndicators.Total());
piResult = m_aoIndicators.At(iIndIdx);
ASSERT_MYPOINTER(piResult);
}
else
{
// Индикатор не найден. // Проверим, возможно произошла ошибка инициализации ? if(iIndIdx != WRONG_VALUE)
{
ASSERT_DSC(false,"Внимание ! Индикатор существует, однако, не удалось изменить размер его буффера !");
TRACE_INTEGER("Тип индикатора: ",pipIndicatorParameters.GetIndicatorType());
TRACE_INTEGER("Желаемый размер буффера: ",uiMinBufferSize);
return(NULL);
};
// Индикатора действительно нет. // Попытаемся его создать.
piResult = _CreateIndicator(pipIndicatorParameters,uiMinBufferSize);
ASSERT_MYPOINTER_OR_NULL(piResult);
if(piResult == NULL)
{
ASSERT_DSC(false,"Внимание ! Не удалось создать индикатор !");
TRACE_INTEGER("Тип индикатора: ",pipIndicatorParameters.GetIndicatorType());
TRACE_INTEGER("Желаемый размер буффера: ",uiMinBufferSize);
return(NULL);
};
// Индикатор успешно создан. // Отобразим его на чарте, если это необходимо. if(piResult.NeedLaunchOnMT5VisualTester()==true && _IsWorkInVisualTester() && _GetMainTimeframe() == piResult.GetIndicatorTimeframe())
{
if(_AddIndicatorToChart(piResult,true) != true)
{
ASSERT_DSC(false,"Внимание ! Не удалось отобразить вновь созданный индикатор на чарте !");
TRACE_INTEGER("Тип индикатора: ",piResult.GetIndicatorType());
};
};
};
// В этой точке индикатор либо найден, либо успешно создан.// Возможно, надо загрузить в него данные ? if(bLoadData)
if(piResult.Refresh()!=true)
{
ASSERT_DSC(false,"Внимание ! Не удалось обновить данные индикатора !");
TRACE_INTEGER("Тип индикатора: ",pipIndicatorParameters.GetIndicatorType());
TRACE_INTEGER("Желаемый размер буффера: ",uiMinBufferSize);
};
return(piResult);
};
Таким образом - "все за все" цепляется, и отдельно показать можно лишь участок кода, как здесь. Работать он, понятное дело, не будет.
Но, для интересующихся я могу дать инвест-пароль счета, на котором работает Лига ТС (там три счета, по числу дивизионов - высший, средний и низший). Там надо мониторить сделки по нужному магику (поскольку на одном счете сразу более сотни магиков). Если это по силам - никаких проблем, напишу в приват инвест-пароль. Собирая сделки по нужному магику - ты сможешь построить такие же графики, как я тут представляю.
Сейчас - у меня постоянно есть МНОГО систем, которые показывают неплохие результаты. И основной вопрос теперь у меня не "что делать, чтобы ТС работала", а "как выбрать из ТС, которые работают, таких, которые еще некоторое время будут работать".
А у меня, вместо МНОГИХ, только ДВЕ ТС, одна для лонгов, другая для шортов, а вопрос выбора, которая из них и когда будет работать, тот же, к сожалению, точного ответа на него ни у кого нет и никогда не будет.
А у меня, вместо МНОГИХ, только ДВЕ ТС, одна для лонгов, другая для шортов, а вопрос выбора, которая из них и когда будет работать, тот же, к сожалению, точного ответа на него ни у кого нет и никогда не будет.
По опыту Лиги ТС - вероятность, что ТС перестанет работать равна 1% в день. Две системы - слишком мало, вероятность, что они перестанут работать обе в течении пары месяцев - в районе 70%.
И что ты будешь делать дальше ?
Как раз я очень хорошо помню свое состояние, когда эксперт, над которым я работал больше полугода (а до этого - несколько лет разрабатывалась ТС) - начал сливать. Я был совершенно обескуражен, и не понимал, что делать.
Сейчас, когда есть куча работающих ТС - ситуация совсем другая. Перестала ТС работать - неприятно. Ну и хрен с ней, придется поставить другую. Жаль, я ее сразу не поставил. Внутренний комфорт куда больше.
Это конечно круто. Но мне как-то в целом привычней видеть в виде сигнала результаты работы систем(ы).
Зашёл, глянул на график, - ага, есть результат. А что там Георгий пишет в теме? Как комментирует.
А без живого сигнала всё не так, всё не то.
Могу понять, что сигнала нет, если ваши стратегии пока не показывают хоть каких-то удобоваримых результатов.
Но вроде как в вашем отчёте показатели неплохие.
Не понимаю, что мешает поставить на реал пяток лучших стратегий и здесь замониторить в виде публичного сигнала.
И мне привычнее сигнал. Кто ж спорит ? Но не могу ж я у себя открыть 672 терминала, 672 счета, 672 сигнала...
Я уже неоднократно говорил - передо мной постоянно стоит вопрос отбора устойчивых ТС. Вот, я беру систему, вроде она работает... Но чуть ставлю ее на отдельный счет - а она - бац... и перестает работать, начинает показывать убыток (везде, и на отдельном счету, и на демо), выбывает из рейтинга...
Как предложишь отбирать системы-то ? Вот, скажем, многие среди лучших ТС - это системы "обратного трейлинга", когда СЛ не выставляется, а трейлится ТП. Поведение этих систем очень напоминает мартиновское. Я уже несколько раз пытался ставить их на отдельный счет - результат постоянно один и тот же. Несколько сделок хороших, потом неугаданный тренд, и огромный убыток.
Вопрос отбора сейчас - у меня самый трудный и нерешенный.
Предложи, как по-твоему надо отбирать системы для сигнала ? И открою сигнал.
Ситуация на текущий момент ...
На первое место сходу вылетел новичок рейтинга - ТС 543122 - перевороты по лимитным отложкам на пиках зигзага фунтофранка. Система запущена еще со середины ноября, но в рейтинг войти никак не могла. Но, за последнюю неделю совершено несколько удачных сделок, и система резко улучшила качество торговли, обогнав прошлого победителя.
киньте кусочком кода или индикатором на котором эти пики смотрите с кодом подключения его показаний, было бы очень интересно на него посмотреть в торгах.
У меня канальных вообще мало было ТС. На них не зарабатывал...
в смысле - "интуитивно" хлопотно, как Вы пишете, а не интуитивно ещё хлопотнее...
д а и если честно, на такую элементарщину также серьезные деньги страшно ставить... она сегодня работает после оптимизации - завтра - нет, да и сразу на реале может лить...
В принципе №1 понравился - канальная на лимитках, графики - чем-то чемпионат напомнили... :-)
Объем - это объем ИТОГОВЫЙ сделок ВСЕГО ПУЛА отобранных ТС.
Ну, понятно, что "интуитивно" - поглядел, думаешь, во, этого надо поставить. Поставил, а он - сливать начал. И грош цена моей "интуиции". Интуиция - это огромный опыт. У меня его нет. А значит, единственная возможность отбора - только четкие правила.
Насчет "ставить серьезные деньги на элементарщину"... ну, как я уже не раз говорил - несколько лет назад я занимался написанием очень сложного и неэлементарного эксперта, на ТС которого автор затратил не один год, а потом - я ее еще почти полгода кодировал. Ну и ?... Сперва эксперт начал было зарабатывать, а буквально через пару месяцев - начал сливать, и слил все, что заработал.
Вот теперь и посуди сам - да любая "элементарщина" может работать точно так же - один-другой месяц давать неплохую прибыль, а потом - начать сливать. И какой смысл после этого в не-элементарщине ? После того эипзода - я и пришел к выводу, что надо создать "футбольную лигу", и отбирать "игроков", а не "бегать по полю с мячом" самостоятельно. Сейчас - у меня постоянно есть МНОГО систем, которые показывают неплохие результаты. И основной вопрос теперь у меня не "что делать, чтобы ТС работала", а "как выбрать из ТС, которые работают, таких, которые еще некоторое время будут работать".
Насчет объема - у меня сейчас на "контрольном" центовике 1000 центов работает шесть ТС. И некоторые даже открываются объемом 0,02. Так что я не думаю, что здесь возможны какие-то проблемы.
киньте кусочком кода или индикатором на котором эти пики смотрите с кодом подключения его показаний, было бы очень интересно на него посмотреть в торгах.
У меня канальных вообще мало было ТС. На них не зарабатывал...
Боюсь, в моем коде тебе (давай на "ты") будет непросто разобраться. Мой код - это целая библиотека из нескольки тысяч файлов.
Скажем, вот функция OnRefresh() главного шаблона, от которого пронаследованы все 672 ТС, именно она отвечает за принятие решения:
В функции _GetSignal() в наследниках и решается возможность входа.
Вот, скажем, эта функция для всех канальных ТС (там, в зависимости от системы вызваются функции для тренда или флета):
ETrendDirection CPriceChannel_Binder_EPFT::_GetSignal() { ETrendDirection tdSignal = TD_FLAT; if(_IsTrendSystem()) tdSignal = _GetTrendSignal(); else tdSignal = _GetFlatSignal(); _AddTOInfo("Сигнал: ",(int)tdSignal); return(tdSignal); }; ETrendDirection CPriceChannel_Binder_EPFT::_GetTrendSignal() { #ifdef ASSERTION_CODE_ON datetime dtCurTime = m_tcContainer.Time(1); #endif // ASSERTION_CODE_ON // Получим границы канала double dCurHi = m_tcContainer.High(1); double dPrevHiBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::HI_BOUND_BUFF); double dCurLo = m_tcContainer.Low(1); double dPrevLoBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::LO_BOUND_BUFF); _AddTOInfo("Time(1): ",m_tcContainer.Time(1)); _AddTOInfo("High(1): ",dCurHi); _AddTOInfo("Lo(1): ",dCurLo); _AddTOInfo("HiBound(2): ",dPrevHiBound); _AddTOInfo("LoBound(2): ",dPrevLoBound); // Проверим, возможно, пробоя канала нет ? if(dCurHi <= dPrevHiBound && dCurLo >= dPrevLoBound) { _AddTOInfo("Сигнала нет."); return(TD_FLAT); }; // Проверим, возможно, пробой с обоих сторон ? if(dCurHi > dPrevHiBound && dCurLo < dPrevLoBound) { TRACE_INTEGER("Пробой канала с обоих сторон ! Сигнала нет. Магик: ",GetMagic()); return(TD_FLAT); }; // Пробой в одну сторону. if(dCurHi > dPrevHiBound) { // Пробой вверх. _AddTOInfo("Пробой вверх. Сигнал в лонг !"); return(TD_UP); }; // Пробой вниз. _AddTOInfo("Пробой вниз. Сигнал в шорт !"); return(TD_DOWN); }; ETrendDirection CPriceChannel_Binder_EPFT::_GetFlatSignal() { datetime dtCurTime = m_tcContainer.Time(1); // Отбой вниз - это момент, когда High(1) < High(2) && High(2) + PricePoint >= HiBound // Отбой вверх - это момент, когда Low(1) > Low(2) && Low(2) - PricePoint <= LoBound // Получим границы канала на втором баре (у нас должен произойти отбой double dCurHi = m_tcContainer.High(1); double dPrevHi = m_tcContainer.High(2); double dPrevHiBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::HI_BOUND_BUFF); double dCurLo = m_tcContainer.Low(1); double dPrevLo = m_tcContainer.Low(2); double dPrevLoBound = m_ppcPriceChannel.GetValue(2,CPriceChannel::LO_BOUND_BUFF); _AddTOInfo("Time(1): ",m_tcContainer.Time(1)); _AddTOInfo("High(1): ",dCurHi); _AddTOInfo("High(2): ",dPrevHi); _AddTOInfo("Lo(1): ",dCurLo); _AddTOInfo("Lo(2): ",dPrevLo); _AddTOInfo("HiBound(2): ",dPrevHiBound); _AddTOInfo("LoBound(2): ",dPrevLoBound); bool bHiBreakback = false; bool bLoBreakback = false; if(dCurHi < dPrevHi && dPrevHi + m_psiWorkSymbol.GetPointPrice() >= dPrevHiBound) bHiBreakback = true; if(dCurLo > dPrevLo && dPrevLo - m_psiWorkSymbol.GetPointPrice() <= dPrevLoBound) bLoBreakback = true; // Проверим, возможно, отбоя не было, или были сразу два отбоя ? if(bHiBreakback == bLoBreakback) { _AddTOInfo("Сигнала нет."); return(TD_FLAT); }; TRACE_DATETIME("Time(1): ",m_tcContainer.Time(1)); // Проверим, возможно, пробой с обоих сторон ? // Пробой в одну сторону. if(bHiBreakback) { // Был отбой вниз _AddTOInfo("Отбой вниз. Сигнал в шорт !"); return(TD_DOWN); }; // Был отбой вверх. _AddTOInfo("Отбой вверх. Сигнал в лонг !"); return(TD_UP); };Для работы используется указатель на интерфейс Прайс-Ченела, он при инициализации получается от Дата-провайдера:
EEAWorkRetcode CPriceChannel_Binder_EPFT::Init(CDataProviderI* pdpDataProvider,CCPRList* pcrlEATradeRequestsQueue) { EEAWorkRetcode wrRes = CDATR_Binder_EPFT::Init(pdpDataProvider,pcrlEATradeRequestsQueue); if(wrRes != WR_SUCCEEDED) return(wrRes); RETURN_IF_FALSE(m_tcContainer.Init(pdpDataProvider,m_didData.m_csWorkSymbol,ALL_SERIES_EXCEPT_REALVOLUME,m_didData.m_etWorkTimeFrame,_GetCannelPeriod())); CPriceChannel_IParams pcpParams; pcpParams.SetCommonParameters(m_didData.m_csWorkSymbol,m_didData.m_etWorkTimeFrame,_GetCannelPeriod(),true); TRACE_INTEGER("Устанавливаем Price Cannel, с периодом: ",pcpParams.GetIndicatorPeriod()); m_ppcPriceChannel = pdpDataProvider.GetIndicator(GetPointer(pcpParams)); if(m_ppcPriceChannel == NULL) return(WR_CANT_CREATE_INDICATOR); return(WR_SUCCEEDED); };То есть, мы создаем объект параметров прайс-ченнела, и запрашиваем у дата-провайдера указатель на интерфейс этого индикатора.
Дата-провайдер смотрит, и если такой индикатор еще не создан создает его, и возвращает указатель. Вот этот код:
Таким образом - "все за все" цепляется, и отдельно показать можно лишь участок кода, как здесь. Работать он, понятное дело, не будет.
Сейчас - у меня постоянно есть МНОГО систем, которые показывают неплохие результаты. И основной вопрос теперь у меня не "что делать, чтобы ТС работала", а "как выбрать из ТС, которые работают, таких, которые еще некоторое время будут работать".
А у меня, вместо МНОГИХ, только ДВЕ ТС, одна для лонгов, другая для шортов, а вопрос выбора, которая из них и когда будет работать, тот же, к сожалению, точного ответа на него ни у кого нет и никогда не будет.
А у меня, вместо МНОГИХ, только ДВЕ ТС, одна для лонгов, другая для шортов, а вопрос выбора, которая из них и когда будет работать, тот же, к сожалению, точного ответа на него ни у кого нет и никогда не будет.
По опыту Лиги ТС - вероятность, что ТС перестанет работать равна 1% в день. Две системы - слишком мало, вероятность, что они перестанут работать обе в течении пары месяцев - в районе 70%.
И что ты будешь делать дальше ?
Как раз я очень хорошо помню свое состояние, когда эксперт, над которым я работал больше полугода (а до этого - несколько лет разрабатывалась ТС) - начал сливать. Я был совершенно обескуражен, и не понимал, что делать.
Сейчас, когда есть куча работающих ТС - ситуация совсем другая. Перестала ТС работать - неприятно. Ну и хрен с ней, придется поставить другую. Жаль, я ее сразу не поставил. Внутренний комфорт куда больше.
Георгий, куда мониторинг делся?
Тема есть, а за результатами не понаблюдаешь.
Не интересно.
Георгий, куда мониторинг делся?
Тема есть, а за результатами не понаблюдаешь.
Не интересно.
То есть как "куда" ???
А ЭТО что ?
Отчет за 10.12.18 - позавчерашний. И графики пяти лучших, и таблица по двадцатке лучших, и мое краткое резюме.
То есть как "куда" ???
А ЭТО что ?
Отчет за 10.12.18 - позавчерашний. И графики пяти лучших, и таблица по двадцатке лучших, и мое краткое резюме.
Это конечно круто. Но мне как-то в целом привычней видеть в виде сигнала результаты работы систем(ы).
Зашёл, глянул на график, - ага, есть результат. А что там Георгий пишет в теме? Как комментирует.
А без живого сигнала всё не так, всё не то.
Могу понять, что сигнала нет, если ваши стратегии пока не показывают хоть каких-то удобоваримых результатов.
Но вроде как в вашем отчёте показатели неплохие.
Не понимаю, что мешает поставить на реал пяток лучших стратегий и здесь замониторить в виде публичного сигнала.
Это конечно круто. Но мне как-то в целом привычней видеть в виде сигнала результаты работы систем(ы).
Зашёл, глянул на график, - ага, есть результат. А что там Георгий пишет в теме? Как комментирует.
А без живого сигнала всё не так, всё не то.
Могу понять, что сигнала нет, если ваши стратегии пока не показывают хоть каких-то удобоваримых результатов.
Но вроде как в вашем отчёте показатели неплохие.
Не понимаю, что мешает поставить на реал пяток лучших стратегий и здесь замониторить в виде публичного сигнала.
И мне привычнее сигнал. Кто ж спорит ? Но не могу ж я у себя открыть 672 терминала, 672 счета, 672 сигнала...
Я уже неоднократно говорил - передо мной постоянно стоит вопрос отбора устойчивых ТС. Вот, я беру систему, вроде она работает... Но чуть ставлю ее на отдельный счет - а она - бац... и перестает работать, начинает показывать убыток (везде, и на отдельном счету, и на демо), выбывает из рейтинга...
Как предложишь отбирать системы-то ? Вот, скажем, многие среди лучших ТС - это системы "обратного трейлинга", когда СЛ не выставляется, а трейлится ТП. Поведение этих систем очень напоминает мартиновское. Я уже несколько раз пытался ставить их на отдельный счет - результат постоянно один и тот же. Несколько сделок хороших, потом неугаданный тренд, и огромный убыток.
Вопрос отбора сейчас - у меня самый трудный и нерешенный.
Предложи, как по-твоему надо отбирать системы для сигнала ? И открою сигнал.