Тоже самое исследование, но на сгенерированных ценах, где приращения формируются по нормальному распределению.
Скрипт:
#property show_inputs#define MAX_AMOUNT 250000#define MAX_RAND 32767.0externint BeginPips = 100;
externint EndPips = 1000;
externint StepPips = 10;
externint AmountBars = 100000;
externint Deviation = 15;
int PricesHigh[MAX_AMOUNT], PricesLow[MAX_AMOUNT];
double GetRand()
{
return(2 * MathRand() / MAX_RAND - 1);
}
void GetRandGauss( int Deviation, int& Rand1, int& Rand2 )
{
double X1, X2, W = 2;
while (W >= 1)
{
X1 = GetRand();
X2 = GetRand();
W = X1 * X1 + X2 * X2;
}
W = MathSqrt(-2 * MathLog(W) / W);
Rand1 = X1 * W * Deviation;
Rand2 = X2 * W * Deviation;
if (Rand1 < Rand2)
{
int Tmp = Rand1;
Rand1 = Rand2;
Rand2 = Tmp;
}
return;
}
void GetPrices( int Deviation, int AmountBars )
{
int Pos = 0;
int Rand1, Rand2, Avg = 0;
MathSrand(TimeLocal());
while (Pos < AmountBars)
{
GetRandGauss(Deviation, Rand1, Rand2);
PricesHigh[Pos] = Avg + Rand1;
PricesLow[Pos] = Avg + Rand2;
Avg = (PricesLow[Pos] + PricesHigh[Pos]) / 2;
Pos++;
}
return;
}
int GetZigZagCount( int Pips, int AmountBars )
{
bool FlagUP = TRUE;
int i, Min, Max, Count = 0;
int PriceHigh, PriceLow;
Min = PricesHigh[0];
Max = PricesLow[0];
for (i = 0; i < AmountBars; i++)
{
PriceHigh = PricesHigh[i];
PriceLow = PricesLow[i];
if (FlagUP)
{
if (PriceHigh > Max)
Max = PriceHigh;
elseif (Max - PriceLow >= Pips)
{
FlagUP = FALSE;
Min = PriceLow;
Count++;
}
}
else// (FlagUP == FALSE)
{
if (PriceLow < Min)
Min = PriceLow;
elseif (PriceHigh - Min >= Pips)
{
FlagUP = TRUE;
Max = PriceHigh;
Count++;
}
}
}
return(Count);
}
void start()
{
int Pips, Amount;
int handle;
GetPrices(Deviation, AmountBars);
handle = FileOpen("Analyse.prn", FILE_WRITE);
for (Pips = BeginPips; Pips <= EndPips; Pips += StepPips)
{
Amount = GetZigZagCount(Pips, AmountBars);
FileWrite(handle, Pips + " " + Amount);
}
FileClose(handle);
return;
}
Результат сильно зависит от параметра Deviation - разброс (среднеквадратичное отклонение).
Те же графики:
При параметрах по-умолчанию получается схожая зависимость - от квадрата. Но она полностью нарушается при изменении параметра Deviation в сторону. Проверял рыночные цены на мажорах, зависимость от квадрата сохраняется.
Советник считает количество колен ЗигЗага (не менее Pips) и записывает в файл: Запускается в тестере с оптимизацией:
График зависимости количества колен от их мин. размера (Pips):
Графики зависимости отношения вероятностей TP и SL (p(SL) / p(TP)) при отношении TP / SL = Koef от размера SL
В логарифмическом масштабе график нагляднее, кстати, будет. Что касается взаимоотношений TP и SL, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере, сделав параметром, например, их отношение. Почему-то мне кажется, что для случайных входов средний итог сделки всегда будет стремиться к спреду, со знаком минус, естественно.
не пойму, что вы считаете... Вероятность достижения ТП и СЛ? Так это просто... Вероятность ТП = (СЛ - спред) / (ТП + СЛ) Вероятность СЛ = (ТП + спред) / (ТП + СЛ)
Что касается взаимоотношений TP и SL, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере...
Поскольку копировал пост из другой темы, то остались старые обозначения: TP и SL. Стоит их интерпретировать, как Pips1 и Pips2. Основное заключение сформулировано в Гипотезе.
kharko писал(а)>> не пойму, что вы считаете... Вероятность достижения ТП и СЛ? Так это просто... Вероятность ТП = (СЛ - спред) / (ТП + СЛ) Вероятность СЛ = (ТП + спред) / (ТП + СЛ)
Поскольку копировал пост из другой темы, то остались старые обозначения: TP и SL. Стоит их интерпретировать, как Pips1 и Pips2. Основное заключение сформулировано в Гипотезе.
Скрипт:
Результат сильно зависит от параметра Deviation - разброс (среднеквадратичное отклонение).
Те же графики:
При параметрах по-умолчанию получается схожая зависимость - от квадрата. Но она полностью нарушается при изменении параметра Deviation в сторону.
Проверял рыночные цены на мажорах, зависимость от квадрата сохраняется.
Повтор:
Советник считает количество колен ЗигЗага (не менее Pips) и записывает в файл:
Запускается в тестере с оптимизацией:
График зависимости количества колен от их мин. размера (Pips):
Графики зависимости отношения вероятностей TP и SL (p(SL) / p(TP)) при отношении TP / SL = Koef от размера SL
В логарифмическом масштабе график нагляднее, кстати, будет. Что касается взаимоотношений TP и SL, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере, сделав параметром, например, их отношение. Почему-то мне кажется, что для случайных входов средний итог сделки всегда будет стремиться к спреду, со знаком минус, естественно.
В логарифмическом масштабе график нагляднее, кстати, будет.
Так это просто...
Вероятность ТП = (СЛ - спред) / (ТП + СЛ)
Вероятность СЛ = (ТП + спред) / (ТП + СЛ)
Что касается взаимоотношений TP и SL, то проще и однозначнее в интерпретации устроить лобовую проверку в том же тестере...
Поскольку копировал пост из другой темы, то остались старые обозначения: TP и SL. Стоит их интерпретировать, как Pips1 и Pips2. Основное заключение сформулировано в Гипотезе.
не пойму, что вы считаете... Вероятность достижения ТП и СЛ?
Так это просто...
Вероятность ТП = (СЛ - спред) / (ТП + СЛ)
Вероятность СЛ = (ТП + спред) / (ТП + СЛ)
Проверим - TP = 20, SL = 20 => P(TP)=(SL-2)/(20+20) = 18/40 = 0.45, P(SL)=(TP+2)/(TP+SL) =(20+2)/(20+20)=22/40 = 0.55То есть не равны :))))
Поскольку копировал пост из другой темы, то остались старые обозначения: TP и SL. Стоит их интерпретировать, как Pips1 и Pips2. Основное заключение сформулировано в Гипотезе.
Подправил пост на правильную интерпретацию.
Проверим - TP = 20, SL = 20 => P(TP)=(SL-2)/(20+20) = 18/40 = 0.45, P(SL)=(TP+2)/(TP+SL) =(20+2)/(20+20)=22/40 = 0.55То есть не равны :))))
Когда открываете позицию, вы уже в убытке на величину спреда....
Когда открываете позицию, вы уже в убытке на величину спреда....
А вероятность тут причем?
А вероятность тут причем?Вероятность равна 0.5, если равны расстояния, которые должна пройти цена. СЛ-спред=ТП+спред