фикс опреедения пересечений
parent
bbef0a757b
commit
f76564ab27
|
@ -29,11 +29,10 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var pricesForFinalComparison = new decimal[size];
|
var pricesForFinalComparison = new decimal[size];
|
||||||
var timesForFinalComparison = new DateTime[size];
|
|
||||||
var twavss = new decimal[size];
|
var twavss = new decimal[size];
|
||||||
var twavbs = new decimal[size];
|
var twavbs = new decimal[size];
|
||||||
var times = new DateTime[size];
|
var times = new DateTime[size];
|
||||||
|
var crossings = new List<int>();
|
||||||
for (int shift = 0; shift < size - 1 && shift < prices.Length - 1; shift++)
|
for (int shift = 0; shift < size - 1 && shift < prices.Length - 1; shift++)
|
||||||
{
|
{
|
||||||
s = shift;
|
s = shift;
|
||||||
|
@ -43,7 +42,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
var twavs = CalcTimeWindowAverageValue(timestamps, prices, smallWindow, shift);
|
var twavs = CalcTimeWindowAverageValue(timestamps, prices, smallWindow, shift);
|
||||||
var twavb = CalcTimeWindowAverageValue(timestamps, prices, bigWindow, shift);
|
var twavb = CalcTimeWindowAverageValue(timestamps, prices, bigWindow, shift);
|
||||||
pricesForFinalComparison[i2] = prices[prices.Length - 1 - shift];
|
pricesForFinalComparison[i2] = prices[prices.Length - 1 - shift];
|
||||||
timesForFinalComparison[i2] = timestamps[prices.Length - 1 - shift];
|
|
||||||
if (shift == 0)
|
if (shift == 0)
|
||||||
{
|
{
|
||||||
bigWindowAv = twavb.value;
|
bigWindowAv = twavb.value;
|
||||||
|
@ -52,11 +51,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
twavss[i2] = twavs.value;
|
twavss[i2] = twavs.value;
|
||||||
twavbs[i2] = twavb.value;
|
twavbs[i2] = twavb.value;
|
||||||
times[i2] = twavb.time;
|
times[i2] = twavb.time;
|
||||||
//if (System.Math.Abs(twavb.value - prices[prices.Length - 1]) > 2 * meanfullStep)
|
|
||||||
//{
|
|
||||||
// res |= TradingEvent.StopBuy;
|
|
||||||
// return (res, bigWindowAv, smallWindowAv);
|
|
||||||
//}
|
|
||||||
if (shift > 0)
|
if (shift > 0)
|
||||||
{
|
{
|
||||||
var isCrossing = Lines.IsLinesCrossing(
|
var isCrossing = Lines.IsLinesCrossing(
|
||||||
|
@ -72,13 +67,18 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCrossing.res)
|
if (isCrossing.res)
|
||||||
|
{
|
||||||
|
crossings.Add(i2);
|
||||||
|
|
||||||
|
if (crossings.Count == 2 || (shift + 1 == size - 1 || shift + 1 == prices.Length - 1))
|
||||||
{
|
{
|
||||||
// если фильтрация окном 120 наползает на окно 15 сверху, потенциальное время открытия лонга и закрытия шорта
|
// если фильтрация окном 120 наползает на окно 15 сверху, потенциальное время открытия лонга и закрытия шорта
|
||||||
if (twavss[size - 1] >= twavbs[size - 1] && twavss[size - 2] < twavbs[size - 2])
|
if (twavss[size - 1] >= twavbs[size - 1] && twavss[size - 2] < twavbs[size - 2])
|
||||||
{
|
{
|
||||||
//if (pricesForFinalComparison[i2 + 1] - pricesForFinalComparison[size - 1] >= meanfullStep
|
if (pricesForFinalComparison[crossings[0]] - pricesForFinalComparison[crossings[1]] <= - meanfullStep
|
||||||
// && timesForFinalComparison[size - 1] - timesForFinalComparison[i2 + 1] >= timeForUptreandStart)
|
&& times[crossings[0]] - times[crossings[1]] >= timeForUptreandStart)
|
||||||
{
|
{
|
||||||
res |= TradingEvent.UptrendStart;
|
res |= TradingEvent.UptrendStart;
|
||||||
}
|
}
|
||||||
|
@ -88,8 +88,8 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
// если фильтрация окном 15 наползает на окно 120 сверху, потенциальное время закрытия лонга и возможно открытия шорта
|
// если фильтрация окном 15 наползает на окно 120 сверху, потенциальное время закрытия лонга и возможно открытия шорта
|
||||||
if (twavss[size - 1] <= twavbs[size - 1] && twavss[size - 2] > twavbs[size - 2])
|
if (twavss[size - 1] <= twavbs[size - 1] && twavss[size - 2] > twavbs[size - 2])
|
||||||
{
|
{
|
||||||
//if (pricesForFinalComparison[i2 + 1] - pricesForFinalComparison[size - 1] <= -meanfullStep
|
if (pricesForFinalComparison[crossings[0]] - pricesForFinalComparison[crossings[1]] >= meanfullStep
|
||||||
// && timesForFinalComparison[size - 1] - timesForFinalComparison[i2 + 1] >= timeForUptreandStart)
|
&& times[crossings[0]] - times[crossings[1]] >= timeForUptreandStart)
|
||||||
{
|
{
|
||||||
res |= TradingEvent.UptrendEnd;
|
res |= TradingEvent.UptrendEnd;
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue