Скачать MetaTrader 5

OrderProfit и тестер

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Code Base поможет в усвоении теоретических знаний. Заходи и изучай!
Forex Trader
114257
Forex Trader 2005.12.28 21:49 
Доброго время.
Вобшемто у меня вопрос разработчикам про комманду OrderProfit и тестер. Сам я только начинающий и пытаюсь написать помошника. Так вот, тестер никак не воспринимает эту злосчасную команду. Самое обидное что практически всё крутиться вокруг неё, а тестить советника через demo финансов не хватит (через паутину она срабатывает). В форуме ответа не нашёл (либо я слепой, либо одно из двух). Все пишут советников опираясь на показания индикаторов, а моя идея заключается на слежении за прибылью, т.е. максимизация прибыли и минимизация убытков. Хотелось бы чтоб ошибку исправили, а то процесс с мёртвой точки не сдвигается, а писать на показаниях индикаторов что-то не охота. Может кто знает другие методы вытаскивания показаний прибыли из ордера?
Forex Trader
114257
Forex Trader 2005.12.28 22:50  
double OrderProfit( )


Возвращает полученную текущую прибыль для выбранного ордера.
Замечание: ордер должен быть предварительно выбран с помощью функции OrderSelect().

Пример

if(OrderSelect(10, SELECT_BY_POS)==true)
Print("Profit for the order 10 ", OrderProfit() );
else
Print("OrderSelect() вернул ошибку - ",GetLastError());
MetaQuotes Software Corp.
Модератор
181394
MetaQuotes Software Corp. 2005.12.29 02:39  
Так вот, тестер никак не воспринимает эту злосчасную команду

Скорее всего не сделали предварительный выбор ордера через OrderSelect() ?
Forex Trader
114257
Forex Trader 2005.12.29 22:18  
Всё что описано выше я знаю. Вот так пока выглядит кусок следящий за увеличением прибыли.

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); // Выбор ордера
         if(OrderProfit()>0)         // Если прибыль увеличиваться
            {
               pribil=OrderProfit();         
               x=pribil*0.3;                   // 0.3=30%/100%
               y=pribil-x;
               if(OrderProfit()<y)
               {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // выход
               }
            }
 else     // Если идут убытки
            {
               if(OrderProfit()<-10)
                  {
                   pribil=0;
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                   return(0); // выход
                  }



Как сами видете есть выбор ордера, но команда не работает в тестере, на демо срабатывает. Проблема в том что у меня модемное соединение и оплата по часам, а это по карману бац-бац. Так бы я тестил на демо, но в виду вышесказанного пока нету возможности. Можете сами в стандартный советник MACD засунуть и проверить в тестере. По крайней мере у меня пахать не хотит. Версия ПО 4 билд 186. Поэтому я и задавал вопрос про альтернативу запроса прибыли орлера. В тестере срабатывает только вторая про убытки часть а первая игнорируется. Подскажите в чём ошибка?

MetaQuotes Software Corp.
Модератор
181394
MetaQuotes Software Corp. 2005.12.29 22:49  
Желательно приложить полный код эксперта. Маленького куска недостаточно.

Но есть пара вопросов:
1) Откуда такая вольность с ценой закрытия позиций?
В одном месте Бид, а в другом Аск. Где проверка на тип операции BUY/SELL ?

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