Новая версия платформы MetaTrader 5 build 1640: создание и тестирование собственных финансовых инструментов - страница 12

 

Не хватает галки "выключить компьютер после оптимизации", потому что чаще всего оптимизация проводится под конец рабочего дня. 

Окно с 1 минуты для отмены выключения (как в мюТоррент).

Знаю, что такая настройка проводится через конфиг, но хочется нормальную реализацию.

 

А почему из тиковой истории не формируется М1 для созданного символа?

При "все тики" функция CopyRates() будет учитывать тиковую историю или будет генерировать свою?

 

Подскажите, а почему для Custom символа функция CustomSymbolSetDouble всегда возращает ложь если пытаться сделать запись в

SYMBOL_TRADE_TICK_VALUE_LOSS и SYMBOL_TRADE_TICK_VALUE_PROFIT  ? 

 
pivomoe:

Подскажите, а почему для Custom символа функция CustomSymbolSetDouble всегда возращает ложь если пытаться сделать запись в

SYMBOL_TRADE_TICK_VALUE_LOSS и SYMBOL_TRADE_TICK_VALUE_PROFIT  ? 

GetLastError() что возвращает?
 
Только задание этих свойств ведет к true-возврату
return(CLONE(SYMBOL_BASIS) &&
    CLONE(SYMBOL_CURRENCY_BASE) &&
    CLONE(SYMBOL_CURRENCY_MARGIN) &&
    CLONE(SYMBOL_CURRENCY_PROFIT) &&
    CLONE(SYMBOL_DESCRIPTION) &&
    CLONE(SYMBOL_FORMULA) &&
    CLONE(SYMBOL_ISIN) &&
    CLONE(SYMBOL_PAGE) &&
    CLONE(SYMBOL_PATH) &&

    CLONE(SYMBOL_MARGIN_HEDGED) &&
    CLONE(SYMBOL_MARGIN_INITIAL) &&
    CLONE(SYMBOL_MARGIN_MAINTENANCE) &&
    CLONE(SYMBOL_OPTION_STRIKE) &&
    CLONE(SYMBOL_POINT) &&
    CLONE(SYMBOL_SESSION_PRICE_LIMIT_MAX) &&
    CLONE(SYMBOL_SESSION_PRICE_LIMIT_MIN) &&
    CLONE(SYMBOL_SESSION_PRICE_SETTLEMENT) &&
    CLONE(SYMBOL_SWAP_LONG) &&
    CLONE(SYMBOL_SWAP_SHORT) &&
    CLONE(SYMBOL_TRADE_ACCRUED_INTEREST) &&
    CLONE(SYMBOL_TRADE_CONTRACT_SIZE) &&
    CLONE(SYMBOL_TRADE_FACE_VALUE) &&
    CLONE(SYMBOL_TRADE_LIQUIDITY_RATE) &&
    CLONE(SYMBOL_TRADE_TICK_SIZE) &&
    CLONE(SYMBOL_TRADE_TICK_VALUE) &&
    CLONE(SYMBOL_VOLUME_LIMIT) &&
    CLONE(SYMBOL_VOLUME_MAX) &&
    CLONE(SYMBOL_VOLUME_MIN) &&
    CLONE(SYMBOL_VOLUME_STEP) &&

    CLONE(SYMBOL_BACKGROUND_COLOR) &&
    CLONE(SYMBOL_CHART_MODE) &&
    CLONE(SYMBOL_DIGITS) &&
    CLONE(SYMBOL_EXPIRATION_MODE) &&
    CLONE(SYMBOL_EXPIRATION_TIME) &&
    CLONE(SYMBOL_FILLING_MODE) &&
    CLONE(SYMBOL_MARGIN_HEDGED_USE_LEG) &&
    CLONE(SYMBOL_OPTION_MODE) &&
    CLONE(SYMBOL_OPTION_RIGHT) &&
    CLONE(SYMBOL_ORDER_GTC_MODE) &&
    CLONE(SYMBOL_ORDER_MODE) &&
    CLONE(SYMBOL_SPREAD) &&
    CLONE(SYMBOL_SPREAD_FLOAT) &&
    CLONE(SYMBOL_START_TIME) &&
    CLONE(SYMBOL_SWAP_MODE) &&
    CLONE(SYMBOL_SWAP_ROLLOVER3DAYS) &&
    CLONE(SYMBOL_TICKS_BOOKDEPTH) &&
    CLONE(SYMBOL_TRADE_CALC_MODE) &&
    CLONE(SYMBOL_TRADE_EXEMODE) &&
    CLONE(SYMBOL_TRADE_FREEZE_LEVEL) &&
    CLONE(SYMBOL_TRADE_MODE) &&
    CLONE(SYMBOL_TRADE_STOPS_LEVEL));

Все остальные - false.

 
Slava:
GetLastError() что возвращает?

5307

Если я её правильно вызываю.

//--- Устанавливаем DOUBLE свойства символа  
void YstanavlivaemSznachenieSvoistvaSimvolaENUM_SYMBOL_INFO_DOUBLE(string simvol,string CustomSimvol,ENUM_SYMBOL_INFO_DOUBLE Svoistvo )
{
 double Snachenie=0;
 int j;
 for(j=0;j<5;j++)
  {
   if( SymbolInfoDouble(simvol,Svoistvo,Snachenie) ){Print(simvol," Получили свойства символа "," j=",j,"  ",EnumToString(Svoistvo)," значение ",Snachenie);break;}
   Sleep(500);
  }
  if(j==5)Print(simvol," НЕ УДАЛОСЬ ПОЛУЧИТЬ свойства символа "," j=",j,"  ",EnumToString(Svoistvo)," значение ",Snachenie);
  for(j=0;j<5;j++)
  {
   //--- сбросим значение ошибки
   ResetLastError();
   if( CustomSymbolSetDouble(CustomSimvol,Svoistvo,Snachenie) ){Print(CustomSimvol," j=",j," ЗАПИСАЛИ свойства символа ",EnumToString(Svoistvo)," значение ",Snachenie);break;}
   else Print(simvol," НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа "," j=",j,"  ",EnumToString(Svoistvo)," значение ",Snachenie," GetLastError()=",GetLastError());
   Sleep(500);
  }
  if(j==5)Print(simvol," НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа "," j=",j,"  ",EnumToString(Svoistvo)," значение ",Snachenie," GetLastError()=",GetLastError());
}

Вот логи

SBER Получили свойства символа  j=0  SYMBOL_TRADE_TICK_SIZE значение 0.01
GH      0       18:10:07.132    Формируем custom символы v2 (SBER,H1)   SBER_custom j=0 ЗАПИСАЛИ свойства символа SYMBOL_TRADE_TICK_SIZE значение 0.01
KF      0       18:10:07.132    Формируем custom символы v2 (SBER,H1)   SBER Получили свойства символа  j=0  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01
EG      0       18:10:07.132    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=0  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
DL      0       18:10:07.633    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=1  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
DR      0       18:10:08.134    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=2  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
DG      0       18:10:08.636    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=3  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
PL      0       18:10:09.137    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=4  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
CQ      0       18:10:09.638    Формируем custom символы v2 (SBER,H1)   SBER НЕ УДАЛОСЬ ЗАПИСАТЬ свойства символа  j=5  SYMBOL_TRADE_TICK_VALUE_PROFIT значение 0.01 GetLastError()=5307
 
pivomoe:

5307

Если я её правильно вызываю.

Вот логи

Что означает этот код?
 
Slava:
Что означает этот код?
Я привел полный текст функции, которая копирует  значение свойства вещественного типа из обычного символа в  пользовательский  символ. Из логов видно, что
SYMBOL_TRADE_TICK_VALUE_PROFIT

получить из символа SBER получается. А вот записать его SBER_custom нет.

 
pivomoe:

Подскажите, а почему для Custom символа функция CustomSymbolSetDouble всегда возращает ложь если пытаться сделать запись в

SYMBOL_TRADE_TICK_VALUE_LOSS и SYMBOL_TRADE_TICK_VALUE_PROFIT  ? 

Потому что это логично, т.к. данный показатель вычисляется, а не задается. Поэтому возвращение true при записи и SYMBOL_TRADE_TICK_VALUE (без LOSSS/PROFIT) является ошибкой.

 
pivomoe:
Я привел полный текст функции, которая копирует  значение свойства вещественного типа из обычного символа в  пользовательский  символ. Из логов видно, что

получить из символа SBER получается. А вот записать его SBER_custom нет.

Извините, я неправильно выразился.

Что означает код ошибки 5307?

Причина обращения: