来自一个 "傻瓜 "的问题 - 页 13 1...67891011121314151617181920...277 新评论 [删除] 2011.06.23 08:29 #121 stringo: 实际上,有多达8个字节的信息被赋予了信息,可以用任何方式解释。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。 对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。你所需要的只是一个愿望。我知道,我在4中用得很好,我读了那篇文章(我非常喜欢这个想法)。这里不清楚的是--为什么不同的类型被指定在不同的地方? Cron 2011.06.23 10:03 #122 请告诉我们,如果价格接近TP,而你现在需要退出,如何用TP和SL平仓?我发送了一个订单,建立了一个等量的新头寸。在大多数情况下,它是有效的。但有时我会遇到这样的情况:一个仓位在TP前有时间关闭,但我没有关闭,而是在市场上得到了一个新的仓位...:(如何表明开仓是指关闭现有头寸,如果主力头寸已经被关闭,则不需要再开新的头寸?我可以想到 "在收盘前删除SL和TP或等待TP收盘 "这样的选项,但它们都不是很好的解决方案。难道我们不能像在MT4中那样,执行关闭头寸这样简单的操作吗? --- 2011.06.23 14:13 #123 在 CTrade类中查找 PositionClose 。 我相信它将和你的一样。有一个结论是不可避免的--没有其他办法。但我支持你的请求。我请开发者考虑这个变体。 增加TRADE_ACTION_CLOSE 操作类型-- 以 当前价格 在其成交量中关闭一个指定符号的头寸。 Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5 Yedelkin 2011.06.23 18:38 #124 stringo: 实际上,有整整8个字节的信息,可以用任何方式解释这些信息。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。 对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。这将只是一厢情愿的想法。 在long和ulong中大约有8个字节,从《参考》中可以看出。令人不安的是这些类型在魔法方面的使用不一致。 一个简单的例子:在发送交易请求时,指定request.magic=ULONG_MAX-1是可以接受的。为什么《参考手册》说OrderGetInteger(ORDER_MAGIC )函数只返回长类型?此外,魔术还能为头寸和交易返回长线类型。 那么,它最初是如何设计的呢?也许,我们应该为MqlTradeRequest 结构 指定魔术是长类型的,因为HistoryDealGetInteger()、PositionGetInteger()、OrderGetInteger() 等函数不打算返回大于LONG_MAX 的整数值? [删除] 2011.06.23 19:26 #125 Yedelkin: long和ulong的8个字节在《参考手册》中是明确的。这些类型与魔法的使用不一致是令人不安的。 一个简单的例子:当发送一个交易请求时,指定request.magic=ULONG_MAX-1是可以接受的。为什么《参考手册》说OrderGetInteger(ORDER_MAGIC )函数只返回长类型?此外,魔术还能为头寸和交易返回长线类型。 那么,它最初是如何设计的呢?也许,我们应该为MqlTradeRequest 结构 指定魔术是长类型的,因为HistoryDealGetInteger()、PositionGetInteger()、OrderGetInteger() 等函数不打算返回大于LONG_MAX 的整数值?事实上,这个魔力是长 类型的(这可以通过形成一个负的魔力和一个 长 类型值范围之外的魔力来轻松检查 )。为了检查它,我们可以稍微修改夜间 专家顾问(它不使用标准库的类)。为了使实验干净,我们应该将 EA_Magic 参数类型改为长,并解开历史上最后一个订单的魔术师(如果该订单已成功设置)。 Yedelkin 2011.06.23 19:40 #126 Interesting: В действительности магик имеет тип long (это легко проверяется формированием отрицательного магика и магика со значением выходящим за диапазон значений типа long). 如果是这样,必须在MqlTradeRequest 结构的魔术元素的描述中作出澄清,从类型名称中删除字母 "u"。 Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса www.mql5.com Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5 [删除] 2011.06.23 19:51 #127 Yedelkin: 如果是这样,有必要通过从类型名称中删除 "u"来澄清MqlTradeRequest 结构中魔法元素的描述。 在CTALT 类中也做修改是个好主意(如果开发者不想把魔法值限制在正值)。 --- 2011.06.23 21:06 #128 stringo: 实际上,有整整8个字节的信息,可以用任何方式解释这些信息。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。 对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。这将只是一厢情愿的想法。实际上,它不是64位,而是只有63位(即8个字节不完整)。如果我们使用整个长程,它将是8个字节。但不幸的是...一方面,神奇的ulong 被传入MqlTradeRequest 结构。这意味着只能设置正值。另一方面, PositionGetInteger/OrderGetInteger函数 返回 长 类型 。这意味着ulong 范围的一半被切断了。总而言之,我们有63位,而不是上述的64位。实际上,这并不是什么坏事,而是对 秩序检查的原则造成了极大的不便 。如果使用与MT4相同的系统会更方便--允许魔术师带牌子。由于许多交易系统是基于一个简单的原则,使用的正是魔术师的符号。因为把一个系统分成两个,用通常的MathAbs( OrderMagicNumber( ) ) 函数过滤出你的订单要容易得多。 在 MetaTrader 5 里使用 Renat Fatkhullin 2011.06.23 21:56 #129 sergeev:事实上,它不是64位,而是只有63位(即不完整的8个字节)。如果使用整个长 范围,则为8字节。你错了。 64位的使用,由你自己决定如何使用。长/长没有区别,这完全取决于你如何解释这64位。如果你想把long作为有符号的long使用--就用它,如果你想把它作为无符号的ulong使用--没问题。如果你想在这64位中使用其他数据类型,请使用它们。这正是斯拉瓦所写的内容。 Vladimir Gomonov 2011.06.23 22:21 #130 sergeev:事实上,它不是64位,而是只有63位(即不完整的8个字节)。如果使用整个长区,则为8个字节。但不幸的是...一方面,神奇的ulong 被传入MqlTradeRequest 结构。这意味着只能设置正值。另一方面, PositionGetInteger/OrderGetInteger函数 返回 长 类型 。这意味着ulong 范围的一半被切断了。事实上,我们所拥有的是63位,而不是上述的64位。实际上,这并不是什么坏事,而是对 秩序检查的原则造成了极大的不便 。如果使用与MT4相同的系统会更方便--允许使用魔法符号。由于许多交易系统是基于一个简单的原则,使用的正是魔术师的符号。因为把一个系统分成两个,用通常的MathAbs( OrderMagicNumber( ) ) 函数过滤出你的订单要容易得多。说实话,我很不理解,你们在没什么大不了的事情上做得太过分了。绝对不是。这个问题并不存在,你只是编造了它。将类型转换一直整理到最后。我希望下面的文章能帮助你。把它复制到一个脚本中,编译它,在终端运行它 ,然后仔细思考。好运。void OnStart() { Print("//------ "); int i_A = -100; uint ui_B = uint(-100); Print(i_A," ",uint(i_A)); Print(int(ui_B)," ",ui_B); i_A = int(4294967196); ui_B = 4294967196; Print(i_A," ",uint(i_A)); Print(int(ui_B)," ",ui_B); //-- long l_A = -100; ulong ul_B = ulong(-100); Print(l_A," ",ulong(l_A)); Print(long(ul_B)," ",ul_B); l_A = long(18446744073709551516); ul_B = 18446744073709551516; Print(l_A," ",ulong(l_A)); Print(long(ul_B)," ",ul_B); } 1...67891011121314151617181920...277 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
实际上,有多达8个字节的信息被赋予了信息,可以用任何方式解释。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。
对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。你所需要的只是一个愿望。
我知道,我在4中用得很好,我读了那篇文章(我非常喜欢这个想法)。
这里不清楚的是--为什么不同的类型被指定在不同的地方?
请告诉我们,如果价格接近TP,而你现在需要退出,如何用TP和SL平仓?
我发送了一个订单,建立了一个等量的新头寸。在大多数情况下,它是有效的。但有时我会遇到这样的情况:一个仓位在TP前有时间关闭,但我没有关闭,而是在市场上得到了一个新的仓位...:(
如何表明开仓是指关闭现有头寸,如果主力头寸已经被关闭,则不需要再开新的头寸?
我可以想到 "在收盘前删除SL和TP或等待TP收盘 "这样的选项,但它们都不是很好的解决方案。难道我们不能像在MT4中那样,执行关闭头寸这样简单的操作吗?
在 CTrade类中查找 PositionClose 。
我相信它将和你的一样。有一个结论是不可避免的--没有其他办法。
但我支持你的请求。我请开发者考虑这个变体。
增加TRADE_ACTION_CLOSE 操作类型-- 以 当前价格 在其成交量中关闭一个指定符号的头寸。
实际上,有整整8个字节的信息,可以用任何方式解释这些信息。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。
对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。这将只是一厢情愿的想法。
在long和ulong中大约有8个字节,从《参考》中可以看出。令人不安的是这些类型在魔法方面的使用不一致。
一个简单的例子:在发送交易请求时,指定request.magic=ULONG_MAX-1是可以接受的。为什么《参考手册》说OrderGetInteger(ORDER_MAGIC )函数只返回长类型?此外,魔术还能为头寸和交易返回长线类型。
那么,它最初是如何设计的呢?也许,我们应该为MqlTradeRequest 结构 指定魔术是长类型的,因为HistoryDealGetInteger()、PositionGetInteger()、OrderGetInteger() 等函数不打算返回大于LONG_MAX 的整数值?
long和ulong的8个字节在《参考手册》中是明确的。这些类型与魔法的使用不一致是令人不安的。
一个简单的例子:当发送一个交易请求时,指定request.magic=ULONG_MAX-1是可以接受的。为什么《参考手册》说OrderGetInteger(ORDER_MAGIC )函数只返回长类型?此外,魔术还能为头寸和交易返回长线类型。
那么,它最初是如何设计的呢?也许,我们应该为MqlTradeRequest 结构 指定魔术是长类型的,因为HistoryDealGetInteger()、PositionGetInteger()、OrderGetInteger() 等函数不打算返回大于LONG_MAX 的整数值?
事实上,这个魔力是长 类型的(这可以通过形成一个负的魔力和一个 长 类型值范围之外的魔力来轻松检查 )。
为了检查它,我们可以稍微修改夜间 专家顾问(它不使用标准库的类)。
为了使实验干净,我们应该将 EA_Magic 参数类型改为长,并解开历史上最后一个订单的魔术师(如果该订单已成功设置)。
Interesting:
В действительности магик имеет тип long (это легко проверяется формированием отрицательного магика и магика со значением выходящим за диапазон значений типа long).
如果是这样,有必要通过从类型名称中删除 "u"来澄清MqlTradeRequest 结构中魔法元素的描述。
实际上,有整整8个字节的信息,可以用任何方式解释这些信息。它可以是日期时间、双倍数、4个短数、8个字符或64位的逐位数。
对于四字节,4个字节的魔法足以编码任何东西,但现在我们有8个。这将只是一厢情愿的想法。
实际上,它不是64位,而是只有63位(即8个字节不完整)。如果我们使用整个长程,它将是8个字节。
但不幸的是...
一方面,神奇的ulong 被传入MqlTradeRequest 结构。这意味着只能设置正值。
另一方面, PositionGetInteger/OrderGetInteger函数 返回 长 类型 。这意味着ulong 范围的一半被切断了。
总而言之,我们有63位,而不是上述的64位。实际上,这并不是什么坏事,而是对 秩序检查的原则造成了极大的不便 。
如果使用与MT4相同的系统会更方便--允许魔术师带牌子。由于许多交易系统是基于一个简单的原则,使用的正是魔术师的符号。因为把一个系统分成两个,用通常的MathAbs( OrderMagicNumber( ) ) 函数过滤出你的订单要容易得多。
事实上,它不是64位,而是只有63位(即不完整的8个字节)。如果使用整个长 范围,则为8字节。
你错了。
64位的使用,由你自己决定如何使用。长/长没有区别,这完全取决于你如何解释这64位。如果你想把long作为有符号的long使用--就用它,如果你想把它作为无符号的ulong使用--没问题。如果你想在这64位中使用其他数据类型,请使用它们。
这正是斯拉瓦所写的内容。
事实上,它不是64位,而是只有63位(即不完整的8个字节)。如果使用整个长区,则为8个字节。
但不幸的是...
一方面,神奇的ulong 被传入MqlTradeRequest 结构。这意味着只能设置正值。
另一方面, PositionGetInteger/OrderGetInteger函数 返回 长 类型 。这意味着ulong 范围的一半被切断了。
事实上,我们所拥有的是63位,而不是上述的64位。实际上,这并不是什么坏事,而是对 秩序检查的原则造成了极大的不便 。
如果使用与MT4相同的系统会更方便--允许使用魔法符号。由于许多交易系统是基于一个简单的原则,使用的正是魔术师的符号。因为把一个系统分成两个,用通常的MathAbs( OrderMagicNumber( ) ) 函数过滤出你的订单要容易得多。
说实话,我很不理解,你们在没什么大不了的事情上做得太过分了。绝对不是。这个问题并不存在,你只是编造了它。将类型转换一直整理到最后。
我希望下面的文章能帮助你。把它复制到一个脚本中,编译它,在终端运行它 ,然后仔细思考。好运。