On2TradeTransaction(...)
{
if флаг установлен goto label
/*вычисления1*/
запомнить результаты вычислений
установить флаг
return;
label: извлечь результаты вычислений
/*вычисления2*/
}
void OnMain()
{
OrderSend(OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).// Следующий OrderSend должен быть незамедлительно вызван.if (наблюдаемая позиция закрылась по тейку) // Проблема определить это без доступа к очереди.OrderSend(OP_BUYLIMIT)
elseOrderSend(OP_SELLLIMIT)
}
void OnMain()
{
if (first)
{
OrderSend(OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).return;
}
//...
}
void OnMain()
{
if (first)
{
OrderSend(OP_BULIMIT); // Во время выполнения сработал и другой отложенник и тейк позиции (после отложенника).return;
}
if ( OnTrade событие последнее )
return; //может еще есть
if ( OnTimer событие последнее )
{ // все торговые события в лукошкеif (наблюдаемая позиция закрылась по тейку) // Проблема определить это без доступа к очереди.OrderSend(OP_BUYLIMIT)
elseOrderSend(OP_SELLLIMIT)
}
}
在Combat Advisors中,我在可疑的地方到处包装函数到_B(FuncName(..), AlertTime)。
忘了这是很贵的。
在最好的情况下,我在每一个刻度上花费几十毫秒的时间,就是因为HistorySelect。
剖析战斗顾问。
除了启动机器人时,为什么还要使用昂贵的HS?
写在该主题的开头。
你做了一个OrderSend。如果在订单发送结束后,某个头寸没有同时平仓,您可以再次进行订单发送。这就是你需要编程的所有逻辑。不使用异步。
现在发生在我们机器人身上的情况。你已经发送了一个OrderSend,当它被执行时,限制器已经被触发,然后我们的头寸的TP已经被执行,正如我之前提到的。
我真的不明白这一点--如果你能,请更详细地描述一下这些步骤。我得到的唯一结果是,只使用了OnTradeTransaction 事件处理程序,这意味着我们不需要事件处理的优先级管理,而建议的
bool HandleNextEvent(ENUM_EVENT_TYPE);堕落为
bool HandleNextEvent();On2TradeTransaction(...) { if флаг установлен goto label /*вычисления1*/ запомнить результаты вычислений установить флаг return; label: извлечь результаты вычислений /*вычисления2*/ }这是我真正不明白的地方--如果你能,请一步一步更详细地描述它。
为什么在调用OrderSend 后不能返回?
下次你返回OnMain时,当一个新的事件已经被添加到队列中(或由定时器)时
A100:
为什么OrderSend 调用后不能有一个返回?
没有任何限制。
下次当一个新的事件被添加到队列中时(或通过定时器)返回到OnMain
下一个事件是执行一个挂单,而不是执行一个持仓。
下一个事件是执行挂单,而不是接管头寸。
建议反复返回,直到你读到整个当前队列或给定数量的事件。当交易活动结束时--会有一个定时器返回,你将可以一次性进入所有的活动。