Библиотеки: Virtual - страница 77

 

Я думаю, это может быть вызвано тем, что ваш инструмент XAUUSD имеет 2 знака после запятой, а мой — 3 знака после запятой.


int OnStart() { // _Symbol XAUUSD
  ENUM_SYMBOL_SWAP_MODE swap_mode = (ENUM_SYMBOL_SWAP_MODE)SymbolInfoInteger(_Symbol, SYMBOL_SWAP_MODE);
  Print(_Symbol," swap_mode = ", EnumToString(swap_mode));
  double swap = OrderCalcSwap(ORDER_TYPE_BUY, _Symbol, 0.01);
  Print("swap = ", swap);
  Print("SYMBOL_POINT = ", SymbolInfoDouble(_Symbol, SYMBOL_POINT));
  Print("SYMBOL_DIGITS = ", SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
  Print("SYMBOL_TRADE_TICK_SIZE = ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE));
  Print("SYMBOL_TRADE_TICK_VALUE = ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));
  Print("TickValue / TickSize = ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE));
  return(INIT_SUCCEEDED);
}
Файлы:
TestSwaps2.mq5  44 kb
 
hini #:

Это странно. Можете ли вы запустить этот код и посмотреть, что он выводит?

TestSwaps2 (XAUUSD,H1)  XAUUSD swap_mode = SYMBOL_SWAP_MODE_POINTS
TestSwaps2 (XAUUSD,H1)  swap = -0.8661574024463052
TestSwaps2 (XAUUSD,H1)  SYMBOL_POINT = 0.01
TestSwaps2 (XAUUSD,H1)  SYMBOL_DIGITS = 2
TestSwaps2 (XAUUSD,H1)  SYMBOL_TRADE_TICK_SIZE = 0.01
TestSwaps2 (XAUUSD,H1)  SYMBOL_TRADE_TICK_VALUE = 1.5308543698237986
TestSwaps2 (XAUUSD,H1)  TickValue / TickSize = 153.08543698237986


На будущее, все спецификации.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Bybit MT5

fxsaber, 2025.05.29 07:12

#property script_show_inputs

input bool inFull = false;

#include <PrintXYZ.mqh> // https://www.mql5.com/en/code/56055

void OnStart()
{
  PrintAccount();
  
  int Count = 1;
  
  for (int i = 0; i < SymbolsTotal(true); i++)
  {
    const string Symb = SymbolName(i, true);
    
    if (SymbolInfoInteger(Symb, SYMBOL_TIME) > TimeCurrent() - 3600)
    {
      Print(IntegerToString(Count++, 3, '0') + ": " + Symb + " - " + SymbolInfoString(Symb, SYMBOL_DESCRIPTION));
  
      if (inFull)
        PrintSymbol(Symb);
    }
  }
}
 
hini #:

мой — 3 знака после запятой.

Наверное, будет быстрее, если дадите доступ к этому счету.

 
fxsaber #:

Наверное, будет быстрее, если дадите доступ к этому счету.

Отправлено в личное сообщение

 
fxsaber #:


На будущее, все спецификации.

2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)  XAUUSD, Gold vs US Dollar
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)  SymbolInfoInteger(symbol,ENUM_SYMBOL_INFO_INTEGER):
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SELECT = 1
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUMEHIGH = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUMELOW = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TIME = 2025.06.30 13:03:55
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_DIGITS = 3
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SPREAD = 37
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TICKS_BOOKDEPTH = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX(0)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL(4)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_STOPS_LEVEL = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_FREEZE_LEVEL = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_EXEMODE = SYMBOL_TRADE_EXECUTION_MARKET(2)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS(1)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_ROLLOVER3DAYS = WEDNESDAY(3)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SPREAD_FLOAT = 1
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_EXPIRATION_MODE = SYMBOL_EXPIRATION_ALL(15)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_FILLING_MODE = SYMBOL_FILLING_IOC|SYMBOL_FILLING_FOK(3)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_START_TIME = 1970.01.01 00:00:00
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_EXPIRATION_TIME = 1970.01.01 00:00:00
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_DEALS = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_BUY_ORDERS = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_SELL_ORDERS = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_ORDER_MODE = SYMBOL_ALL_ORDERS(127)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_OPTION_RIGHT = SYMBOL_OPTION_RIGHT_CALL(0)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_OPTION_MODE = SYMBOL_OPTION_MODE_EUROPEAN(0)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_VISIBLE = 1
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_CUSTOM = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_BACKGROUND_COLOR = clrHoneydew
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_CHART_MODE = SYMBOL_CHART_MODE_BID(0)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_ORDER_GTC_MODE = SYMBOL_ORDERS_GTC(0)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_HEDGED_USE_LEG = 0
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_EXIST = 1
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_TIME_MSC = 2025.06.30 13:03:55.325
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SECTOR = SECTOR_COMMODITIES(15)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_INDUSTRY = INDUSTRY_COMMODITIES_PRECIOUS(554)
2025.06.30 21:03:56.063 TestSwaps2 (XAUUSD,M1)    SYMBOL_SUBSCRIPTION_DELAY = 0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)  SymbolInfoDouble(symbol,ENUM_SYMBOL_INFO_DOUBLE):
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_BID = 3283.6
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_BIDHIGH = 3296.912
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_BIDLOW = 3259.506
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_ASK = 3283.637
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_ASKHIGH = 3296.949
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_ASKLOW = 3259.543
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_LAST = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_LASTHIGH = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_LASTLOW = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME_REAL = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUMEHIGH_REAL = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUMELOW_REAL = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_POINT = 0.001
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_TICK_VALUE = 0.1
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_TICK_SIZE = 0.001
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_CONTRACT_SIZE = 100.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME_MIN = 0.01
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME_MAX = 200.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME_STEP = 0.01
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_LONG = -490.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_SHORT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_INITIAL = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_MAINTENANCE = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_LONG = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_SHORT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_LIMIT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_STOP = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_STOPLIMIT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_TICK_VALUE_PROFIT = 0.1
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_TICK_VALUE_LOSS = 0.1
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_VOLUME_LIMIT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_VOLUME = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_TURNOVER = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_INTEREST = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_BUY_ORDERS_VOLUME = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_SELL_ORDERS_VOLUME = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_OPEN = 3263.807
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_CLOSE = 3263.856
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_AW = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_PRICE_SETTLEMENT = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_PRICE_LIMIT_MIN = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SESSION_PRICE_LIMIT_MAX = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_OPTION_STRIKE = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_MARGIN_HEDGED = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_LIQUIDITY_RATE = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_FACE_VALUE = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_TRADE_ACCRUED_INTEREST = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_CHANGE = 0.6049
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_VOLATILITY = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_THEORETICAL = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_DELTA = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_THETA = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_GAMMA = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_VEGA = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_RHO = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_OMEGA = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_PRICE_SENSITIVITY = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_SUNDAY = 0.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_MONDAY = 1.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_TUESDAY = 1.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_WEDNESDAY = 3.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_THURSDAY = 1.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_FRIDAY = 1.0
2025.06.30 21:03:56.065 TestSwaps2 (XAUUSD,M1)    SYMBOL_SWAP_SATURDAY = 0.0
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)  SymbolInfoString(symbol,ENUM_SYMBOL_INFO_STRING):
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_BANK = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_DESCRIPTION = Gold vs US Dollar
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_PATH = Raw\Forex\XAUUSD
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_CURRENCY_BASE = XAU
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_CURRENCY_PROFIT = USD
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_CURRENCY_MARGIN = XAU
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_ISIN = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_BASIS = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_PAGE = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_FORMULA = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_CATEGORY = Metals
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_EXCHANGE = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_COUNTRY = 
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_SECTOR_NAME = Commodities
2025.06.30 21:03:56.066 TestSwaps2 (XAUUSD,M1)    SYMBOL_INDUSTRY_NAME = Commodities - Precious
 
hini #:

Отправлено в личное сообщение

Спасибо, разбираюсь.

 
fxsaber #:

Спасибо, разбираюсь.

OK

 
fxsaber #:

Спасибо, разбираюсь.

Причина бага была в том, что я забыл про это ускорение.

  bool Create( const SYMBOL_BASE &SymbolBase, const ENUM_ORDER_TYPE inType, const double &dLots,
               double inPrice, double dSL, double dTP, const MAGIC_TYPE &iMagicNumber,
               const string &sComment, const MqlTick &Tick )
  {
    this = SymbolBase;

    this.Type = inType;

    this.TickValue *= (this.Lots = ::NormalizeDouble(dLots, 8));

    if ((bool)(this.Type & 1))
      this.TickValue = -this.TickValue;
 
fxsaber #:
Причина бага была в том, что я забыл про это ускорение.

Спасибо, подтвердил, что проблема исправлена.

 

Возможно возникновение ошибки деления на ноль

Визуальный тестер