슈고하십니다
아래식 조건으로 시뮬레이션챠트로 매매 결과를 검토하는 중
실제에서는 설정된 봉시간내에 먼저 손절값에 도달한 후에
익절값에 다시 도달했을시는 손절이 되어 표기될 매매가 익절로 바뀌어 표기가 되어
(실제는 손절인데 익절로 표기)
정확한 결과 값을 알 수 없게 되는데
정확한 결과 값을 가지려면 어떻게 해야 하나요..
input : ntime(60);
input : StartTime(70000),EndTime(50000);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),SumSqrt(0),Stdv(0);
var : sum(0),BBmd(0),Bbup(0),BBdn(0);
Array : CC[100](0);
var : Tcond(false);
if (NextBarSdate != sdate and NextBarStime >= EndTime) or
(NextBarSdate == sdate and NextBarStime >= EndTime and stime < EndTime) Then
Tcond = False;
if (NextBarSdate != sdate and NextBarStime >= StartTime) or
(NextBarSdate == sdate and NextBarStime >= StartTime and stime < StartTime) Then
{
Tcond = true;
S1 = TimeToMinutes(NextBarStime);
D1 = NextBarSdate;
}
if D1 > 0 then
{
if NextBarSdate == D1 Then
TM = TimeToMinutes(NextBarStime)-S1;
Else
TM = TimeToMinutes(NextBarStime)+1440-S1;
TF = TM%ntime;
if NextBarSdate != sdate or
(NextBarSdate == sdate and ntime > 1 and TF < TF[1]) or
(NextBarSdate == sdate and ntime > 1 and TM >= TM[1]+ntime) or
(NextBarSdate == sdate and ntime == 1 and TM > TM[1]) Then
{
var1 = NextBarOpen;
}
if Tcond == true and MarketPosition <= 0 Then
Buy("시작매수",AtStop,var1+PriceScale*10);
if Tcond == true and MarketPosition >= 0 Then
Sell("시작매도",AtStop,var1-PriceScale*10);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
SetStopProfittarget(PriceScale*10,PointStop);
SetStopLoss(PriceScale*10,PointStop);
답변 1
예스스탁
예스스탁 답변
2023-02-08 14:30:25
안녕하세요
예스스탁입니다.
차트의 과거봉에는 모든 거래에 대한 체결정보가 있지 않습니다.
시고저종가만으로 봉을 그리게 되어 봉 내부의 정확한 움직임을 알수 없습니다.
그래서 차트의 과거봉은 움직임에 대한 가설을 만들고
해당 가설과 같이 움직인것으로 보고 신호를 발생합니다.
이에 따라 봉미완성시에 여러개의 신호가 발생할 수 있으면
신호발생 순서가 실제와 다른 경우가 생길 수 있습니다.
올려주신 내용은 수식으로 별도로 처리할 방법이 업습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 예스요 님이 쓴 글입니다.
> 제목 : 문의 드립니다.~~~~
> 슈고하십니다
아래식 조건으로 시뮬레이션챠트로 매매 결과를 검토하는 중
실제에서는 설정된 봉시간내에 먼저 손절값에 도달한 후에
익절값에 다시 도달했을시는 손절이 되어 표기될 매매가 익절로 바뀌어 표기가 되어
(실제는 손절인데 익절로 표기)
정확한 결과 값을 알 수 없게 되는데
정확한 결과 값을 가지려면 어떻게 해야 하나요..
input : ntime(60);
input : StartTime(70000),EndTime(50000);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),SumSqrt(0),Stdv(0);
var : sum(0),BBmd(0),Bbup(0),BBdn(0);
Array : CC[100](0);
var : Tcond(false);
if (NextBarSdate != sdate and NextBarStime >= EndTime) or
(NextBarSdate == sdate and NextBarStime >= EndTime and stime < EndTime) Then
Tcond = False;
if (NextBarSdate != sdate and NextBarStime >= StartTime) or
(NextBarSdate == sdate and NextBarStime >= StartTime and stime < StartTime) Then
{
Tcond = true;
S1 = TimeToMinutes(NextBarStime);
D1 = NextBarSdate;
}
if D1 > 0 then
{
if NextBarSdate == D1 Then
TM = TimeToMinutes(NextBarStime)-S1;
Else
TM = TimeToMinutes(NextBarStime)+1440-S1;
TF = TM%ntime;
if NextBarSdate != sdate or
(NextBarSdate == sdate and ntime > 1 and TF < TF[1]) or
(NextBarSdate == sdate and ntime > 1 and TM >= TM[1]+ntime) or
(NextBarSdate == sdate and ntime == 1 and TM > TM[1]) Then
{
var1 = NextBarOpen;
}
if Tcond == true and MarketPosition <= 0 Then
Buy("시작매수",AtStop,var1+PriceScale*10);
if Tcond == true and MarketPosition >= 0 Then
Sell("시작매도",AtStop,var1-PriceScale*10);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
SetStopProfittarget(PriceScale*10,PointStop);
SetStopLoss(PriceScale*10,PointStop);