Некорректный расчет прибыли на биржевых инструментах в тестере - страница 2

 
ivanivan_11:
Кривые руки тех. поддержки.
 
fxsaber:
Кривые руки тех. поддержки.
вы же понимаете,что в таком случае вам надо будет объяснить-как ТП,которая отвечает за сервер МТ, может влиять на результаты теста,который проходит локально на компьютере?)) речь-то идет об открытии сделок даже не на демо,а в тестере. можно вообще отключить интернет, результат-то в тестере от этого не изменится. тестер же никак не взаимодействует с сервером.
 
ivanivan_11:
вы же понимаете,что в таком случае вам надо будет объяснить-как ТП,которая отвечает за сервер МТ, может влиять на результаты теста,который проходит локально на компьютере?)) речь-то идет об открытии сделок даже не на демо,а в тестере. можно вообще отключить интернет, результат-то в тестере от этого не изменится. тестер же никак не взаимодействует с сервером.
Говорю же, кривые руки демо-настройщиков. Тестер же их подхватывает.
 
fxsaber:
Говорю же, кривые руки демо-настройщиков. Тестер же их подхватывает.

отличный вариант!

в таком случае стоит признать,что сами метаквотовцы не способны настроить свой собственный сервер.

2017.01.18 11:20:42.076 GOLD-3.17,M1 (MetaQuotes-Demo): generating based on real ticks
2017.01.18 11:20:42.077 GOLD-3.17,M1: testing of Experts\Advisors\8gky6og_5pal226.ex5 from 2017.01.16 00:00 to 2017.01.18 00:00 started with inputs:
2017.01.18 11:20:42.077   symb=GOLD-3.17
2017.01.18 11:20:42.077   min=2
2017.01.18 11:20:42.077   sp=4
2017.01.18 11:20:42.159 GOLD-3.17 : real ticks begin from 2017.01.16 00:00:00
2017.01.18 11:20:46.689 2017.01.16 09:08:11   exchange buy 1.00 GOLD-3.17 at 1210.4 (1210.0 / 1210.4 / 1210.4)
2017.01.18 11:20:46.689 2017.01.16 09:08:11   deal #2 buy 1.00 GOLD-3.17 at 1210.4 done (based on order #2)
2017.01.18 11:20:46.689 2017.01.16 09:08:11   deal performed [#2 buy 1.00 GOLD-3.17 at 1210.4]
2017.01.18 11:20:46.689 2017.01.16 09:08:11   order performed buy 1.00 at 1210.4 [#2 buy 1.00 GOLD-3.17 at 1210.4]
2017.01.18 11:20:46.695 2017.01.16 09:08:11   CTrade::OrderSend: exchange buy 1.00 GOLD-3.17 [done]
2017.01.18 11:20:46.695 2017.01.16 09:08:11   BID  = 1210.0
2017.01.18 11:20:46.695 2017.01.16 09:08:11   ASK  = 1210.4
2017.01.18 11:20:46.695 2017.01.16 09:08:11   Спред  = 4
2017.01.18 11:20:46.695 2017.01.16 09:08:11   Стоимость пункта в валюте = 5.933809999999999
2017.01.18 11:20:46.695 2017.01.16 09:08:11   Профит сразу после открытия = 0.0
2017.01.18 11:20:46.695 2017.01.16 09:08:11   Профит должен быть = -23.73524


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
//--- global variable
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
input     string symb="DDM7";
input int min=45;
input int sp=3;
datetime date1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double x;
   date1=TimeCurrent();
   MqlDateTime str1;
   TimeToStruct(date1,str1);
   if(str1.min>=min)
     {
      if(PositionsTotal()==0 && SymbolInfoInteger(symb,SYMBOL_SPREAD)>=sp)
        {
         m_trade.Buy(1.00,symb);
         Print("BID  = ",SymbolInfoDouble(symb,SYMBOL_BID));
         Print("ASK  = ",SymbolInfoDouble(symb,SYMBOL_ASK));
         Print("Спред  = ",SymbolInfoInteger(symb,SYMBOL_SPREAD));
         Print("Стоимость пункта в валюте = ",SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE));
         Print("Профит сразу после открытия = ",AccountInfoDouble(ACCOUNT_PROFIT));
         x=(SymbolInfoInteger(symb,SYMBOL_SPREAD)/(SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_SIZE)*
         MathPow(10,SymbolInfoInteger(symb,SYMBOL_DIGITS))))*SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE);
         Print("Профит должен быть = ",-x);
        }
     }
    
  }

//+------------------------------------------------------------------+


либо же отказаться от этой версии и искать нормальное объяснение.

Потому как на данный момент по итогам двух тем выходит, что ни демо, ни тестер платформы МТ5 не подходят для тестирования биржевых инструментов.

 
ivanivan_11:

Потому как на данный момент по итогам двух тем выходит, что ни демо, ни тестер платформы МТ5 не подходят для тестирования биржевых инструментов.

Биржевой SYMBOL_TRADE_TICK_VALUE задается в рублях даже в случае, когда валюта счета не совпадает. И это недоработка мультибиржевого демо-счета.

 

Однако, MT5 считает профит правильно в валюте счета. Как нюанс, из-за второго знака после запятой отрицательный профит в пунктах может быть даже равен нулю в валюте счета.

 

Получается, что внутренний TickValue вычисляется верно, а SYMBOL_TRADE_TICK_VALUE ошибочен.

Обратите внимание, что тестер подхватывает еще историю XXXRUR, где XXX - валюта счета. Это для того, чтобы иметь возможность точно рассчитывать TickValue на каждом тике.

 

Пишите в СД по SYMBOL_TRADE_TICK_VALUE. 

 
fxsaber:

данный вопрос передан с утра в СД. ссылка на данную тема указана. надеюсь,они обратят внимание и на ваш пост.

Открыта, Начата: 2017.01.18 09:39, #1652339


 
fxsaber:

Обратите внимание, что тестер подхватывает еще историю XXXRUR, где XXX - валюта счета. Это для того, чтобы иметь возможность точно рассчитывать TickValue на каждом тике.


Да,согласен. Сделаю пометку - фьючерс DAX,который фигурировал в примерах, считается в EUR, демо счет в USD,т.е. должен быть пересчет еще из EUR в USD. Я этот момент упустил. Но это все равно не объясняет разницу в разы между тем,что есть и тем,что должно быть. И тем более не может объяснить смену знака профита на открытии.
 
ivanivan_11:
Да,согласен. Сделаю пометку - фьючерс DAX,который фигурировал в примерах, считается в EUR, демо счет в USD,т.е. должен быть пересчет еще из EUR в USD. Я этот момент упустил. Но это все равно не объясняет разницу в разы между тем,что есть и тем,что должно быть. И тем более не может объяснить смену знака профита на открытии.
Как воспроизвести?
 
fxsaber:
Как воспроизвести?

эмм..я вроде все предоставлял.

если у вас нет вопросов по коду, то имя сервера и примеры я приводил

https://www.mql5.com/ru/forum/167062#comment_4007382   тут в разы отличается профит

https://www.mql5.com/ru/forum/167062#comment_4007694  тут в разы да еще и со сменой знака

Некорректный расчет прибыли на биржевых инструментах в тестере
Некорректный расчет прибыли на биржевых инструментах в тестере
  • www.mql5.com
Помимо абсолютно неверной работы на демо самого терминал или сервера ( см. тему https://www.mql5...
 
ivanivan_11:

эмм..я вроде все предоставлял.

если у вас нет вопросов по коду, то имя сервера и примеры я приводил

https://www.mql5.com/ru/forum/167062#comment_4007382   тут в разы отличается профит

https://www.mql5.com/ru/forum/167062#comment_4007694  тут в разы да еще и со сменой знака

Вероятнее всего
AMPClearing... не открывает демо стандартным методом (через поиск по названию).
Причина обращения: