답변완료
전략 손익결과로 진입 사이즈 조절
담당자님 항상 도움 주셔서 감사드립니다.
다름이아니라 전략 성과함수인 NetProfit 결과 자체를 활용하여, 과거 50일 손익 저점 하향 돌파 시 진입 사이즈를 최소화 하고, 과거 50일 손익 고가 돌파 시 진입 사이즈를 증가시키는 로직을 시스템에 적용하고자, 일자별 NetProfit을 배열로 기록하여 활용하고자 하였으나, 어떤 이유인지 전략이 작동하지 않습니다.
번거로우시겟지만 아래 로직에 어떤 문제가 있는지 검토해주시면 감사하겠습니다.
혹시 로직이 비효율적이라면 보다 효율적인 로직을 제안해주시면 감사하겠습니다.
항상 도움 주셔서 감사드립니다.
var: dd(0),Size(0);
Array: Profit[400](0);
#1. 일자기록
if Bdate != Bdate[1] Then
{
dd = dd+1;
Profit[dd] = NetProfit;
}
#2-1. 최근 50일 최저 손익 하향 돌파시 누적일자 기록
if dd > 50
and Profit[dd] < Min(Profit[dd-1],Profit[dd-2],Profit[dd-3],Profit[dd-4],Profit[dd-5],Profit[dd-6],Profit[dd-7],Profit[dd-8],Profit[dd-9],Profit[dd-10],Profit[dd-11],Profit[dd-12],Profit[dd-13],Profit[dd-14],Profit[dd-15],Profit[dd-16],Profit[dd-17],Profit[dd-18],Profit[dd-19],Profit[dd-20],Profit[dd-21],Profit[dd-22],Profit[dd-23],Profit[dd-24],Profit[dd-25],Profit[dd-26],Profit[dd-27],Profit[dd-28],Profit[dd-29],Profit[dd-30],Profit[dd-31],Profit[dd-32],Profit[dd-33],Profit[dd-34],Profit[dd-35],Profit[dd-36],Profit[dd-37],Profit[dd-38],Profit[dd-39],Profit[dd-40],Profit[dd-41],Profit[dd-42],Profit[dd-43],Profit[dd-44],Profit[dd-45],Profit[dd-46],Profit[dd-47],Profit[dd-48],Profit[dd-49],Profit[dd-50])
Then
{
value1 = dd;
}
#2-2. 하향 돌파일자 이후 진입 Size 1
If value1 < dd
and value1 > 0
Then
{
Size = 1;
}
Else //해당하지 않는 경우 size 100
{
Size == 100;
}
#3-1. 최근 50일 최고 손익 상향 돌파 시 누적일자 기록 기록
if dd > 50
and Profit[dd] > Max(Profit[dd-1],Profit[dd-2],Profit[dd-3],Profit[dd-4],Profit[dd-5],Profit[dd-6],Profit[dd-7],Profit[dd-8],Profit[dd-9],Profit[dd-10],Profit[dd-11],Profit[dd-12],Profit[dd-13],Profit[dd-14],Profit[dd-15],Profit[dd-16],Profit[dd-17],Profit[dd-18],Profit[dd-19],Profit[dd-20],Profit[dd-21],Profit[dd-22],Profit[dd-23],Profit[dd-24],Profit[dd-25],Profit[dd-26],Profit[dd-27],Profit[dd-28],Profit[dd-29],Profit[dd-30],Profit[dd-31],Profit[dd-32],Profit[dd-33],Profit[dd-34],Profit[dd-35],Profit[dd-36],Profit[dd-37],Profit[dd-38],Profit[dd-39],Profit[dd-40],Profit[dd-41],Profit[dd-42],Profit[dd-43],Profit[dd-44],Profit[dd-45],Profit[dd-46],Profit[dd-47])
Then
{
value1 = 0;
Value2 = dd;
}
#3-2. 상향 돌파 이후 진입 size 100
If value2 < dd
and Value2 > 0
Then
{
Size = 100;
}
#매수 조건
# 1. 상한선 돌파 매수
if MarketPosition == 0
and DayLow(1) > DayLow(2)
and DayOpen(1) > DayClose(2)
and NextBarSdate > sdate
then
buy("시초매수",AtMarket,Def,Size);
#매도 조건: 시초가 매도
if MarketPosition == 1
and NextBarSdate > sdate Then
{
ExitLong("시초매도",AtMarket,DEF,"");
}
2023-07-30
817
글번호 171050
시스템