Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 340

 
evillive:


Есть кнопка SRC в панели правки, там код автоматом расцвечивается ;)

По поводу кода, если используется if (OrderSymbol() == Symbol()...) то if (OrderSymbol()!= Symbol()) continue; уже не нужен, или одно, или другое.

for (int k = 0; k < OrdersTotal(); k++) лучше заменить на

for (int k = OrdersTotal()-1; k >=0 ; k--), надёжнее



написал во так


if(NumberOfPositionsSell(Symbol())==1 &&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (int kk = OrdersTotal()-1; kk >=0 ; kk--) 
      {
      
       if (OrderSelect(kk,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      OrderModify(OrderTicket(), NormalizeDouble(b+Point+spred, Digits),sl_buy_otl,tp_buy_otl,0);
     
       Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otl, Digits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otl, Digits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spred, Digits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      sl_sell_otl=NormalizeDouble(b+spred+Point, Digits);
      OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      
} 

а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет


как только удалил отложенник по gbpusd и удалил с него советника то ордер сразу по евро модифицировался


 
max020780:

как только удалил отложенник по gbpusd и удалил с него советника то ордер сразу по евро модифицировался

Используйте для фильтрации ордеров Магики. И проверка на повторную модификацию стопов отсутствует (что вызывает Modify Error 1).
 

Привет всем. Народ подскажите можно ли признать такое тестирование советника за 5 лет удачным. Или все же прибыльность маленькая, а просадка большая. Хотелось бы услышать мнение, а сильно ли отличаются данные тестера от реального счета (тестил в терминале Альпари)? Полученные результаты привожу:

Период сумма приб-ть просадка к-во сдел
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233
 
alexey1979621:

Привет всем. Народ подскажите можно ли признать такое тестирование советника за 5 лет удачным. Или все же прибыльность маленькая, а просадка большая. Хотелось бы услышать мнение, а сильно ли отличаются данные тестера от реального счета (тестил в терминале Альпари)? Полученные результаты привожу:

Период сумма приб-ть просадка к-во сдел
01.06.2012-30.05.2013 1490.63 1.7 37.08% (389.71)
213
01.06.2011-30.05.2012
1242.23 1.48 25.82% (448.34) 231
01.06.2010-30.05.2011 1677.66 1.62 53.26% (880.57)
213
01.06.2009-30.05.2010 1664.33 1.68 32.16% (560.68) 208
01.06.2008-30.05.2009 1817.72 1.48 43.73% (472.15) 233

Зело крупная просадка, да и прибыльность маловата... А сколько просадка по средстввам?

А то может быть и так:

Абс. просадка: 2.40 USD
Максимальная: 9.08 USD

Относительная: 0.78%

Макс. по средствам: 97.81% )))

 
evillive:

Зело крупная просадка, да и прибыльность маловата... А сколько просадка по средстввам?

А то может быть и так:

Абс. просадка: 2.40 USD
Максимальная: 9.08 USD

Относительная: 0.78%

Макс. по средствам: 97.81% )))

Указана относительная просадка. Абсолютная просадка примерно на том же уровне и в процентах и в деньгах. А сильно ли отличаются данные тестера от реального счета? Так что делать с советником ставить на реал (на демке работает 3 недели вроде неплохо) или положить на полку до новых придумок по его улучшению?
 
Пусть на демке хотя бы полгодика поработает. Тестер просадку по средствам не показывает, а на реалтайме видно. То что я показал - работа без стопов, пересиживанием просадок. Время жизни предыдущих аккаунтов - 2-3 месяца, этот жив с августа, посмотрю сколько ещё протянет )))
 
Если есть опыт от каких параметров надо отталкиваться - минимальное значение прибыльности и просадки? Я всегда гоняю советник за 5 предыдущих лет, если прибыльность менее 1.5 и просадка более 50 процентов за 5 лет - советник на полку до лучших времен.
 
Forexman77:

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

В журнале ошибки следующие (их два вида, привожу по одной):

TestGenerator: unmatched data error (volume limit 372 at 2013.12.11 21:00 exceeded)

TestGenerator: unmatched data error (low value 1.33097 at 2013.09.12 19:45 is not reached from the least timeframe, low price 1.33105 mismatches)

Может есть какие особенности с работой пользовательских индикаторов? Два месяца вожусь с этим советником и откладываю в долгий ящик.

Закачайте всю историю по тестируемому символу. Это не советник ошибку даёт, а "кривая" история.
 
Forexman77:

Периодически на одном советнике возникают ошибки 129,138. Проблемма решается только после перезапуска терминала.

Хочу добавить функцию Market Info чтобы обновлять bid и ask, потом проверить.

Можно как-то искусственно вызвать ошибки 129,138?

Ошибка 129 - неправильная цена

Ошибка 138 - новые цены (реквота)

Перед отправкой торгового запроса получайте последние цены либо обновлением торгового окружения при помощи RefreshRates(), либо сразу берите из MarketInfo()

Не забывайте, что:

Эксперты и скрипты работают с собственной копией исторических данных. Копия данных по текущему инструменту создается при первоначальном запуске эксперта или скрипта.

При каждом следующем запуске эксперта первоначально созданная копия обновляется. За то время, пока эксперт или скрипт работает, может прийти один или несколько новых тиков, поэтому данные могут устареть.

 
artmedia70:

Ошибка 129 - неправильная цена

Ошибка 138 - новые цены (реквота)

Перед отправкой торгового запроса получайте последние цены либо обновлением торгового окружения при помощи RefreshRates(), либо сразу берите из MarketInfo()

Не забывайте, что:

Эксперты и скрипты работают с собственной копией исторических данных. Копия данных по текущему инструменту создается при первоначальном запуске эксперта или скрипта.

При каждом следующем запуске эксперта первоначально созданная копия обновляется. За то время, пока эксперт или скрипт работает, может прийти один или несколько новых тиков, поэтому данные могут устареть.


Спасибо огромное!

Теперь стало понятно в чем проблемма.

Для покупки использовал:

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

На сколько знаю покупка идет по ask, а iClose(Symbol(),Period(),0) берет цены из bid. Вследствии чего наверное и происходит ошибка.

Теперь использую следующюю комбинацию:

double pa=MarketInfo(Symbol(),MODE_ASK);
if  (pa <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }
Но, тут же возникает вопрос так как, советник не пипсовый, цена находилась в зоне покупки долгое время и обновлялась при каждом тике.

Почему не открывается сделка? Получается советник зависает на ошибке и не видит дальнейшее изменение цены?

Заготовку для советника взял отсюда https://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4

На Ваш взгляд стоит в данном советнике добавить в функию обработки ошибок, проверку на 129 и 138 ошибку?

Если да, то как примерно это сделать?