예스스탁
예스스탁 답변
2022-10-27 17:11:33
안녕하세요
예스스탁입니다.
최근 N일간의 최고가와 최저가를 기준으로 진입하게 됩니다.
진입/청산의 기준값은 N일간 최저가입니다.
진입가는 N일간최저가 + 고저폭*진입Per 입니다.
청산가는 진입봉기준 N일간최저가 + 고저폭*청산Per 입니다.
1번식은 진입과 청산만 있는 식입니다.
2번식은 신호가 많이 나오지 않아 당일청산을 추가한 식입니다.
식 작성에 참고하시기 바랍니다.
1
input : N(8),진입Per(-23.6),청산Per(61.8);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),hh(0),ll(0),cnt(0),EP(0),XP(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
if Year > 0 Then
{
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
ExitLong();
hh = 0;
ll = 0;
For cnt = 0 to N-1
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if NextBarOpen < EP Then
Buy("b1",AtStop,EP);
Else
Buy("b1.",AtLimit,EP);
}
Else
{
hh = 0;
ll = 0;
For cnt = 1 to N
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if H < EP Then
Buy("b2",AtStop,EP);
if L > EP Then
Buy("b2.",AtLimit,EP);
}
if MarketPosition == 1 Then
{
if MarketPosition != MarketPosition[1] Then
XP = ll[BarsSinceEntry]+(hh[BarsSinceEntry]-ll[BarsSinceEntry])*(청산Per/100);
ExitLong("bx",AtLimit,XP);
}
}
2
input : N(8),진입Per(38.2),청산Per(61.8);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),hh(0),ll(0),cnt(0),EP(0),XP(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
if Year > 0 Then
{
IF ET > ST Then
SetStopEndofday(ET);
Else
{
if NextBarSdate != sDate Then
SetStopEndofday(ET);
}
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
SetStopEndofday(0);
hh = 0;
ll = 0;
For cnt = 0 to N-1
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if NextBarOpen < EP Then
Buy("b1",AtStop,EP);
Else
Buy("b1.",AtLimit,EP);
}
Else
{
hh = 0;
ll = 0;
For cnt = 1 to N
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if H < EP Then
Buy("b2",AtStop,EP);
if L > EP Then
Buy("b2.",AtLimit,EP);
}
if MarketPosition == 1 Then
{
if MarketPosition != MarketPosition[1] Then
XP = ll[BarsSinceEntry]+(hh[BarsSinceEntry]-ll[BarsSinceEntry])*(청산Per/100);
ExitLong("bx",AtLimit,XP);
}
}
즐거운 하루되세요
> 푸른 님이 쓴 글입니다.
> 제목 : 문의 드립니다
> 79323 수식어 작성해 주신거 신호가 전혀 없어서 위 그래프로 다르게 질문드립니다.
그래프는 일봉으로 규정되었는데 일봉과 분봉 2가지 수식어로 부탁드립니다.
일봉은 3가지 종류의 진입청산을 하나의 수식어로 해주시고 각각 진입청산은 1회입니다.
분봉도 동일하게 하루하루가 연결된 구조입니다.