Можно ли использовать функцию AccoutProfit() при прогоне советника в тестере? - страница 2

 
YuraZ писал (а) >>

странно конечно... у меня функция выдает корректный результат

и совпадает...

---

как вариант - для быстрого поиска проблемы

что бы избежать накладок


установите в отдельный каталог еще одну копию MT4 - не копируя с текущего каталога где проблема - а именно с дистрибутива т е инсталируйте заново

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

разумеется заново создайте историю HST файлы

history\downloads можно и скопировать что бы не качать - хотя если трафик безлимита то все равно


и проверьте

кстати проверьте это на стандартном из примера MACD Sample_1.MQL4

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

---




Платформа не причём. Я проверял на разных платформах - Альпари и Мастерфорекс. Результат одинаковый. При проверке на MACD Sample_1 AccountProfit() =0. Интересно то, что AccountEquity()

работает правильно.


 
Почитайте статью Визуализация тестирования. Графики состояния счета. Думаю, вопрос после прочтения отпадет.
 
khorosh писал (а) >>

Платформа не причём. Я проверял на разных платформах - Альпари и Мастерфорекс. Результат одинаковый. При проверке на MACD Sample_1 AccountProfit() =0. Интересно то, что AccountEquity()

работает правильно.



а Вы имеете на разных брокерах разные терминалы? т е

типа

C:\Pprogram File\MTAlpari

C:\Pprogram File\MTMasterforex


у меня для разработок один терминал (что бы не мучаться с закачкой истории и переброской советников с индикаторами)

а брокеров подключаю разных

----

а пример MACD Sample_1 на обоих терминалах одинаково ?

 
YuraZ писал (а) >>

а Вы имеете на разных брокерах разные терминалы? т е

типа

C:\Pprogram File\MTAlpari

C:\Pprogram File\MTMasterforex


у меня для разработок один терминал (что бы не мучаться с закачкой истории и переброской советников с индикаторами)

а брокеров подключаю разных

----

а пример MACD Sample_1 на обоих терминалах одинаково ?


Да, у меня каждый терминал скачан у своего брокера.

 
Rosh писал (а) >>
Почитайте статью Визуализация тестирования. Графики состояния счета. Думаю, вопрос после прочтения отпадет.

Вопрос после прочтения не отпадает. В статье написано " Все функции, отвечающие за эту информацию, возвращают значения реального счета." При тестировании счёт не реальный. Значит

что ...? В статье написано, что можно передать значение функции информации о счёте глобальной переменной и не написано.что нельзя выводить Comment'ом значение этой функции информации о

счёте. К тому же значения других функций информации о счёте: баланс, экьюти отображаются у меня на экране правильно, а только AccountProfit() неправильно.

 

Вот индикатор, который выводит на график значения баланса, эквити и текущей прибыли.

//+------------------------------------------------------------------+
//|                                           CheckAccountProfit.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
 
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   double balance = AccountBalance();
   double equity = AccountEquity();
   double profit = AccountProfit();
   Comment("   balance = ", balance,"\n   equity = ", equity, "\n   profit = ", profit, "\n   closed trades = ", OrdersHistoryTotal() );
   
//----
   return(0);
  }
//+------------------------------------------------------------------+


Подключитесь к любому торговому счету (реальный, конкурсный или демо - не важно) и запустите тестирование советника MACD.sample в визуальном режиме, а затем набросьье на окно визуального тестирования этот индикатор. И Вы увидите, что индикатор, наброшенный на окно визуального тестирования, не обращается к данным тестера. Визуальный режим не прежназначен для этого, если хотите наблюдать эти значения, то сделайте так, как пишется в статье komposter'а, на которую я давал ссылку.


 
Rosh писал (а) >>

Вот индикатор, который выводит на график значения баланса, эквити и текущей прибыли.



Подключитесь к любому торговому счету (реальный, конкурсный или демо - не важно) и запустите тестирование советника MACD.sample в визуальном режиме, а затем набросьье на окно визуального тестирования этот индикатор. И Вы увидите, что индикатор, наброшенный на окно визуального тестирования, не обращается к данным тестера. Визуальный режим не прежназначен для этого, если хотите наблюдать эти значения, то сделайте так, как пишется в статье komposter'а, на которую я давал ссылку.


Вообще передо мной стоит другая задача. Мне нужно в процессе работы эксперта установленного на демо или реале вести контроль чистой прибыли и при достижении ей определённого уровня закрывать все позиции. Для этого я использую функции информации о счёте. Всё это действует, когда эксперт работает на счёте. А как же сделать, чтобы это работало в тестере, чтобы проверить работу на истории. И почему при прогоне в тестере другие функции информации о счёте работают правильно? И почему-то в ссылке https://forum.mql4.com/ru/5872, где Вы объясняете взаимосвязи с основными параметрами счёта и приводите скрипт именно функция AccountProfit() случайно или нет, но обойдена вниманием. Нет её и в скрипте и не объяснено какому числу она равна в данном конкретном примере. Я только подозреваю. что это наверно в Вашей формуле фигурирует как Profit?

 
khorosh писал (а) >>

Вопрос после прочтения не отпадает. В статье написано " Все функции, отвечающие за эту информацию, возвращают значения реального счета." При тестировании счёт не реальный. Значит

что ...? В статье написано, что можно передать значение функции информации о счёте глобальной переменной и не написано.что нельзя выводить Comment'ом значение этой функции информации о

счёте. К тому же значения других функций информации о счёте: баланс, экьюти отображаются у меня на экране правильно, а только AccountProfit() неправильно.

хотел тут подсказать для особенно дотошных что надо не только читать статью Визуализация тестирования. Графики состояния счета. а ещё и понимать что там написано
...

AccountProfit() относится к аккаунту с которым торгует сам терминал MT4 а НЕ ТЕСТЕР внутри терминала

 
DentStu писал (а) >>

хотел тут подсказать для особенно дотошных что надо не только читать статью Визуализация тестирования. Графики состояния счета. а ещё и понимать что там написано
...

AccountProfit() относится к аккаунту с которым торгует сам терминал MT4 а НЕ ТЕСТЕР внутри терминала

Я тоже так считал, но стал сомневаться, когда увидел, что при прогоне теста в визуальном режиме, например, такая функция как Comment(AccountEquity()) правильно отображает изменение

суммы собственных средств. При окончании прогона теста в отчёте, если сложить чистую прибыль и начальный депозит то это величина точно соответствует величине Comment(AccountEquity())

на графике. Однако при тех же условиях функция AccountProfit() не имеет соответствия значению в отчёте.

 
khorosh писал (а) >>

Вообще передо мной стоит другая задача. Мне нужно в процессе работы эксперта установленного на демо или реале вести контроль чистой прибыли и при достижении ей определённого уровня закрывать все позиции. Для этого я использую функции информации о счёте. Всё это действует, когда эксперт работает на счёте. А как же сделать, чтобы это работало в тестере, чтобы проверить работу на истории. И почему при прогоне в тестере другие функции информации о счёте работают правильно? И почему-то в ссылке https://forum.mql4.com/ru/5872, где Вы объясняете взаимосвязи с основными параметрами счёта и приводите скрипт именно функция AccountProfit() случайно или нет, но обойдена вниманием. Нет её и в скрипте и не объяснено какому числу она равна в данном конкретном примере. Я только подозреваю. что это наверно в Вашей формуле фигурирует как Profit?




Похоже проблема не только у Вас!


https://forum.mql4.com/ru/13497

https://forum.mql4.com/ru/13342


у тестера немало недостатков

--

к примеру в мультивалютных советника при чтении в тестере пары которая не тестируется

т е прогон идет допустим по евро а читается EURJPY !

получить Ask и Bid в реальной работе можно mAsk= MarketInfo ( "EURJPY ", MODE_ASK)

а вот в тестере никак нельзя... хотя хочется


я явно вызываю iCustom("EURJPY", ... );

если в индикаторе стоят Ask и Bid онн получит Ask и Bid которые возьмутся просто

из окружения и будут равны Ask и Bid которые в данный момент приходят с реального рынка но никак не из истории


---

потому приходится пользоваться iClose("EURJPY",PERIOD_M1,0) или iClose("EURJPY",PERIOD_M1,1)

получать Bid а Ask получать приращением спреда

---

тестер не генерирует тиков по парам которы вы просто читаете а не гоните

---



попробуйте профит считать своими функциями - это не сложно

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