错误、漏洞、问题 - 页 555

 
sergey1294:
在Alpari,你不能在市场执行过程中立即设置止损,你必须先开立一个头寸,然后再修改它。
请澄清:是否不可能只用一条OrderSend命令来下一个带止损的订单?还是在对现有订单设置止损前调用PositionSelect?
 
斯纳夫

Метатестер пилит диск HDD

527版。

如果你看一下过程监控器,它就会不断地出现这种无稽之谈。

没有网络活动,没有连接到云端。终端和metatester没有运行。没有文件被改变。

上述截图中没有关于文件名的信息。

请以文字形式附上更详细的日志。

 
idispatch:

在MQL4中,您可以立即创建带有止损的订单,但在MQL5中,这是不可能的 - 您必须在创建订单后设置止损。

是我太慢了(请给我一个代码样本)还是我的意图?

你也可以创建一个带有止损和利润的订单。

您的请求中包括

reqest.sl=SL。

reqest.tp=TP。

这是一个错误。SL和TP水平应该设置在与市场价格有一定距离的地方,所以这些线应该是这样的

为买入位置。

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_BID) - SL * SymbolInfoDouble(Symbol(), SYMBOL_POINT)。

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT) 。

卖出头寸的逆转

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT) 。

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_BID) - TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT) 。

我希望我没有搞错地方...

 
idispatch:
请澄清:在Alpari中,是否不可能用一个OrderSend命令下一个带止损的订单?还是说,在为现有订单设置止损点之前,我们需要调用PositionSelect

你可以,为什么不呢?

你以何种方式下订单?

 
ShurikAn:

你可以用止损和盈利来做。

您在询问中提到

reqest.sl=SL。

reqest.tp=TP。

这是一个错误。SL和TP水平应该设置在与市场价格有一定距离的地方,所以这些线应该是这样的。

当然,SL和TP的定义和你一样。此外,我在上面写道,如果我只是添加

m_request.action =TRADE_ACTION_SLTP
OrderSend(m_request, m_result)。

那么止损将在指定的SL和TP处成功设置,如果没有正确定义,则不会发生这种情况。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Renat:

你可以,为什么不呢?

你以何种方式下订单?

MqlTradeRequest m_request;
MqlTradeResult m_result;

m_request.action = TRADE_ACTION_DEAL。
m_request.symbol = Symbol()。
m_request.type = ORDER_TYPE_BUY;

m_request.price = Price; //提前计算好的,真实的 :)

m_request.sl = SL; // 已经计算好了,而且是正确的 :)
m_request.tp = TP; //提前计算好的,是真的:)

m_request.volume = Vol;

m_request.type_filling = ORDER_FILLING_FOK。
m_request.deviation = 10。
m_request.type_time = 0。
m_request.expiration = 0。
m_request.magic = 0。
m_request.comment = ""。

OrderSend(m_request, m_result)。
 
idispatch:
请澄清:在Alpari,你不能用一个OrderSend命令下一个带止损的订单?还是在为现有订单设置止损前调用PositionSelect?

完全正确。对于停车,你只能在即时模式下进行。

执行类型

客户端有四种订单执行模式。

  • 即时执行
    在这种模式下,市场订单的执行是以提供给经纪人的价格进行的。在发送执行请求时,终端会自动将当前价格替换为订单。如果经纪人接受了这些价格,订单将被执行。如果经纪人不接受要求的价格,那么就会发生所谓的 "重新报价"--经纪人返回订单可以执行的价格。
  • 请求执行
    在这种模式下,市场订单是按照之前从经纪人那里收到的价格执行的。在发送市场订单之前,会向经纪人索取执行价格。一旦收到,该价格的订单的执行可以被确认或拒绝。
  • 市场执行
    在这种市场订单执行模式中,执行价格的决定由经纪人做出,不需要交易者的额外批准。在这种模式下发送市价订单,意味着提前约定了执行价格。

当你按下 "按市价卖出 "或 "按市价买入 "按钮时,将为经纪人创建一个订单,分别按经纪人定义的价格执行卖出或买入交易。

  • 在 "按市场 "执行模式下,只能通过修改已开仓的头寸来设置止损和止盈水平。
  • 一个订单的注释可以由经纪人或服务器修改。例如,在以止损或止盈收盘的情况下,它将包括相关信息。
  • 如果 "执行 "字段是不活动的,这意味着改变它的能力在服务器上被封锁了。
  • 双击开仓窗口将打开/隐藏勾股。
  • 交易所执行
    在这种模式下,在客户终端进行的交易操作被转移到外部交易系统(交易所)。交易业务按当前市场出价的价格执行

每个符号的执行模式是由你的经纪公司选择的。


一切都写在终端帮助中。但没有人读它。

要想知道哪种执行类型,你需要用函数 SymbolInfoInteger()请求该属性,其标识符为SYMBOL_TRADE_EXEMODE

符号_交易_exemode

贸易模式

enum_symbol_trade_execution




enum_symbol_trade_execution

识别器

描述

符号_交易_执行_请求

根据要求进行交易

符号_交易_执行_instant

以流媒体价格进行交易

符号_交易_执行_市场

执行_执行_市场

符号_交易_执行_交换

交易所执行


 

非常感谢你,现在我明白了。

而且我读了帮助,我没有发现的是我的疏忽+帮助中缺乏对交叉引用的阐述或类似的东西:)

 

测试 外科医生的顾问https://www.mql5.com/ru/code/611

用一个修改过的

[引用]。

开始测试,在第84行用
double Limit= 5替换:
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);

[/quote]

在正常的模拟账户上,当工具部分的交易标签处于激活状态时,终端视图会在测试结束后发生变化。

附加的文件:
Error01.JPG  382 kb
Error02.JPG  346 kb
 

在模拟账户上,这就是混乱。

它一直在重设到开头。

而在XAUUSD上,你按F9,然后

尽管你不能双击 "市场概览 "中的订单窗口。

P.S. 我知道你不能交易XAUUSD)。