예스스탁
예스스탁 답변
2024-05-10 11:39:40
안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if (C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1)) Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if (C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2)) Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : 수식 수정 좀 부탁드립니다.
> 첨부한 수식을 아래와 같이 수정 좀 부탁드립니다.매번 감사드립니다.
1.진입시간(17:00)이후에 최초 진입조건은?
매수-
⓵(17시 이전부터 구름대 상단위에 있고 파라볼릭매수신호상태 인 경우)
전고점 돌파양봉에 실시간 매수
⓶(17시 이전에는 구름대 안에 있거나 아래에 있던 경우
구름대 상단선 돌파하면 실시간 아닌 종가에 매수(파라볼릭 매수신호 상태이면서)
종가상 상단선 돌파하지 못하면 매수안함.
매도-
⓵(17시 이전부터 구름대 하단선 아래에 있고 파라볼릭 매도신호상태 인 경우)
전저점 이탈하는 음봉에서 실시간 매도
⓶(17시 이전에는 구름대 안에 있거나 위에 있던 경우)
구름대 하단선이탈하면 실시간 아닌 종가에 매도(파라볼릭 매도신호 상태이면서)
종가가 하단선 이탈하지 못하면 매도 안함.
2.청산조건
1)파라볼릭 반대신호에 실시간 청산.
2)구름대 상단선 돌파(매도중일때)나 하단선 이탈시(매수중일때) 실시간 청산
--- 5월7일 20시15분에 손절청산되어야? 난 다음 22:00봉 마감후 재매수?
3.두번째부터 나오는 진입조건
※매수
⓵트레일링스탑 청산 후에 바로 다음 봉 시가가 아닌 종가에 재매수
(종가가 구름대 상단선 위에 있으면서 파라볼릭도 매수 상태이어야-구름대 안에 있을 경우 재매수금지
-구름대 안에 있다가 종가가 구름대 상단선에 돌파한 봉에서 종가 매수)
⓶매수 후 파라볼릭 매도신호에 손절 청산한 경우는 파라볼릭 매수 전환 신호에 실시간 아닌 종가에 매수(구름대 상단선 위에 있는 상태에서)
-만약 파라볼릭 점을 터치만 하고 종가가 점 아래에 있으면 매수 안하고 다시 터치한 봉의 고점을 재돌파하는 봉에서 실시간 매수)
③매수 후 구름대 하단선 이탈로 실시간 손절한 경우는 종가가 구름대상단선 위로 올라 오면 종가에 재매수 (파라볼릭은 매수신호상태)
※매도
⓵트레일링 청산 후 바로 다음 봉 시가가 아닌 종가에 재매도
(종가가 구름대하단선 아래에 있으면서 파라볼릭도 매도 상태이어야-구름대 안에 있을 때는 재매도 금지,구름대 안에 있다가 종가가 구름대 하단선을 이탈한 봉에서 종가 재 매도)
⓶매도 후 파라볼릭 매수 신호에 손절 청산한 경우는 파라볼릭 매도 전환 신호에 실 시간이 아닌 봉의 종가에 매도 (구름대 하단선 아래에 있는 상태에서)
-만약 봉중간에 파라볼릭 아래점만 터치하고 종가에는 점위에 있으면 매도 안하고 , 다시 터치했던 전 저점을 이탈하는 봉에서 실시간 매도.
③매도후 구름대 상단선 돌파로 실시간 청산한 경우는 종가가 다시 하단선 아래로 오면 종가에 재매도(파라볼릭은 매도 신호 상태)
input : StartTime(170000),EndTime(55200);
var : Tcond(False);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
//
#
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
if MarketPosition <= 0 then
Buy("b",AtStop,max(var1,value1));
if MarketPosition >= 0 then
Sell("s",AtStop,min(var1,Value2));
if MarketPosition == 1 and Direction == 1 and C > value1 Then
ExitLong("bx",AtStop,var1);
if MarketPosition == -1 and Direction == -1 and C < Value2 Then
ExitShort("sx",AtStop,var1);
}
정말 감사드립니다. 맨날 귀찮게 해드려 죄송합니다.
그런데 수식검증하니 마지막줄에 문법에러,잘못된 토큰 ,<file end>이렇게 나와서 검증이 안되네요...중괄호를 넣어봐도 마찬가지로 나옵니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 수정 좀 부탁드립니다.
> 안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if (C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1)) Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if (C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2)) Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 and C < value2 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 and C > value1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : 수식 수정 좀 부탁드립니다.
> 첨부한 수식을 아래와 같이 수정 좀 부탁드립니다.매번 감사드립니다.
1.진입시간(17:00)이후에 최초 진입조건은?
매수-
⓵(17시 이전부터 구름대 상단위에 있고 파라볼릭매수신호상태 인 경우)
전고점 돌파양봉에 실시간 매수
⓶(17시 이전에는 구름대 안에 있거나 아래에 있던 경우
구름대 상단선 돌파하면 실시간 아닌 종가에 매수(파라볼릭 매수신호 상태이면서)
종가상 상단선 돌파하지 못하면 매수안함.
매도-
⓵(17시 이전부터 구름대 하단선 아래에 있고 파라볼릭 매도신호상태 인 경우)
전저점 이탈하는 음봉에서 실시간 매도
⓶(17시 이전에는 구름대 안에 있거나 위에 있던 경우)
구름대 하단선이탈하면 실시간 아닌 종가에 매도(파라볼릭 매도신호 상태이면서)
종가가 하단선 이탈하지 못하면 매도 안함.
2.청산조건
1)파라볼릭 반대신호에 실시간 청산.
2)구름대 상단선 돌파(매도중일때)나 하단선 이탈시(매수중일때) 실시간 청산
--- 5월7일 20시15분에 손절청산되어야? 난 다음 22:00봉 마감후 재매수?
3.두번째부터 나오는 진입조건
※매수
⓵트레일링스탑 청산 후에 바로 다음 봉 시가가 아닌 종가에 재매수
(종가가 구름대 상단선 위에 있으면서 파라볼릭도 매수 상태이어야-구름대 안에 있을 경우 재매수금지
-구름대 안에 있다가 종가가 구름대 상단선에 돌파한 봉에서 종가 매수)
⓶매수 후 파라볼릭 매도신호에 손절 청산한 경우는 파라볼릭 매수 전환 신호에 실시간 아닌 종가에 매수(구름대 상단선 위에 있는 상태에서)
-만약 파라볼릭 점을 터치만 하고 종가가 점 아래에 있으면 매수 안하고 다시 터치한 봉의 고점을 재돌파하는 봉에서 실시간 매수)
③매수 후 구름대 하단선 이탈로 실시간 손절한 경우는 종가가 구름대상단선 위로 올라 오면 종가에 재매수 (파라볼릭은 매수신호상태)
※매도
⓵트레일링 청산 후 바로 다음 봉 시가가 아닌 종가에 재매도
(종가가 구름대하단선 아래에 있으면서 파라볼릭도 매도 상태이어야-구름대 안에 있을 때는 재매도 금지,구름대 안에 있다가 종가가 구름대 하단선을 이탈한 봉에서 종가 재 매도)
⓶매도 후 파라볼릭 매수 신호에 손절 청산한 경우는 파라볼릭 매도 전환 신호에 실 시간이 아닌 봉의 종가에 매도 (구름대 하단선 아래에 있는 상태에서)
-만약 봉중간에 파라볼릭 아래점만 터치하고 종가에는 점위에 있으면 매도 안하고 , 다시 터치했던 전 저점을 이탈하는 봉에서 실시간 매도.
③매도후 구름대 상단선 돌파로 실시간 청산한 경우는 종가가 다시 하단선 아래로 오면 종가에 재매도(파라볼릭은 매도 신호 상태)
input : StartTime(170000),EndTime(55200);
var : Tcond(False);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
//
#
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
if MarketPosition <= 0 then
Buy("b",AtStop,max(var1,value1));
if MarketPosition >= 0 then
Sell("s",AtStop,min(var1,Value2));
if MarketPosition == 1 and Direction == 1 and C > value1 Then
ExitLong("bx",AtStop,var1);
if MarketPosition == -1 and Direction == -1 and C < Value2 Then
ExitShort("sx",AtStop,var1);
}
예스스탁
예스스탁 답변
2024-05-14 16:12:22
안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
input : short(12),long(26),sig(9);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0),macdo(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
macdo = MACD_OSC(short,long,sig);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] and macdo > 0 Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] and macdo < 0 Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if ((C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1))) and macdo > 0 Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if ((C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2))) and macdo < 0 Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 and abs(macdo) > abs(macdo[1]) Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 and abs(macdo) > abs(macdo[1]) Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 and C < value2 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 and C > value1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : Re : Re : 수식 수정 좀 부탁드립니다.
> 정말 감사드립니다. 맨날 귀찮게 해드려 죄송합니다.
그런데 수식검증하니 마지막줄에 문법에러,잘못된 토큰 ,<file end>이렇게 나와서 검증이 안되네요...중괄호를 넣어봐도 마찬가지로 나옵니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 수정 좀 부탁드립니다.
> 안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if (C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1)) Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if (C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2)) Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 and C < value2 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 and C > value1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : 수식 수정 좀 부탁드립니다.
> 첨부한 수식을 아래와 같이 수정 좀 부탁드립니다.매번 감사드립니다.
1.진입시간(17:00)이후에 최초 진입조건은?
매수-
⓵(17시 이전부터 구름대 상단위에 있고 파라볼릭매수신호상태 인 경우)
전고점 돌파양봉에 실시간 매수
⓶(17시 이전에는 구름대 안에 있거나 아래에 있던 경우
구름대 상단선 돌파하면 실시간 아닌 종가에 매수(파라볼릭 매수신호 상태이면서)
종가상 상단선 돌파하지 못하면 매수안함.
매도-
⓵(17시 이전부터 구름대 하단선 아래에 있고 파라볼릭 매도신호상태 인 경우)
전저점 이탈하는 음봉에서 실시간 매도
⓶(17시 이전에는 구름대 안에 있거나 위에 있던 경우)
구름대 하단선이탈하면 실시간 아닌 종가에 매도(파라볼릭 매도신호 상태이면서)
종가가 하단선 이탈하지 못하면 매도 안함.
2.청산조건
1)파라볼릭 반대신호에 실시간 청산.
2)구름대 상단선 돌파(매도중일때)나 하단선 이탈시(매수중일때) 실시간 청산
--- 5월7일 20시15분에 손절청산되어야? 난 다음 22:00봉 마감후 재매수?
3.두번째부터 나오는 진입조건
※매수
⓵트레일링스탑 청산 후에 바로 다음 봉 시가가 아닌 종가에 재매수
(종가가 구름대 상단선 위에 있으면서 파라볼릭도 매수 상태이어야-구름대 안에 있을 경우 재매수금지
-구름대 안에 있다가 종가가 구름대 상단선에 돌파한 봉에서 종가 매수)
⓶매수 후 파라볼릭 매도신호에 손절 청산한 경우는 파라볼릭 매수 전환 신호에 실시간 아닌 종가에 매수(구름대 상단선 위에 있는 상태에서)
-만약 파라볼릭 점을 터치만 하고 종가가 점 아래에 있으면 매수 안하고 다시 터치한 봉의 고점을 재돌파하는 봉에서 실시간 매수)
③매수 후 구름대 하단선 이탈로 실시간 손절한 경우는 종가가 구름대상단선 위로 올라 오면 종가에 재매수 (파라볼릭은 매수신호상태)
※매도
⓵트레일링 청산 후 바로 다음 봉 시가가 아닌 종가에 재매도
(종가가 구름대하단선 아래에 있으면서 파라볼릭도 매도 상태이어야-구름대 안에 있을 때는 재매도 금지,구름대 안에 있다가 종가가 구름대 하단선을 이탈한 봉에서 종가 재 매도)
⓶매도 후 파라볼릭 매수 신호에 손절 청산한 경우는 파라볼릭 매도 전환 신호에 실 시간이 아닌 봉의 종가에 매도 (구름대 하단선 아래에 있는 상태에서)
-만약 봉중간에 파라볼릭 아래점만 터치하고 종가에는 점위에 있으면 매도 안하고 , 다시 터치했던 전 저점을 이탈하는 봉에서 실시간 매도.
③매도후 구름대 상단선 돌파로 실시간 청산한 경우는 종가가 다시 하단선 아래로 오면 종가에 재매도(파라볼릭은 매도 신호 상태)
input : StartTime(170000),EndTime(55200);
var : Tcond(False);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
//
#
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
if MarketPosition <= 0 then
Buy("b",AtStop,max(var1,value1));
if MarketPosition >= 0 then
Sell("s",AtStop,min(var1,Value2));
if MarketPosition == 1 and Direction == 1 and C > value1 Then
ExitLong("bx",AtStop,var1);
if MarketPosition == -1 and Direction == -1 and C < Value2 Then
ExitShort("sx",AtStop,var1);
}
항상 답변감사드립니다. 오실레이터가 조건에 맞지 않아서 해당봉 종가에 진입을 하지 않았았으나 오실레이터가 조건을 만족하는 봉의 종가에 진입한다로 추가 수정부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 수식 수정 좀 부탁드립니다.
>
안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
input : short(12),long(26),sig(9);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0),macdo(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
macdo = MACD_OSC(short,long,sig);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] and macdo > 0 Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] and macdo < 0 Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if ((C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1))) and macdo > 0 Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if ((C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2))) and macdo < 0 Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 and abs(macdo) > abs(macdo[1]) Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 and abs(macdo) > abs(macdo[1]) Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 and C < value2 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 and C > value1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : Re : Re : 수식 수정 좀 부탁드립니다.
> 정말 감사드립니다. 맨날 귀찮게 해드려 죄송합니다.
그런데 수식검증하니 마지막줄에 문법에러,잘못된 토큰 ,<file end>이렇게 나와서 검증이 안되네요...중괄호를 넣어봐도 마찬가지로 나옵니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 수정 좀 부탁드립니다.
> 안녕하세요
예스스탁입니다.
input : StartTime(170000),EndTime(55200);
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
var : Tcond(False),entry(0),T(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
#당일 첫진입
if entry < 1 Then
{
#첫봉부터 계속 종가가 구름상단 위이고 파라볼릭 매수구간이면 종가가 전봉 고가보다 크면 매수
if T == 1 and C > H[1] Then
Buy("b1");
#첫봉부터 계속 종가가 구름하단 아래이고 파라볼릭 매도구간이면 종가가 전봉 저가보다 작으면 매도
if T == -1 and C < L[1] Then
Sell("s1");
}
#종가가 구름상단 위에서 파라볼릭 매수구간에 들어가거나
#종가가 파라볼릭 매수구간에서 상단을 돌파하면
#매수
if (C > value1 and CrossUp(C,Sarv)) or
(C > Sarv and CrossUp(C,value1)) Then
Buy("b");
#종가가 구름하단 아래에서 파라볼릭 매도구간에 들어가거나
#종가가 파라볼릭 매도구간에서 하단을 돌파하면
#매도
if (C < value2 and CrossDown(C,Sarv)) or
(C < Sarv and CrossDown(C,value2)) Then
Sell("s");
#트레일링스탑이후 다음봉 종가에 재진입
if entry > 1 and
MarketPosition == 0 and BarsSinceExit(1) == 1 and
IsExitName("StopTrailing",1) == true Then
{
#재매수
if MarketPosition(1) == 1 Then
Buy("bb");
#재매도
if MarketPosition(1) == -1 Then
Sell("ss");
}
#매수진입후 파라볼릭 매도구간에 들어가면 즉시 청산
if MarketPosition == 1 and Direction == 1 Then
ExitLong("bx1",AtStop,var1);
#매수진입후 구름하단을 이탈하면 즉시 청산
if MarketPosition == 1 and C < value2 Then
ExitLong("bx2",AtStop,Value2);
#매도진입후 파라볼릭 매수구간에 들어가면 즉시 청산
if MarketPosition == -1 and Direction == -1 Then
ExitShort("sx1",AtStop,var1);
#매도진입후 상단을 돌파하면 즉시 청산
if MarketPosition == -1 and C > value1 Then
ExitShort("sx2",AtStop,value1);
}
즐거운 하루되세요
> 산수유 님이 쓴 글입니다.
> 제목 : 수식 수정 좀 부탁드립니다.
> 첨부한 수식을 아래와 같이 수정 좀 부탁드립니다.매번 감사드립니다.
1.진입시간(17:00)이후에 최초 진입조건은?
매수-
⓵(17시 이전부터 구름대 상단위에 있고 파라볼릭매수신호상태 인 경우)
전고점 돌파양봉에 실시간 매수
⓶(17시 이전에는 구름대 안에 있거나 아래에 있던 경우
구름대 상단선 돌파하면 실시간 아닌 종가에 매수(파라볼릭 매수신호 상태이면서)
종가상 상단선 돌파하지 못하면 매수안함.
매도-
⓵(17시 이전부터 구름대 하단선 아래에 있고 파라볼릭 매도신호상태 인 경우)
전저점 이탈하는 음봉에서 실시간 매도
⓶(17시 이전에는 구름대 안에 있거나 위에 있던 경우)
구름대 하단선이탈하면 실시간 아닌 종가에 매도(파라볼릭 매도신호 상태이면서)
종가가 하단선 이탈하지 못하면 매도 안함.
2.청산조건
1)파라볼릭 반대신호에 실시간 청산.
2)구름대 상단선 돌파(매도중일때)나 하단선 이탈시(매수중일때) 실시간 청산
--- 5월7일 20시15분에 손절청산되어야? 난 다음 22:00봉 마감후 재매수?
3.두번째부터 나오는 진입조건
※매수
⓵트레일링스탑 청산 후에 바로 다음 봉 시가가 아닌 종가에 재매수
(종가가 구름대 상단선 위에 있으면서 파라볼릭도 매수 상태이어야-구름대 안에 있을 경우 재매수금지
-구름대 안에 있다가 종가가 구름대 상단선에 돌파한 봉에서 종가 매수)
⓶매수 후 파라볼릭 매도신호에 손절 청산한 경우는 파라볼릭 매수 전환 신호에 실시간 아닌 종가에 매수(구름대 상단선 위에 있는 상태에서)
-만약 파라볼릭 점을 터치만 하고 종가가 점 아래에 있으면 매수 안하고 다시 터치한 봉의 고점을 재돌파하는 봉에서 실시간 매수)
③매수 후 구름대 하단선 이탈로 실시간 손절한 경우는 종가가 구름대상단선 위로 올라 오면 종가에 재매수 (파라볼릭은 매수신호상태)
※매도
⓵트레일링 청산 후 바로 다음 봉 시가가 아닌 종가에 재매도
(종가가 구름대하단선 아래에 있으면서 파라볼릭도 매도 상태이어야-구름대 안에 있을 때는 재매도 금지,구름대 안에 있다가 종가가 구름대 하단선을 이탈한 봉에서 종가 재 매도)
⓶매도 후 파라볼릭 매수 신호에 손절 청산한 경우는 파라볼릭 매도 전환 신호에 실 시간이 아닌 봉의 종가에 매도 (구름대 하단선 아래에 있는 상태에서)
-만약 봉중간에 파라볼릭 아래점만 터치하고 종가에는 점위에 있으면 매도 안하고 , 다시 터치했던 전 저점을 이탈하는 봉에서 실시간 매도.
③매도후 구름대 상단선 돌파로 실시간 청산한 경우는 종가가 다시 하단선 아래로 오면 종가에 재매도(파라볼릭은 매도 신호 상태)
input : StartTime(170000),EndTime(55200);
var : Tcond(False);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),Sarv(0);
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
선행스팬1 = (전환선[25]+기준선[25])/2;
선행스팬2 = (highest(H,52)[25]+lowest(L,52)[25])/2;
value1 = max(선행스팬1,선행스팬2);
value2 = min(선행스팬1,선행스팬2);
//
#
if Sarv > 0 Then
{
#다음봉 파라볼릭을 미리 계산
var1 = Sarv+(AF_value)*(EP-SAR_Value);
if MarketPosition <= 0 then
Buy("b",AtStop,max(var1,value1));
if MarketPosition >= 0 then
Sell("s",AtStop,min(var1,Value2));
if MarketPosition == 1 and Direction == 1 and C > value1 Then
ExitLong("bx",AtStop,var1);
if MarketPosition == -1 and Direction == -1 and C < Value2 Then
ExitShort("sx",AtStop,var1);
}