错误、漏洞、问题 - 页 2829

 
新的内部职能。
int OrderExist( const string symbol, ENUM_ORDER_TYPE type, ulong magic, ulong &tickets[] );

int PositionExist( const string symbol, ENUM_POSITION_TYPE type, ulong magic, ulong &tickets[] );
 

问候。你能建议或给我一个链接,让我去哪里?

VPS WinServer 2012 R2,MT4运行,在某些时候卸载,必须重新运行。

去哪里找,等等 ....

事先非常感谢。

 

关于交易、自动交易系统和交易策略测试的论坛

mql5的特殊性,技巧和窍门

fxsaber, 2020.08.20 18:52

RannForex-Server 模拟账户上的以下代码可以通过运行该EA立即再现这种情况。

// Воспроизведение ситуации наличия позиции и отложенного ордера с одинаковыми тикетами.

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

MqlTradeResult Result = {0};
MqlTradeRequest Request = {0};

int OnInit()
{

        Request.action = TRADE_ACTION_PENDING;
        Request.symbol = _Symbol;
        Request.volume = 100;
        Request.price = Ask;
        Request.type = ORDER_TYPE_BUY_LIMIT;
        
        return(!OrderSend(Request, Result)); // Выставили лимитник по текущей цене.
}

#define  TOSTRING(A) #A + " = " + DoubleToString(A, _Digits)

void OnTradeTransaction( const MqlTradeTransaction&, const MqlTradeRequest&, const MqlTradeResult& )
{
  if (OrderSelect(Result.order) && (OrderGetInteger(ORDER_STATE) == ORDER_STATE_PARTIAL)) // Если наш лимитник исполнился частично
  {
    if (Ask - OrderGetDouble(ORDER_PRICE_OPEN) < 100 * _Point)                            // и находится близко от текущей цены
    {
        Request.action = TRADE_ACTION_MODIFY;
        Request.order = Result.order;
        Request.price = Ask - 1000 * _Point;

      // тогда передвигаем его подальше.
      if (OrderSend(Request, Result)) // Если синхронный OrderSend выполнился успешно, то торговое окружение должно соответствовать.
      {
        // Проверка соответствия торгового окружения.
        if (OrderSelect(Request.order) &&                                                                // Если получилось взять данные нашего ордера
            NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN) - Request.price, _Digits))                  // и цена ордера не равна цене успешного OrderSend
          Alert("Bug:" + TOSTRING(OrderGetDouble(ORDER_PRICE_OPEN)) + " != " + TOSTRING(Request.price)); // сообщаем о баге MT5.
      }
    }
    else
      ExpertRemove();
  }     
}


顺便说一下,该脚本显示(并不总是第一次)在执行同步OrderSend时有一个错误。

Alert: Bug:OrderGetDouble(ORDER_PRICE_OPEN) = 0.89837 != Request.price = 0.88837

在OrderSend执行了几十/几百毫秒后,订单价格是旧的,而不是OrderSend成功下的那个。

 

发送一个搜索 - 自己找不到

如何在SQLite表中实现 多字段的行的唯一性?

ZS:如果有人能举出一个例子--提前感谢!

 

将论坛标签移到标题列表的顶部是谁的主意?

坏主意,别告诉谁。

 
基地中的代码高亮 已经超过一周没有工作了,切换附件也会出现错误
 
Igor Makanu:

发送一个搜索 - 自己找不到

如何在SQLite表中实现多字段的行的唯一性?

ZS:如果有人能举出一个例子--提前感谢!

为多个字段创建一个唯一键(现有数据的行必须与正在创建的唯一性相匹配,否则会发生错误)。

ALTER TABLE `t1` ADD UNIQUE (
`id` ,
`name` ,
`account`
);
 
Andrey Khatimlianskii:

创建一个跨越多个字段的唯一键(与现有数据的行必须匹配正在创建的唯一性,否则会发生错误)。

好吧,我试试,但我可能要读一本SQL书,知识不够。

谢谢你!

 
Andrey Dik:

将论坛标签移到标题列表的顶部是谁的主意?

坏主意,别告诉谁。

我同意。

 
Andrey Dik:

将论坛标签移到标题列表的顶部是谁的主意?

坏主意,别告诉谁。

有什么问题呢?反应能力?)

而且 "论坛 "仍然比 "文档 "更经常被点击--至少在网站上是这样...