初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1402 1...139513961397139813991400140114021403140414051406140714081409...1503 新评论 Francois Dominique Izaak Huibregtse 2022.04.22 11:05 #14011 你们好。 我想做一个非常简单的EA,比较两个收盘价,并在此基础上开出一个买单或卖单。 第一笔订单一切顺利,但一旦条件从卖出切换到买入,它就会一次下多笔订单。 m_trade是一个Ctrade对象。 // Current position information bool Buy_openend = false; bool Sell_openend = false; double currentVolume = 0; if(PositionSelect(_Symbol) == true) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { Buy_openend = true; } if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) { Sell_openend = true; } currentVolume = PositionGetDouble(POSITION_VOLUME); } // Check for trade conditions bool SellCondition = close <= closeprev && bar[1].time == startTime; bool BuyCondition = close >= closeprev && bar[1].time == startTime; // Entering trade if(SellCondition) { if(Sell_openend) { Print("We already have a sell open"); return; } m_trade.Sell(TradeVolume+currentVolume,_Symbol,m_symbol.Ask(),NULL,NULL,NULL); } if(BuyCondition) { if(Buy_openend) { Print("We already have a buy open"); return; } m_trade.Buy(TradeVolume+currentVolume,_Symbol,m_symbol.Bid(),NULL,NULL,NULL); } Vladimir Karputov 2022.04.22 11:09 #14012 Divania111 Ctrade对象。 你忘记了'startTime'的时间需要被重置。 Francois Dominique Izaak Huibregtse 2022.04.22 15:27 #14013 Vladimir Karputov #:你忘了 "startTime "的时间需要重新设置。 谢谢你,弗拉基米尔,我将根据你的提示尝试修复它。 然而,我仍然感到惊讶。因为在进入交易的if语句中,我们检查是否有相同类型的现有订单。如果这是真的,那么该订单就不应该被放置。所以我认为在这个语句中,只有一种类型的订单可以同时进入。 这种想法是否不正确? Vladimir Karputov 2022.04.22 15:36 #14014 Divania111 # :谢谢你,弗拉基米尔,我将根据你的提示尝试修复它。然而,我仍然感到惊讶。因为在进入交易的if语句中,我们检查是否有相同类型的现有订单放置。如果这是真的,那么该订单就不应该被放置。所以我认为在这个语句中,只有一种类型的订单可以同时进入。这种想法是否不正确? 你没有以任何方式控制订单,你在代码中检查POSITION的数量和类型。此外,你不正确地使用POSITIONS(如果你的账户类型是对冲,使用 "PositionSelect(_Symbol) "是错误的)。你的算法有严重的设计错误。 你应该做什么。 1.只在新条形图诞生的时候工作。如果没有新条形图--什么都不做,不要做不必要的动作。 2.这一项将在第1项完成后披露。 Marco Nicholas 2022.04.23 21:04 #14015 你好。你能告诉我,在void OnTick()中的评论 是否拖累了EA。把它放在int OnInit()中会更快。 Nikita Chernyshov 2022.04.23 21:25 #14016 Marco Nicholas 注释 是否拖累了EA。把它放在int OnInit()中会更快。 是的,在MT5中,它大大降低了操作的速度。 在OnInit中,它只在初始化过程中工作一次,再无其他。 Fernando Carreiro 2022.04.23 21:46 #14017 Marco Nicholas 评论 是否会拖慢EA的速度。把它放在int OnInit()里会快得多。 你是在说Comment() 函数吗? 如果是,那就很明显了。在OnInit() 中,评论只会更新一次,而在OnTick() 中,评论可能最终会在每一个tick上被更新。 解决办法是只在需要时更新注释。如果它是静态的,那就只在OnInit() 中更新,然后在OnDeinit() 中清除它,但如果它是动态的,那就在OnTick() 中只在需要改变注释的时候更新它。 EDIT: 这个帖子最初是在英文论坛上完成的。 KUAGNRENRIJI 2022.04.24 10:32 #14018 各位老师好,我在使用客户端 SocketConnect()函数时,按照用户说明正确填写参数后还是不能与服务器建立连接,经检测服务器是正常可用的,请问使用 SocketConnect()函数需要注意哪些问题呢 Sergey Li 2022.04.25 02:47 #14019 大家好。 我有一个问题 如何对sqlite 进行查询,从票据中选择一条记录。 数据库的结构如下。 符号-文本 票据--文本 盗版-真实 s_l - 实际 t_p - 实数 需要将整个票据字符串放入结构中 Marco Nicholas 2022.04.25 08:25 #14020 你好,你能否在switch()中使用Comment() 来代替同样的Print。 1...139513961397139813991400140114021403140414051406140714081409...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你们好。
我想做一个非常简单的EA,比较两个收盘价,并在此基础上开出一个买单或卖单。
第一笔订单一切顺利,但一旦条件从卖出切换到买入,它就会一次下多笔订单。
m_trade是一个Ctrade对象。
你忘记了'startTime'的时间需要被重置。
你忘了 "startTime "的时间需要重新设置。
谢谢你,弗拉基米尔,我将根据你的提示尝试修复它。
然而,我仍然感到惊讶。因为在进入交易的if语句中,我们检查是否有相同类型的现有订单。如果这是真的,那么该订单就不应该被放置。所以我认为在这个语句中,只有一种类型的订单可以同时进入。
这种想法是否不正确?
谢谢你,弗拉基米尔,我将根据你的提示尝试修复它。
然而,我仍然感到惊讶。因为在进入交易的if语句中,我们检查是否有相同类型的现有订单放置。如果这是真的,那么该订单就不应该被放置。所以我认为在这个语句中,只有一种类型的订单可以同时进入。
这种想法是否不正确?
你没有以任何方式控制订单,你在代码中检查POSITION的数量和类型。此外,你不正确地使用POSITIONS(如果你的账户类型是对冲,使用 "PositionSelect(_Symbol) "是错误的)。你的算法有严重的设计错误。
你应该做什么。
1.只在新条形图诞生的时候工作。如果没有新条形图--什么都不做,不要做不必要的动作。
2.这一项将在第1项完成后披露。
是的,在MT5中,它大大降低了操作的速度。
在OnInit中,它只在初始化过程中工作一次,再无其他。
你是在说Comment() 函数吗?
如果是,那就很明显了。在OnInit() 中,评论只会更新一次,而在OnTick() 中,评论可能最终会在每一个tick上被更新。
解决办法是只在需要时更新注释。如果它是静态的,那就只在OnInit() 中更新,然后在OnDeinit() 中清除它,但如果它是动态的,那就在OnTick() 中只在需要改变注释的时候更新它。
EDIT: 这个帖子最初是在英文论坛上完成的。
大家好。
我有一个问题
如何对sqlite 进行查询,从票据中选择一条记录。
数据库的结构如下。
符号-文本
票据--文本
盗版-真实
s_l - 实际
t_p - 实数
需要将整个票据字符串放入结构中