if( IsSignal(iCustom(NULL,0,"fsbIndicator1", SLOT_TYPE_LC, Param2, Param3,...,0,0))&& IsSignal(iCustom(NULL,0,"fsbIndicator2", SLOT_TYPE_LC, Param2, Param3,...,0,0))&& IsSignal(iCustom(NULL,0,"fsbIndicator3", SLOT_TYPE_LC, Param2, Param3,...,0,0))){// Открываем длинную позицию (предпоследний 0 в значениях индикаторов - указатель на буфер логики длинных позиций (1, соотв. - на буфер логики коротких))// Если у нас значение POP берется из еще одного индикатора, то это значение берется аналогично, только меняется логика поведения индикатора:// iCustom(NULL, 0, "fsbIndicator", SLOT_TYPE_POP, Param2, Param3, ..., 0, 0)}
2.受保护的静态浮点数 fMicron = 0.000075f; // 当我们比较两个浮点数时使用的系数。
3.指示器基础构造器。
4.基本价格。
6.我已经得到了工作的NET <-> MT桥。通过MT进行FSB交易需要一定的时间。当然,在变得 "坚如磐石 "之前,它将只用于模拟账户。
因为我认为Aroon指标只使用:bIsDescreteValues = true。
关于RSI,我记得我在想这个公式。这是5-6年前的事了。我想我使用了一本流行的TA书中的这个公式。不记得具体是哪一个了。
"使用以前的酒吧价值"
我个人认为,这是FSB最重要的 功能之一。
要看到指标值的全部精度,在图表窗口中按F12。
另一个选择是使用 "命令控制台"。 ind xxxx 显示的是bar xxxx的指标。
我不深究MT的公式。可能他们没有太大的区别。这里是默认的FSB RSI和MT RSI。
___________________--
编辑。
我试着在没有这种额外平滑的情况下计算RSI。
但在这种情况下,2009.3.24的RSI值跳升至74.800。
----------------------
谢谢Stellarator的好话!
我不会放弃外汇策略生成器,而且只是因为像你这样的人。即使在相反的情况下,我也愿意进行讨论,以便使FSb更加强大和用户友好。
在这个方向上,我想我可以在FSB中添加MT指标。类似于MT兼容模式 的东西 :)
mt_macd, mt_rsi, ...这些将与MT标准的参数相同。
我们必须找到解决酒吧开盘和收盘的入口/出口点。它们对FSB->MT的整合至关重要。
.........将它们(两个缓冲区)合并成一个(我在想...可能不仅有1/0(可以变成比特掩码),而且还有价格标签)。最有可能的是,我必须对指标值本身做一些处理......我们会看到...当我去...
为什么不能工作(?)。
长期以来,我一直使用一个icustom调用从不同的指标缓冲区获得几个值,在代码中多次使用这个函数太浪费了,特别是在优化过程中,甚至在 "重 "指标中。事实上,我们所需要的(最多)是获得交易方向和SL & TP的水平.....,问题通过简单的算术就可以解决。
下面是一个只有一个额外缓冲区(Signal)的指标代码片段。
而这里是专家顾问代码中的反向转换。
因此,我们只需调用一次指标就能得到3个指标值(方向、TP和SL)。获得的结果可以按照你的要求进一步操作 :)
我希望你能理解这个原则。
大家早上好!
Miroslav_Popov писал(а) >>
1.我可以重写指标,以便用double代替float。
米罗斯拉夫--这很重要!我已经在我的帖子中给出了一些原因。但我也很清楚所涉及的劳动......。而现在(很可能)你正在为你所寻找的桥梁或实质性的东西而努力。
但必须要找到时间。我的预测是不超过一些小时(一天之内)。因为这不仅仅是在声明变量时用一个替换另一个的问题(这也将至少需要进行视觉检查和视觉纠正,"为了美观"(例如,变量用标签描述,等等):)- 尽管这不是一个原则问题)。
首先,很可能有故意使用浮动 的情况(强迫降低精确度)。你需要在这里看到整个代码。
其次,有一个比较这种("新")数字及其与FSB的映射的问题(关于这一点,见下文第2节)。
更短--我们需要仔细捋顺所有的代码,至少要考虑与实数向双数过渡有关的可能弊端。
Miroslav_Popov 写道(a)>>。
2.受保护的静态浮点数 fMicron = 0.000075f; // 当我们比较两个浮点数时使用的系数。
(及以下)。
要看到指标值的全部精度,在图表窗口中按F12。
而这正是问题之一!为 什么是0.000075?而不是0.00005?还是0.000001?(正如我所做的那样)。
一个扩展的问题(对于那些感兴趣的人)和一个问题。
如你所知,两个实数的平等比较决不应该通过这种结构来完成。
这是因为在一些计算结果(特别是乘/除法的变化)之后,这些变量的值可能在视觉上相似(例如1.0和1.0),但实际上不相同。(事实上是1.000001和1.000000)。这一属性源于计算机中实数表示的某种离散性,并带有计算的某种(有限的)离散性(准确性)。一般来说,平等的比较是通过经典主题的变奏来完成的(顺便说一下,米罗斯拉夫使用的是这个主题)。
这是两个实数的 "经典 "比较,以某种有限的精度实现相等,在这种情况下,由fMicron定义。
这也是潜在的问题之一。如何、谁、在什么情况下应该决定这个非常fMicron的价值?它是否总是一个好的常数,就像米罗斯拉夫的(哪个值的问题也还在讨论中)?
一般来说,如果不是为了增加好奇心--我赞成以下理论。
1.一般来说,这类变量的比较有两种类型,平等 和不平等(<,>)。
2.变量本身有两种类型:有保证的固定精度 的变量(价格、手数等),以及没有任何明确精度 的抽象值(如指标值)。
对于不等式,变量(任何类型)都是 "头对头 "的比较(如果(Value1 < Value2) { ...})。如果有必要限制精度(这是很罕见的),你可以使用像Miroslav那样的结构。
4.然而,对于平等问题,(通常)是以不同的方式处理的,这取决于有关的数据。
4.1 如果我们需要比较两个有固定精度的数字(例如,两个价格值来决定是否修改订单(避免得到 "无结果")),我们通常会这样做(也是 "经典")。
在我们的案例中,这个函数是多余的,但这不是重点。其中的关键结构是点 / 2.0。 正是这个fMicron给了我们所需的、正确的和足够的计算精度......在这种特殊情况下!当两个价格被比较时(具有相同的数字,因此, 点 ),即在(点=0.0001)的情况下,例如
fMicron = 0.00005
比较1.2345(订单价格)和1.23451(指标值)--我们得到平等,1.2345和1.23456--不平等......猜猜在最后一种情况下,当fMicron=0.000075时会发生什么?;)当然,你可以预先将变量规范化为一个(较低)精度。但这不是我们的方法 :D...
再次强调--这个参数的选择很重要,而且对每一种情况都 "有一点独特":)1
我建议采用以下范 式。
1.固定精度的变量与计算出的fMicron值进行比较(点/2,例如对于价格情况)。
2.指标和其他类似的 "无限精确的小事":)的值与fMicron常数相比较,该常数等于点的最小值,使用的仪器,除以10。即在数字不超过4的仪器中,fMicron=0.00001,如果数字=5,fMicron=0.000001,类似的情况。
Miroslav - 需要专家意见:)?
现在向公众提出一个问题。
在各种数据窗口(MT或FSB(指标图))中的WHY- 指标值总是以固定的精度显示(数字=4)?为什么不是小数点后3位?还是5、6、7......?:)?!不,真的吗?
米罗斯拉夫有一个 "隐藏的功能? ;))- 我是说F12!而在MT中按什么呢?
而一般来说,嗯,谁定义了这个常数?(小数点后4位)。
我的猜测是,它几乎与传入报价的维度(1.2345)直接相关,对大多数工具来说(有人刚填上)。但许多经纪公司传到更大的数值(例如5),这并不是一个秘密。那么,为什么不在维度上显示指标值,与工具报价维度(数字)相吻合?
或者,也许我没有 "理解 "这个主题中的一些原则性的东西(请--谁来解释一下,也许这是 "必要的",因为......)!我不知道。
Miroslav_Popov 写道(a)>>。
3.指示器基础构造器。
4.基本价格。
Miroslav,我已经很好地 理解了源代码页面上的代码:)。 我很明白 受保护的静态 float[] Price( BasePrice price) 有什么作用。 如果这是对我的代码不流畅的暗示--我回答说,我有意拒绝使用额外的缓冲区来存储(在一般情况下--要么是价格缓冲区的副本,要么是计算出来的副本(典型的,等等))。而且节省了空间,在有各种Typicals的地方,总是需要计算!
在这里,我们需要提到FSB和MT在计算指标值的方法上的关键区别。
1.首先,至少在目前 - 在FSB中加载的报价是静态的,它已经加载了它们,计算了整个条形范围内所需的指标值,然后只是通过它们 "驱动",模仿交易机器人的行为。再一次,指标值只 计算一次,在运行交易机器人的虚拟化之前。这特别说明了交易的仿真速度。但MT中的报价一直都在,而原生的策略测试器却看不到未来,也就是说,我们必须每次都计算出指标值。而如果我只是使用Miroslav的方法(整个缓冲区的计算)...我会被扔到臭鸡蛋里的:)。因此,要特别注意使用IndicatorCounted()!在每种情况下,指标的计算速度几乎是最大的(如果需要计算所有的条形图,或者只计算一条)。在某个地方,有些东西仍然可以被优化,但在你的闲暇时间...
2.因此,每次(当一个新的tick出现时),在额外的缓冲区生成价格值是多余的。反正你都要计算它们,所以让函数(同样的MovingAverage,等等)自己来做。它节省了空间,简化了逻辑(不需要每次都分析哪些条形应该在这些缓冲区中重新计算),并节省了速度(在一般情况下,甚至在某个地方更高)。"在我看来是这样的" (c) 小熊维尼
如果我们要再次讨论我的指标转换,也许重要的是,我完全保留了函数(和指标本身)的逻辑,但为MT的特定使用情况稍作修改。我还保存了用于控制指标本身的参数的顺序和名称。
伙计们,看一下源代码,虽然。我试图做到 "好":)。
我转换的最终想法如下。例如,我们有一个开仓点的位置和三个指标的附加逻辑。下面是下订单的代码是怎样的(当然,大致是这样)。
类似这样的事情。你向iCustom提供你的参数值,并等待它们全部发出信号。这就是全部。没有对指标值本身进行分析...为了什么?
看起来不错...还是没有 :)?
关于这些指标。
关于(Aroon和bIsDescreteValues = true;)考虑到了。
关于RSI...
米罗斯拉夫--你要找的结构让你困惑了:)。不要偷懒,再一次在它周围加上注释,并使用CORRECTLY WORKED 指标来获得 "匹配 "的值:)。让我提醒你--计算RSI的经典公式是基于MA的指数 品种(特别是平滑的)。因此, 在指标参数中指定 这种平滑模式(平滑的)...你会对结果感到 "惊喜 "的 :)(我提醒你,默认情况下,使用的是 "简单"(Simple),这就造成了与经典的不一致)!我自己无法完成上述程序--但我对自己的说法有100%的把握。说服我 :)?
作为测试的结果,我们有以下建议,删除所需的代码,并 在所有使用RSI(和RSI本身)的指标中,将maMethod参数的默认值改为Smoothed。默认情况下,用户不会有这样的问题。但通过这样做,我们将使指标中的这一参数的选择是可行的!(例如,我已经转换了RSI MA振荡器,它基于RSI计算的结果,同时,与RSI本身的当前行为 - 在适当的参数中指定什么并不重要)
"使用以前的酒吧价值"
我个人认为,这是FSB最重要的功能之一。
哦,是的!
这确实是FSB最重要的功能之一。而且,考虑到这一特点,我已经努力适当注意测试指标逻辑的正确性。
谢谢你提供显示 "默认 "值计算的代码!将考虑到这一点...
为什么它不能工作(?)
长期以来,我一直使用一个icustom调用从不同的指标缓冲区获得几个值,在代码中多次使用这个函数太浪费了,特别是在优化过程中,甚至在 "重 "指数下。事实上,我们所需要的(最多)是得到一个交易方向和SL & TP..... 水平,问题通过简单的算术就能解决。
...
我希望,这个原则是明确的。
:),你会明白的(我故意使我的陈述更粗略),我知道关于将数值折叠成一个参数的问题 :)。并感谢所引用的代码(快速的问题--在原始值和 "随后扩展 "中是否有差异? 所有相同的双......)。
关键问题是...在这个特定的情况下,是否有必要这样做。
可能有两个原因。
1.1......额外缓冲区利用的目的(对我来说很重要)--指标没有那么多。我已经有了足够的证据,但就目前而言(看来我已经需要使用石木了--一切都会变得清晰起来:))。
2.从其代码中调用该指标的速度(你的例子)。我的答案是:不是必须的!我的答案是:不是必须的我负责任地宣布。动机。
每一个新的刻度线--无论如何,你都要(不得不)研究一下指标。对吗?(例如--拿价格或其他东西)即使不是每次打勾,而是在你需要时。主要的提示也许是,在EA的一次迭代中多次调用iCustom,会导致指标的多次重新计算?我不得不劝阻你!关键点是 "专家顾问的一次迭代限制"。因此,在这个范围内,该指标只计算一次(在其第一次调用时)!在这个范围内,该指标只计算一次。我以100%的信心宣布这一点。所有后续的调用根本不启动()它,而只是从必要的缓冲区获取必要的值。如果输入参数保持不变(除了缓冲区和偏移量),该条件为100%。该规则对一个工具范围内的计算有效。但我认为,即使iCustom指的是其他TF和工具,这个原则也是成立的。
无论如何,我今晚会看一下石牧,并确定我是否会使用两个缓冲器进行逻辑运算......或一个 :)
总之,今晚见(去上班了)。
关于这个问题。
我会考虑的。
但最有可能的是(鉴于MT在这个问题上缺乏信号)--上面的代码(上一页的模板)或多或少是最佳的(可能需要一点微调......我将在晚上尝试 "深化 "这个问题)