2ba8def9bb
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Has been cancelled
Quant Engine CI/CD Pipeline / validate-core (pull_request) Has been cancelled
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Has been cancelled
43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using System;
|
|
|
|
namespace QuantEngine.Core.Domain
|
|
{
|
|
public class PullbackTriggerResult
|
|
{
|
|
public string PullbackEntryVerdict { get; set; } = "ABOVE_PULLBACK_ZONE";
|
|
public string PullbackState { get; set; } = "BLOCKED";
|
|
public double PullbackEntryTriggerPrice { get; set; }
|
|
public double PullbackUpperBand { get; set; }
|
|
}
|
|
|
|
public static class PullbackTriggerCalculator
|
|
{
|
|
public static PullbackTriggerResult ComputePullbackTrigger(double close, double ma20, double atr20)
|
|
{
|
|
double triggerPrice = KrxTickNormalizer.NormalizeTick(ma20 - 0.5 * atr20);
|
|
double upperBand = ma20 * 1.03;
|
|
string verdict;
|
|
string state;
|
|
|
|
if (close <= upperBand)
|
|
{
|
|
verdict = "PULLBACK_ZONE";
|
|
state = "PASS";
|
|
}
|
|
else
|
|
{
|
|
verdict = "ABOVE_PULLBACK_ZONE";
|
|
state = "BLOCKED";
|
|
}
|
|
|
|
return new PullbackTriggerResult
|
|
{
|
|
PullbackEntryVerdict = verdict,
|
|
PullbackState = state,
|
|
PullbackEntryTriggerPrice = triggerPrice,
|
|
PullbackUpperBand = KrxTickNormalizer.NormalizeTick(upperBand)
|
|
};
|
|
}
|
|
}
|
|
}
|