5位数检测 - 页 5

 
jjc:
如果你建立的系统是给其他人使用的,而不仅仅是给你自己使用的,那么以点为单位输入数值的能力是一个主要的易用性考虑。一般的赌徒知道他们所说的50点是什么意思,但要考虑很多,并反复检查,他们是否指的是0.005的值,而不是0.0005或0.05或其他....。

是的,我就是这么说的:"这个定义对于想要编写商业标准程序的开发者来说似乎很重要,他们希望用户能够灵活地计算出他们想要冒多少美元的风险"。我不同意普通赌徒知道他们所说的50点是什么意思。IMO人们喜欢用美元或其基础货币 的标准单位来思考。我想列出我的个人经验,说明我是如何在点子/点的定义上反反复复的,但这可能会变得很冗长。

如果你不是一个拥有多年外汇经验的超级程序员,就没有必要为终端用户编写一个普遍适用的商业程序。当有人购买EA时,他们首先期望的是它能够盈利。其次,他们希望该程序的灵活性超出想象。比如命令在周末前关闭所有订单,让我指定我想冒多少风险等等。我们都知道,要编写任何有利可图的EA,而不使其静止于一个时间段或货币等,已经很难了。

但在这里,你试图为那些听说过2%的风险和 "不要在周末交易 "的普通人编程一个商业EA。他们想在英镑/日元上指定20美元的损失,而他们的基本货币是美元。该系统被设计为使用ATR的一个百分比,不管这个百分比是多少点/分或美元。现在,整个系统被破坏了,因为它不能满足终端用户的期望#1盈利。如果有人正在制作一个工具供最终用户使用,那就是另外一回事了。

IMO,如果我/我自己/我个人要做一个系统,我想让我的阿姨或弟弟来交易。我会让它尽可能的不灵活,因为他们唯一可能指定的是风险%,而任何其他程序设计上不适合的周边都会被拒绝,比如你指定了错误的时间框架或货币。诚然,大多数商业系统都允许用户以点为单位指定。如果终端用户犯了错误,比如 "我只想要100美元的风险,但最后却得到了1000美元",程序员是不负责任的。他输入了100点的止损,但杠杆率为1000:1。除非你要在你的编程中提醒每一个转折和警告,否则是没有希望的。

 
andydcoles:

MQL4使用点数的唯一原因是在订单请求中编码点差值。其他的都是以汇率来指定的。可以考虑的一个替代方法是使用货币汇率差异作为T/P、S/L等的输入参数。例如,指定0.0050为50点S/L。这种方法不考虑数字,只需要在Symbol()中检测 "JPY "作为报价货币时按100的比例计算。这对所有21个主要货币对(所有美元、欧元、英镑、日元、瑞士法郎、加元、澳元的组合)都是可行的,可能也适用于小货币对(由于点差较高,很少有人交易)。如果你真的担心 "防弹",你可以提供一个货币串和乘数作为输入参数(如日元和100)。这也可以通过不同的经纪商扩展到外币。

我真的认为这对大多数MQL4编码员来说是个哑巴;当他们成功实施和调试了一个有利可图的交易算法后,他们会在自己的真实账户上使用它。很少有人会想把它卖掉或送人,因为市场可能会调整以抵消该算法。

谢谢你的回答,安迪。但我现在已经解决了这些功能。回顾我的上一篇文章,我知道我当时有点痴迷于这个大坝的事情:)。我想我更多的是在寻找Point、TickSize等的基础计算,而不是 "防弹 "我的代码。7bit开始寻找一种以编程方式检测5位数价格的方法。因此,它发展到寻找/探索MarketInfo-s的预定义变量的定义。再次感谢您的意见。
~cameo

 

If you are building a system for other people to use, not just for yourself, then the ability to enter values in pips is a major ease-of-use consideration. The average punter knows what they mean by 50 pips, but has to think quite a lot, and double-check, whether they mean a value of 0.005 rather than 0.0005 or 0.05 or whatever. The ability to enter parameters in pips matches how most end-users think in the forex world, and reduces errors. It also offers the prospect of being able to use the same parameter values on 2/3 and 4/5 digit symbols. I don't have much exposure to the mass-market commercial EAs, but I've never seen one where such parameters were entered as a price differential rather than a pip value.

@Jjc : 我很高兴有人和我在这个问题上有相同的看法。)在任何时候,我都会选择易用性和减少错误 :)

这一点。我个人不以点为单位工作,我以点为单位工作。所有的价格数据都是以点为单位的。两个价格值之间的差异是以点为单位。我的止损和出场点都是以点为单位......它们是一个特定的市场价格。点子的概念是一个有趣的概念,但正如这里的大多数人可以证明的那样,一旦你试图将点子的概念与点数的概念联系起来,你就会失去严谨性和稳健性,为了什么?[...]

@Phil : 我可以欣赏你和其他人计算价格参数的不同方式。我们有自己的偏好,如果我们觉得不需要,为什么要改变它呢?你可能很清楚,我的目的是探索MarketInfo的基本计算方法,以用于不同的工具和经纪商。你使用价格的方法当然是一个可行的强大的方法。

如果你不是一个拥有多年外汇经验的超级程序员,那么试图为终端用户编写一个通用的商业程序是没有意义的。当有人购买EA时,他们最期望的是它能够盈利。其次,他们希望该程序的灵活性超出想象。比如命令在周末前关闭所有订单,让我指定我想冒多少风险等等。我们都知道,要编写任何有利可图的EA,而不使其静止于一个时间段或货币等,已经很难了。

@Ubzen : 笑话!你不需要成为一个 "超级程序员"。相信我。虽然这是一种可能性,但对我来说,这个解决方案并不是要用于商业程序或 "灵活得令人难以置信"。我只是想在不同的平台和工具上测试我的策略,而不需要调整和反复检查参数。

关于点数与美元的关系,我可以提供一个你可能熟悉的比喻。

假设我想在一个新的赌场赌博。我带了5000美元的资金,我愿意冒我资金的2%的风险。但是,赌场提供的筹码是点数!我的赌注是美元。赌注中的美元被转换为点数筹码,它们以0.0001、0.0005、0.001等为面值。不仅如此,下一桌所需的筹码数量是上一桌的10倍,而且筹码的颜色也不是那么容易弄出来的。好吧......我有点夸张了:))但你明白我的意思(双关语不是故意的)。美元或基本货币 不是通用的,而点子是通用的。点子更容易,因为它不是一个分数,而且看任何类型的图表和工具,如果我们看到X点的收益/损失,我们很快就可以IMHO评估和比较它们。

PS : 我编辑并添加了很多这个帖子....,为什么重新阅读我的一些帖子有时感觉很糟糕?

 

我现在使用下面的功能,它可以在不同的经纪商和工具上使用。

double vPoint; 
if(Digits == 2 || Digits == 4) vPoint = Point; else
if(Digits == 3 || Digits == 5) vPoint = Point*10; // I use this for my indies; call once on init() & use where Point supposed to be used in start() 

double Poin() 
{ 
   int d = Digits;
   switch(d){
   case 2 : {return(Point); break;}
   case 4 : {return(Point); break; }
   case 3 : {return(Point*10); break;}
   case 5 : {return(Point*10); break:}
   default : return;
} // I just come up with this. Untested but should be ok/robust. To be used to replace Point for trade parameters calculations. 

欢呼声, ~ cameo

 

最近我需要这样做,所以我编了一个代码。以下是我的解决方案。

//我的观察是,标的物的1%大约是100点。

//"点 "是最小的增量单位。

//所以,我只是计算出1%的标的物的10次方的点数。

//这个点数就是100点。

double AmountPer100Pips()

{

int k=3;

while (MathRound((Bid*0.01)/(Point*MathPow(10, k))==0)

{

k--;

}

//Comment("1%=", DoubleToStr(Bid*0.01, 5), "-", DoubleToStr(Point*MathPow(10, k), 5), " per 100 pips")。

返回(Point*MathPow(10, k))。

}

 
ubzen:

...那些听说过 "2%的风险 "和 "不要在周末交易 "的普通人...


你忘了 "趋势是你的朋友"--试着把它融入到一个不等式策略中去...!

你说得很对,附加功能或(被认为)"不错的功能"可能没有帮助,往往会损害EA需要遵循的赚钱策略。

-BB-

 
jesuscheung:

最近我需要这个,所以我编码了...


这段代码实际上只对报价小于0.01Ticks的货币有效。放入道琼斯指数(TickSize 1)或Ger30指数(TickSize 0.5)并不工作。
 

cameofx:假设我想在一个新的赌场赌博。我带了5000美元的资金,我愿意冒我资金的2%的风险。但赌场提供的是点数筹码!赌注中的美元被转换为点数筹码,它们以0.0001、0.0005、0.001等为单位。不仅如此,下一桌所需的筹码数量是上一桌的10倍,而且筹码的颜色也不是那么容易弄出来的。好吧......我有点夸张了:))但你明白我的意思(双关语不是故意的)。美元或基本货币 不是通用的,而点子是通用的。点子更容易,因为它不是一个分数,看任何类型的图表和工具,如果我们看到X点的收益/损失,我们很快就可以IMHO评估和比较它们。

哇,一个赌场的比喻。我完全忽略了这一点,笑。好吧,我可以理解。让我们说,普通的乔走进一个新的赌场,而不是5000美元,让我们的数学变得简单,说是100美元。他递给华丽的发牌员100美元的本杰明-富兰克林,可爱的发牌员礼貌地问他:"先生,你想怎么还? 是红色,绿色,还是一半一半的?乔大爷完全糊涂了。他对她的下一个问题是:"红的、绿的多少钱,你说的一半一半是什么意思。这时,她笑了笑,把头发甩向一边,然后叹了口气,放下了肩膀,因为她知道她面对的是一个新手。如果我坐在 "平均乔 "旁边,我就会四处寻找那些鸡尾巴女服务员。她开始把手伸进托盘,举起一个筹码,宣称 "这是一个红色的筹码,价值0.0001分".....(什么!!耽误了这是一个真正的赌场,但让我们顺着它)....乔大爷还是很疑惑,我也会这样。他感叹道:"是的,但这是多少钱的美元"。她回答说:"是5美元,先生","绿的是25美元","半对半是指2个绿的和10个红的"。

现在,要点完全消失了,普通的乔人对颜色很执着。这就是房子对你的影响,连猴子都能分辨出颜色。乔大叔想让自己听起来很酷,就说:"好吧......那就给我一半-一半......漂亮妈妈"。我在这家伙旁边,我有最灿烂的笑容来防止笑出声来。总之,是时候下注了,"平均乔 "正在考虑2%,他想在这张桌子上呆得越久越好。他需要2美元,所以他问庄家 "有没有2美元的筹码",她说 "有,白色的是1美元,粉色的是2.5美元,你要不要来点"。他说 "好"。她说递给我2红的,我给你10白的(她不打算给你她盘子里所有的白的......她需要这些来转换......但她希望你会开始给小费)。

好了!!我们又开始下注了。这时,Average Joe把2个白色的筹码放在桌子上。这让庄家愣了一下。她看着他,把牌子扭到一个明显的角度,说:"这是一张最低5美元的桌子,先生"。"我们在这个赌场提供的最低桌子是3美元的桌子,"她继续说,"就在那边,布夫那家伙正在发牌"。普通的乔想了一下,(2美元对3美元....Gorgeous对Fabillio在那里)"不,让我们玩一些牌,他感叹道 "拉回他的2白,把2红扔在那里。

如果这是一个日本的赌场,格式仍然是一样的,只是解释一个点值多少钱的时间会更长。

 
1005phillip:

这一点。我个人不以点为单位工作,我以点为单位工作。所有的价格数据都是以点为单位的。

这意味着每次你更换经纪商,(或者如果经纪商突然改变,就像几个月前的IBFX一样) 必须记得相应地改变你所有EA的参数。比如滑点,3点或30点。

如果你忘记了一个,或者更糟糕的是改变了错误的方式,你会有多大的损失呢。

用点来定义非百分比类型的参数,并在必要时转换为点或双倍数,要容易得多。

 
WHRoeder:

这意味着每次你更换经纪商,(或者如果经纪商突然改变,就像几个月前的IBFX一样) 必须记得相应地改变你所有EA的参数。比如滑点,3点或30点。

如果你忘记了一个,或者更糟糕的是改变了错误的方式,你会有多大的损失呢。

用点来定义非百分比类型的参数,并在必要时转换为点或双倍数,要容易得多。


事实上,情况恰恰相反。 我的EA编码足够通用,我可以把它们放到基本上任何MT4经纪商的任何数字组合上,而且交易和策略的机制与基础经纪商的特定参数无关。 当你开始用诸如 "点数 "这样不明确的参数进行编程时,你就为麻烦打开了大门。

我发现有趣的是,如果你已经有了一个依靠指标或一些涉及市场价格的数学计算来确定止损和获利的策略--无论是ATR或RSI或阻力位 等--基本上除了琐碎的 "我想要一个固定的30点追踪止损 "之外,你绝对没有必要在一开始就使用点数。

用固定点数做事情--例如25点止盈或50点止损--对我来说是愚蠢的,因为市场根本不以这种方式工作/运作,所以你不可能真的指望通过这种方式操作交易策略来获取利润。 所有这些都是在百分比移动、阻力位等上面。 这些都是由价格定义的,而不是点数。

这只是我的看法,可能完全是错误的。

(PS - 你关于IBFX变化的例子是完美的案例,我的EA并不关心IBFX的变化。 另一个是FXDD,最近在今年夏天他们的一个演示服务器上改为5位数,我甚至没有意识到这一点,也不知道发生了什么,直到我在审查季度数据时注意到价格反馈已经改变。)