FORTS:帮助初学者 - 页 3 12345678910...14 新评论 Mikhail Filimonov 2015.12.08 21:26 #21 经常使用和有用的功能。会话限制价格检查。//+------------------------------------------------------------------+ //| Expert Check price range function | //+------------------------------------------------------------------+ bool CheckPriceRange( const string a_symbol, const double price ) { double min_price = SymbolInfoDouble( a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN ); double max_price = SymbolInfoDouble( a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX ); if ( ( price >= min_price ) && ( price <= max_price ) ) { return( true ); } return( false ); } Mikhail Filimonov 2015.12.12 11:30 #22 经常使用和有用的功能。重新设计了GetPositionPrice()函数。//+------------------------------------------------------------------+ //| Expert Get position price function | //+------------------------------------------------------------------+ double GetPositionPrice( const string aSymbol ) { double price_in = 0; double volume_in = 0; double price_out = 0; double volume_out = 0; double price = 0; double volume = 0; //--- ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) ); if ( pos_id > 0 ) { if ( HistorySelectByPosition( pos_id ) ) { int deals = HistoryDealsTotal(); for( int i = 0; i < deals; i++ ) { ulong deal_ticket = HistoryDealGetTicket( i ); ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) ); if ( order_ticket > 0 ) { ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) ); if ( deal_entry == DEAL_ENTRY_IN ) { price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE ); volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME ); price_in += price * volume; volume_in += volume; } else if ( deal_entry == DEAL_ENTRY_OUT ) { price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE ); volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME ); price_out += price * volume; volume_out += volume; } } } //--- price = price_in - price_out; volume = volume_in - volume_out; //--- if ( volume > 0 ) { return( NormalizeDouble( price / volume, _Digits ) ); } } else { Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol ); } } else { Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol ); } return( 0 ); } Mikhail Filimonov 2015.12.21 00:11 #23 对该功能进行小的编辑(为了通用性)。而不是。if ( volume_in > 0 ) { return( NormalizeDouble( price_in / volume_in, _Digits ) ); }让它变成这样。if ( volume_in > 0 ) { int symb_digits = int( SymbolInfoInteger( aSymbol, SYMBOL_DIGITS ) ); return( NormalizeDouble( price_in / volume_in, symb_digits ) ); } Rinat Tukaev 2016.03.08 19:48 #24 Build 1241.真实账户。如果一个挂单被设置 并部分执行,其状态不会改变为ORDER_STATE_PLACED,而是保持ORDER_STATE_PARTIAL。 [删除] 2016.03.21 11:46 #25 关于交易、自动交易系统和策略测试的论坛 MT5的新版本是什么时候,在哪里可以找到它的预期内容 comp, 2016.03.21 08:52 比如说,如果我自己做:开一个真实的账户,并把投资权限放在论坛上,这样大家就可以实时看到FORTS的真实资料,并可以进行正常的测试,会有问题吗?还是很清楚? Evgeny Minaev 2016.03.21 18:48 #26 你好!是否有任何简单的交易系统模板或FORTS的EA例子,考虑到这个主题中描述的功能?我需要它在FORTS的订单上正确工作。 Alexander 2016.04.12 07:21 #27 "建议。当为FORTS设计EA时,我不建议使用Tick事件,而是使用最好使用BookEvent事件"。没有解释为什么它更好,也许在某些情况下它更好,在其他情况下它在Tick上更好。你能不能说得更具体一点? Sergey Chalyshev 2016.04.13 22:47 #28 Alexander:"建议。当为FORTS设计EA时,我不建议使用Tick事件,而是使用最好使用BookEvent事件"。没有解释为什么它更好,也许在某些情况下它更好,在其他情况下它在Tick上更好。你能不能说得更具体一点。作者在禁令中,在一段时间内你不会在这里听到答案。以下是我的想法。Tick事件只在Bid、Ask、Last改变时发生。另外,Tick事件是累积性的(如开发者所说),一个Tick可以有几个价格变化。BookEvent事件在投注市场中的任何订单变化和执行交易时到达。BookEvent事件来得更频繁。如果你不需要分析市场的流动性,最好使用OnTick()。在高流动性的符号上,BookEvent事件来的非常频繁,如果处理程序中有大量的计算或几个重磅指标,它将作为一个循环工作。如果你的专家顾问有其他事件处理程序,如OnTimer,你可能会错过这些事件。我不知道OnTradeTransaction和OnTrade 事件,也许,它们可以被跳过。这里有一些信息供你参考。交易队列的长度为1024项。如果OnTradeTransaction()处理另一个交易的时间太长,队列中的旧交易可能被较新的交易所取代。 [删除] 2016.04.14 05:21 #29 Sergey Chalyshev:作者处于禁言状态,你将有一段时间不会听到他在这里的回音。 迈克尔从澡堂里出来已经有一段时间了...在这里,他改变了自己的娘家姓。 Sergey Chalyshev 2016.04.14 11:50 #30 Alexey Kozitsyn: 自从迈克尔被从澡堂里放出来后,已经过了很长时间...在这里,他改变了他的头像。 他的阿瓦与此有什么关系?他不能在论坛上写作,他被永远禁言了。 12345678910...14 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
经常使用和有用的功能。
会话限制价格检查。
经常使用和有用的功能。
重新设计了GetPositionPrice()函数。
对该功能进行小的编辑(为了通用性)。
而不是。
让它变成这样。
关于交易、自动交易系统和策略测试的论坛
MT5的新版本是什么时候,在哪里可以找到它的预期内容
comp, 2016.03.21 08:52
比如说,如果我自己做:开一个真实的账户,并把投资权限放在论坛上,这样大家就可以实时看到FORTS的真实资料,并可以进行正常的测试,会有问题吗?还是很清楚?"建议。
当为FORTS设计EA时,我不建议使用Tick事件,而是使用
最好使用BookEvent事件"。
没有解释为什么它更好,也许在某些情况下它更好,在其他情况下它在Tick上更好。你能不能说得更具体一点?
"建议。
当为FORTS设计EA时,我不建议使用Tick事件,而是使用
最好使用BookEvent事件"。
没有解释为什么它更好,也许在某些情况下它更好,在其他情况下它在Tick上更好。你能不能说得更具体一点。
作者在禁令中,在一段时间内你不会在这里听到答案。
以下是我的想法。
Tick事件只在Bid、Ask、Last改变时发生。另外,Tick事件是累积性的(如开发者所说),一个Tick可以有几个价格变化。
BookEvent事件在投注市场中的任何订单变化和执行交易时到达。BookEvent事件来得更频繁。
如果你不需要分析市场的流动性,最好使用OnTick()。
在高流动性的符号上,BookEvent事件来的非常频繁,如果处理程序中有大量的计算或几个重磅指标,它将作为一个循环工作。
如果你的专家顾问有其他事件处理程序,如OnTimer,你可能会错过这些事件。我不知道OnTradeTransaction和OnTrade 事件,也许,它们可以被跳过。
这里有一些信息供你参考。
交易队列的长度为1024项。如果OnTradeTransaction()处理另一个交易的时间太长,队列中的旧交易可能被较新的交易所取代。
作者处于禁言状态,你将有一段时间不会听到他在这里的回音。
自从迈克尔被从澡堂里放出来后,已经过了很长时间...在这里,他改变了他的头像。