Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1055

 
Konstantin Nikitin:

Тут можно округление применять. А в какую сторону, или просто до целого уже вам решать.


ну да, забыл такиеконструкции, в Кимовских функциях расчета лота было правильное округление
fxsaber:

Так там задача немного другая - суммарный профит в пунктах по всем символам.

ОК, но почему const - как компилятор себя ведет если в цикле будет изменяться const ?

PS: код читаемый, но проверять нужно, не использовал никогда такое

 
Igor Makanu:

ОК, но почему const - как компилятор себя ведет если в цикле будет изменяться const ?

PS: код читаемый, но проверять нужно, не использовал никогда такое

На каждом шаге будет создаваться переменная. const - на этом шаге не планируется где-либо меняться.

 
fxsaber:

На каждом шаге будет создавать переменная. const - на этом шаге не планируется где-либо меняться.

шаг это итерация цикла?

все равно не понятно, как будет себя вести такая конструкция, нужен скрипт для проверки

 
fxsaber:

Так там задача немного другая - суммарный профит в пунктах по всем символам.

Ну тогда так

short pipsProfitOrder = (short)MathFloor( ( OrderProfit()+OrderSwap()+OrderCommission() ) / (SymbolInfoDouble(_OrderSymbol(), SYMBOL_TRADE_TICK_VALUE)*OrderLots()) );

У меня высчитывается пробыль в пунках одной позиции, но применить для себя думаю проблем не будет

 
Igor Makanu:

шаг это итерация цикла?

да.

все равно не понятно, как будет себя вести такая конструкция, нужен скрипт для проверки

 Вот пример удобного использования жизни переменной

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

Обсуждение статьи "LifeHack для трейдера: замешиваем ForEach на дефайнах (#define)"

fxsaber, 2018.02.14 10:54

Замер производительности

#define BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime = GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}

double GetAsk()
{
  static MqlTick tick = {0};
  
  return(SymbolInfoTick(Symbol(),tick) ? tick.ask : 0);
}

#define AMOUNT 1e6

void OnStart()
{
  double Sum = 0;
  
  BENCH(for (int i = 0; i < AMOUNT; i++) Sum += GetAsk())
  BENCH(for (int i = 0; i < AMOUNT; i++) Sum += SymbolInfoDouble(_Symbol, SYMBOL_ASK))
  
  Print(Sum);
}


Результат

Time[for(inti=0;i<AMOUNT;i++)Sum+=GetAsk()] = 78952
Time[for(inti=0;i<AMOUNT;i++)Sum+=SymbolInfoDouble(_Symbol,SYMBOL_ASK)] = 162606
 

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

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Konstantin Nikitin, 2019.06.04 19:58

Ну тогда так

short pipsProfitOrder = (short)MathFloor( ( OrderProfit()+OrderSwap()+OrderCommission() ) / (SymbolInfoDouble(_OrderSymbol(), SYMBOL_TRADE_TICK_VALUE)*OrderLots()) );

У меня высчитывается пробыль в пунках одной позиции, но применить для себя думаю проблем не будет

Это называется перевод профита с издержками в ТЕКУЩИЕ (не на момент закрытия) пункты.

 
fxsaber:

Это называется перевод профита с издержками в ТЕКУЩИЕ (не на момент закрытия) пункты.

Так ему профит в пункты перевести нужно. При расчете закрытых все равно нужно исходить из стоимости пункта. Профит в пунктах, не обязательно должен равняться разницы пунктов между ценами открытия и закрытия.

 
Konstantin Nikitin:

Так ему профит в пункты перевести нужно.

Иногда считают, что профит = OrderProfit().

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

Стоимость пункта на момент закрытия не равна стоимости пункта на момент расчета. Более того, на момент расчета символа может просто не быть в Обзоре рынка.

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

 
Konstantin Nikitin:

 Профит в пунктах, не обязательно должен равняться разницы пунктов между ценами открытия и закрытия.

тут конечно вопрос диалектический, ибо стоимость пункта в валюте ордера может изменяться

но ввиду того, что 90% юзеров торгуют на евро и пишут ТЗ по пунктам которые видят в терминале, если не ошибаюсь, то в терминале всегда пункты считает от цены открытия до БИД/АСК 

в общем вопрос был от secret, он однозначно указал  ( OrderClosePrice() - OrderOpenPrice() )/Point;

https://www.mql5.com/ru/forum/6343/page1052#comment_11947617

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.06.04
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Igor Makanu:

тут конечно вопрос диалектический, ибо стоимость пункта в валюте ордера может изменяться

Мне такой вариант нравится

Особенно правильно вычисленный торговый оборот в валюте счета на момент закрытия позиции (столбец Lots).