Закрытие позиций. По сигналу индикатора. - страница 7

 
Выложи тест по ценам открытия.  У самого есть вот такое (с началого этого года): Думаю над тем как уменьшить откаты. Эксперт стоит на демо, за неделю сделал 50% депозита (без ММ). Может опытом обменяемся.
 

Эксперт по всем тикам работает. А вовсе не по ценам открытия. В закачке - тест за 8 февраля

Файлы:
1111_1.zip  72 kb
 
У меня, например, по тикам в тестере выдает картинку как у тебя, а когда тестирую по барам, то несколько иначе, гораздо ближе к реальности (сравнивал с демо). Это лишь мой опыт (в принципе я новичек) и мои наблюдения. Может быть я в корне ошибаюсь, не отрицаю. Не знаю, совпадение или нет, но вот моя картинка с демо-счета: ИМХО, весьма похожа на твою :)
 

Не успел записать аську. И по выходным аська не работает у меня. Не совсем я понял. Тестировать нужно в том режиме, который заложен в коде эксперта. Если алгоритм предусматривает работу по всем тикам, - то тестировать "по ценам открытия" - некорректно. Только себя обманывать.

Нужно разобраться, почему у тебя разные результаты в разных режимах. При этом "по ценам открытия" - результат хуже. Обычно наоборот бывает.

Более того, если эксперт работает "по ценам открытия", то всяко - итог теста должен совпадать с тестом "по всем тикам". Ну почти совпадать.

 

Дело в генераторе тиков тестера. Там идеальные условия. Н-р условие входа: a = 1.5001. В тестере оно исполниться 100%, но вот в реале может и нет. Цена может скакануть с 1.4999 до 1.5003 за 1 тик. Условие пропущено, сделка не открылась. Если я не прав - поправьте меня, буду благодарен.

Вот мой тест по тикам:

Начальный депозит 700.00



Чистая прибыль 6157.73

Максимальная просадка 74.80 (1.50%)

По ценам открытия:

Начальный депозит 700.00



Чистая прибыль 1304.47

Максимальная просадка 514.82 (29.40%)
----

В эксперте предусмотрел переключение режима работы по тикам/барам. Естественно, при включении контроля открытия бара, тестирование по тикам и барам совпадает. Картинка получается такая же, как выложенная выше по ценам открытия.

 
Lukyanov:

Дело в генераторе тиков тестера. . Цена может скакануть с 1.4999 до 1.5003 за 1 тик. Условие пропущено, сделка не открылась.

Да, возможно и такое. И тем не менее. Я думаю, что тестировать эксперт, работающий по всем тикам, недопустимо по ценам открытия. А на больших тф - получаться вообще недостоверные данные. Наоборот же, - если эксперт работает по ценам открытия, то тестировать "по всем тикам", - можно и нужно....

А для проскальзывания - есть параметр - extern int Slippage=...;

 
Slippage это одно, а условие: открыть, если а = 1.5000 - совсем другое..
 

Добрый день всем! Вопрос, может быть, покажется наивным, но у меня встало дело из за этого...

Есть индикатор, кот. я хочу задействовать в своем эксперте. Вот график. И код.

#property copyright "Copyright © 2006 , David W Honeywell , 12/12/2006"
#property link      "HellOnWheels.Trans@gmail.com"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red

#property indicator_maximum 100.0
#property indicator_minimum   0.0

#property indicator_level1 70
#property indicator_level2 50
#property indicator_level3 20

extern int IndicatorTime =  0;
extern int RSI_Periods   = 14;
extern int Applied_Price =  0;
extern int LineWidth     =  4;

double Buffer0[];
double Buffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,LineWidth);
SetIndexBuffer(0,Buffer0);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,LineWidth);
SetIndexBuffer(1,Buffer1);

IndicatorShortName(" ColorRSI ( "+RSI_Periods+" )");

return(0);  
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start()
{
  
  int     counted_bars=IndicatorCounted();
  double  RSIValue;
  int     i;
  int     limit;

  limit = Bars-counted_bars;
  
  for(i=limit; i>0; i--)
   {
     RSIValue=iRSI(Symbol(),IndicatorTime,RSI_Periods,Applied_Price,i);
    if (RSIValue > 50.00000000)
     {
       Buffer0[i] = RSIValue;
       Buffer1[i] = EMPTY_VALUE;
       if (Buffer0[i+1] == EMPTY_VALUE) Buffer0[i+1] = Buffer1[i+1]; 
     }
    else
     {
       Buffer0[i] = EMPTY_VALUE; 
       Buffer1[i] = RSIValue;
       if (Buffer1[i+1] == EMPTY_VALUE) Buffer1[i+1] = Buffer0[i+1]; 
     }
   }

//---- done
  
  return(0);
}

 

Никак не соображу, как здесь задано условие перехода красного цвета на зеленый и наоборот!

И как мне задать выражение i Custom для реализации данного перехода... Прошу ответить, кто знает..

 
if ( Buffer0[i+1] != EMPTY_VALUE && Buffer0[i+2] == EMPTY_VALUE )
{
  // началась зеленая линия
}
Примерно так
Причина обращения: