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);
};
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);
};
目前的情况是...
评级中的新人--TS 543122--在限价单上翻转的英镑-弗兰克人字形山峰移至首位。该系统于11月中旬启动,但未能达到评级。但是,在上个星期,有几笔成功的交易,该系统极大地提高了交易质量,超过了上一个冠军。
如果你没有进入评级,在交易中看一下会非常有趣。
我根本没有大量的TC与通道的。没有在他们身上赚到任何钱......。
我的意思是 "直觉上 "很麻烦,就像你写的那样,但非直觉上更麻烦......。
说实话,在这种初级的东西上赌大钱也是很可怕的......。今天它在优化后工作--明天它可能不工作,甚至可能倒在真正的......
原则上我喜欢1号--频道上的限制,图表--让我想起了冠军...。:-)
交易量是指所选TS的整个PULSE的总交易量。
嗯,很明显,"直觉"--你看着它,认为它应该被放置。我把它穿上,它开始下沉。而我的 "直觉 "却毫无价值。直觉是大量的经验。我没有。这意味着选择的唯一方法是有明确的规则。
关于 "把严重的钱放在初级的东西上"......嗯,我已经说过好几次了--几年前我写了一个非常复杂的非初级的专家顾问,作者在TS上花了一年多的时间,然后--我又编了差不多六个月的代码。还有......起初,专家顾问开始赚钱,就在几个月后,它开始沉沦,我失去了所有的收入。
现在自己判断一下--任何 "初级 "产品都可能以同样的方式工作--在一两个月内,它将提供良好的利润,然后它开始失败。此后,非基本的东西有什么用?在那段插曲之后--我得出的结论是,我们需要创建一个 "足球联盟",并选择 "球员",而不是自己 "带着球在球场上跑来跑去"。现在--我有很多系统一直表现良好。而我现在的主要问题不是 "如何做才能让TS发挥作用",而是 "如何从发挥作用的TS中选择还能工作一段时间的"。
至于数量--我现在有六个TS在 "控制 "1000美分的工作。而有些甚至以0.02的成交量开盘。所以我认为这里不可能有任何问题。
抛出一段代码或一个指标,在其上查看这些峰值与其读数的连接代码,在交易中查看它将是非常有趣的。
我根本就没有什么渠道TS。没有在他们身上赚到任何钱......。
我担心我的代码会让你(姑且称为 "你")难以理解。我的代码是一个由几千个文件组成的整体库。
说,这里是主模板的OnRefresh()函数,所有672个TC都继承自这个函数,它负责做出决定。
后裔中的_GetSignal()函数是决定输入的地方。
这里说的是,这个函数是针对所有通道TS的(根据系统的不同,那里的函数是 针对趋势或平坦而调用)。
Price-Chenel接口的指针用于工作,它是在初始化期间从数据提供者那里收到的。
也就是说,我们创建一个价格通道的参数对象,并向数据提供者请求一个指向该指标接口的指针。
dataprovider寻找,如果这样的指标还没有被创建,就创建它,并返回指针。下面是这个代码。
因此--"一切为了一切 "被钩住了,只有一段代码,像这里,可以单独显示。当然,这是不可能的。
现在,我有很多系统一直表现良好。而我现在的主要问题不是 "怎么做才能让TS发挥作用",而是 "如何从发挥作用的TS中选择还能工作一段时间的"。
而我,而不是许多人,只有两个TS,一个是长线,另一个是短线,选择哪一个会起作用,什么时候起作用,这个问题是一样的,不幸的是,没有人有也永远不会有准确的答案。
而我,反而很多,只有两个TS,一个是长线,一个是短线,哪一个能用,什么时候用,这个问题是一样的,不幸的是,没有人有也永远不会有确切的答案。
根据TC联盟的经验--TC停止工作的概率等于每天1%。两个系统太少了,它们在几个月内都停止工作的概率在70%左右。
那你接下来要做什么呢?
刚才我清楚地记得我的情况,当时我的专家顾问,我已经在上面工作了6个多月(在此之前,我已经开发了几年的TS),开始失败。我完全灰心丧气,不知道该怎么做。
现在,当我有一堆工作的TS时,情况就完全不同了。TS已经停止工作--它令人不快。让它见鬼去吧,我将不得不安装另一个。我希望我当时就能做到。内部舒适度要高得多。
Gheorghe,监控去哪了?
有一个主题,但你无法跟踪结果。
这并不有趣。
Gheorghe,监控去哪了?
有一个主题,但没有对结果进行监测。
这并不有趣。
你说 "哪里 "是什么意思?
这是 什么?
18年12月10日的报告是前天的。还有前五名的图表,以及关于前二十名的表格,以及我的简要总结。
你说 "哪里 "是什么意思?
那 是什么?
18年12月10日的报告是前天的。还有前五名的图表,以及关于前二十名的表格,以及我的简要总结。
这当然很好。但我更习惯于把系统的结果看作是一种信号。
我进来了,看了看图,是的,有一个结果。Gueorgui先生在他的专栏中写了什么?他是如何评论的呢?
而没有现场信号,这一切都错了,这一切都错了。
如果你的策略还没有显示出任何可消化的结果,我可以理解没有信号。
但你的报告似乎做得相当好。
我不明白是什么原因阻碍了我把五个最好的策略放在真实的市场上,并在这里作为一个公共信号进行监测。
当然,这很酷。但总的来说,我更愿意看到系统以信号的形式出现的结果。
我看了看图表,看到了结果。Gueorgui先生在他的专栏中写了什么?他是如何评论的呢?
而没有现场信号,这一切都错了,这一切都错了。
我可以理解,如果你的战略还没有显示出任何可消化的结果,就没有信号。
但你的报告似乎做得相当好。
我不明白是什么原因阻碍了我把五个最好的策略放在真实的市场上,并在这里作为一个公共信号进行监测。
而且我更习惯于这种信号。谁说得准呢?但我不能打开672个终端,672个账户,672个信号......。
我已经说过很多次了--我不断面临着选择一个稳定的TS的问题。所以,我采取了一个系统,它似乎是有效的......但只要把它放在一个单独的账户上--然后就可以了。然后它停止工作,开始显示损失(到处都是,在独立账户和模拟账户上),掉出评级...
你建议如何选择系统?好吧,让我们说许多最好的TS是 "反向追踪 "系统,当SL没有设置,TP是追踪的。这些系统的行为与马丁的非常相似。我已经多次尝试把它们放在一个单独的账户上,结果总是一样。我有几笔好的交易,然后是一个没有猜测的趋势和巨大的损失。
选择的问题是我目前最困难和未解决的问题。
建议你认为应该如何选择信号的系统?并打开信号。