예스스탁
예스스탁 답변
2021-01-28 16:09:56
안녕하세요
예스스탁입니다.
1
특정가격보다 위에서 가격이 형성되다가
하락해서 특정가격을 터치할때 즉시 진입하고자 할떄 사용됩니다.
구사하는 내용에 따라 onclose보다 더 빨리 진입할 수 있습니다.
2
신호타입이 지정되어 있지 않으면 onclose입니다.
3
이전문의에 시간을 증가단위 3600으로 최적화를 하신다고 질문올리셔서 답변드린 내용입니다.
ntime(090000)
이값에 3600을 더하면
93600은 차트에 93600으로 리턴되는 시간이 있으므로 정상적으로 신호가 적용되지만
97200은 차트에 차트에 이런값으로 리턴되는 시간이 없으므로
해당 최적화 조건으로는 신호가 발생하지 않습니다.
즉 90000에 7200이 더해지면 101200로 값이 지정되는 것이 아니고
단순 숫자 더하기로 97200이 되서 36분 간격으로 증가해서
101200봉으로 신호가 적용되어 최적화가 되지 않는 다는 의미입니다.
그래서 이전문의에 시간을 최적화 하신다면 시간을 TimeToMinutes함수로 변환해서
사용하는 방법을 올려드린 것 입니다.
4
하루에 한번이면 없어도 됩니다.
당일 진입회수를 늘리게 되면 필요한 내용입니다.
5
손절매는 매수는 진입가 - 설정값, 매도진입은 진입가 + 설정값입니다.
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
위 내용으로 식을 적용해 보았지만 첨부된 그림과 같이
나스닥 몇년동안의 시뮬레이션에서 손절매 신호가 있지는 않습니다.
적용하신 프로그램명과 주기를 올려주시기 바랍니다.
6
if문과 atlimit의 조건은 같은봉에 동시충족되는 것이 아닙니다.
하나의 봉이 완성시에 if조건이 만족하면 DayOpen-10이 셋팅되고
다음봉 미완성시에 현재가가 DayOpen-10과 같거나 낮은 시세가 발생하면 즉시 매수신호가 발생합니다.
즉 신호가 난 봉을 기준으로는 if문은 전봉에 만족한 것입니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
> 1. <<<신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입>>>
onclose가 더 빠른데 왜 atlimit를 사용하죠?
2. -buy()- 는 어떤 신호타잎인지요?
3. <<<시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다>>>
그러면 아래 시작시간과 종료시간을 9시와 15시30분으로 보내 안되나요?
아니면 입력 값은 시간인데 변수로 리턴되는 값은 시간이 아니라는 것인지요?
input : ntime(090000),Xtime(153000)
4. <<< L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.>>>
어차피 하루 1번 진입으로 카운팅되기때문에 필요 없지 않나요?
5. 나스닥에서 상식적인 손절 범위를 벗어나게 십만포인트를 설정햬는데도 손절이 발생하는데 공식에 어떤문제가 있는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
아래는 정상으로 나옵니다
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
SetStopProfittarget(20,PointStop);
6. 아래 수식에서 저가가 DayOpen-10 보다 커야 buy가 수행되는 전제조건인데 buy는 DayOpen-10 이하가 되어야 수행이 되니 어케 체결이 되는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시 확인 요청드립니다
> 안녕하세요
예스스탁입니다.
1.2
var1~var99, value1~value99
위 변수는 선언없이 사용가능한 내부저장변수입니다.
내부적으로 미리 0으로 모두 선언이 된 상태입니다.
해당 수식에서는 ntime봉의 시가를 저장하게 작성이 되어 있습니다.
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
4
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입입니다.
봉이 지정한 가격보다 위에 형성되어 있다가 하락해서
var1-매수포인트를 처음 터치할때 진입하게 작성된 내용입니다.
L > var1-매수포인트가 없으면 손절등 청산뒤에
계속 해당 가격아래 있으면 바로 또 매수가 발생하게 됩니다.
5
L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.
6
시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다.
시간을 최적화해 보고자 하시면
아래와 같이 시간을 특별한 단위로 변경해서 사용하셔야 합니다.
TimeToMinutes은 시간을 0시이후 경과된 분으로 리턴해 주는 함수입니다.
7시면 420분으로 리턴됩니다.
최적화에서 36단위로 최적화 하시면 됩니다.
input : ntime(420),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
var : T1(0),TM(0);
TM = TimeToMinutes(stime);
T1 = TimeToMinutes(ntime);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and TM >= T1) or
(sdate == sdate[1] and TM >= T1 and TM[1] < T1) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 다시 확인 요청드립니다
> 안녕하세요~~
전에 만들어주신 식중 일부입니다 (시초가가 매수포인트(변수) 만큼 하락시 매수하라)
input : ntime(70000),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
1. 내부(겸 내장)변수 var1은 초기값이 0 인데 내부변수 선언은 왜 없는지요?
2. 상기식에서-messagelog("%.f",var1)-하면 var1 값이 초기값 0으로 나오고 실행은 시초가로 작동하는것 같은데 어떻게 할당이 된건지요?
4. 어차피 시초가 대비 무조건 진입인데 상기식중 -AND L > var1-매수포인트- 가 왜 필요한지요?
5. -L < var1-매수포인트- 로 변경하면 어케 다른지요?
6. ntime을 070000~090000 (증가단위 3600 최적화) 돌리면 77200 이나 88000 같은 값이 나오는데 몇시로 봐야하는지요?
수식 올려드립니다~
1. 예스트레이더(유진) 5분봉 2020년 1년간 / 아래수식에서 손절 220회 발생합니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-15 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,익절);
2. 상기식에서 Exitlong("c",atlimit,익절);를 SetStopProfittarget(익절,PointStop); 로
변경하면 정상 작동합니다.
3.정상 작동시 and L > DayOpen-15 를 삭제하면 결과 값이 달라지는데 이유가 무엇인지요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
특정가격보다 위에서 가격이 형성되다가
하락해서 특정가격을 터치할때 즉시 진입하고자 할떄 사용됩니다.
구사하는 내용에 따라 onclose보다 더 빨리 진입할 수 있습니다.
2
신호타입이 지정되어 있지 않으면 onclose입니다.
3
이전문의에 시간을 증가단위 3600으로 최적화를 하신다고 질문올리셔서 답변드린 내용입니다.
ntime(090000)
이값에 3600을 더하면
93600은 차트에 93600으로 리턴되는 시간이 있으므로 정상적으로 신호가 적용되지만
97200은 차트에 차트에 이런값으로 리턴되는 시간이 없으므로
해당 최적화 조건으로는 신호가 발생하지 않습니다.
즉 90000에 7200이 더해지면 101200로 값이 지정되는 것이 아니고
단순 숫자 더하기로 97200이 되서 36분 간격으로 증가해서
101200봉으로 신호가 적용되어 최적화가 되지 않는 다는 의미입니다.
그래서 이전문의에 시간을 최적화 하신다면 시간을 TimeToMinutes함수로 변환해서
사용하는 방법을 올려드린 것 입니다.
4
하루에 한번이면 없어도 됩니다.
당일 진입회수를 늘리게 되면 필요한 내용입니다.
5
손절매는 매수는 진입가 - 설정값, 매도진입은 진입가 + 설정값입니다.
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
위 내용으로 식을 적용해 보았지만 첨부된 그림과 같이
나스닥 몇년동안의 시뮬레이션에서 손절매 신호가 있지는 않습니다.
적용하신 프로그램명과 주기를 올려주시기 바랍니다.
6
if문과 atlimit의 조건은 같은봉에 동시충족되는 것이 아닙니다.
하나의 봉이 완성시에 if조건이 만족하면 DayOpen-10이 셋팅되고
다음봉 미완성시에 현재가가 DayOpen-10과 같거나 낮은 시세가 발생하면 즉시 매수신호가 발생합니다.
즉 신호가 난 봉을 기준으로는 if문은 전봉에 만족한 것입니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
> 1. <<<신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입>>>
onclose가 더 빠른데 왜 atlimit를 사용하죠?
2. -buy()- 는 어떤 신호타잎인지요?
3. <<<시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다>>>
그러면 아래 시작시간과 종료시간을 9시와 15시30분으로 보내 안되나요?
아니면 입력 값은 시간인데 변수로 리턴되는 값은 시간이 아니라는 것인지요?
input : ntime(090000),Xtime(153000)
4. <<< L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.>>>
어차피 하루 1번 진입으로 카운팅되기때문에 필요 없지 않나요?
5. 나스닥에서 상식적인 손절 범위를 벗어나게 십만포인트를 설정햬는데도 손절이 발생하는데 공식에 어떤문제가 있는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
아래는 정상으로 나옵니다
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
SetStopProfittarget(20,PointStop);
6. 아래 수식에서 저가가 DayOpen-10 보다 커야 buy가 수행되는 전제조건인데 buy는 DayOpen-10 이하가 되어야 수행이 되니 어케 체결이 되는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시 확인 요청드립니다
> 안녕하세요
예스스탁입니다.
1.2
var1~var99, value1~value99
위 변수는 선언없이 사용가능한 내부저장변수입니다.
내부적으로 미리 0으로 모두 선언이 된 상태입니다.
해당 수식에서는 ntime봉의 시가를 저장하게 작성이 되어 있습니다.
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
4
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입입니다.
봉이 지정한 가격보다 위에 형성되어 있다가 하락해서
var1-매수포인트를 처음 터치할때 진입하게 작성된 내용입니다.
L > var1-매수포인트가 없으면 손절등 청산뒤에
계속 해당 가격아래 있으면 바로 또 매수가 발생하게 됩니다.
5
L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.
6
시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다.
시간을 최적화해 보고자 하시면
아래와 같이 시간을 특별한 단위로 변경해서 사용하셔야 합니다.
TimeToMinutes은 시간을 0시이후 경과된 분으로 리턴해 주는 함수입니다.
7시면 420분으로 리턴됩니다.
최적화에서 36단위로 최적화 하시면 됩니다.
input : ntime(420),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
var : T1(0),TM(0);
TM = TimeToMinutes(stime);
T1 = TimeToMinutes(ntime);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and TM >= T1) or
(sdate == sdate[1] and TM >= T1 and TM[1] < T1) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 다시 확인 요청드립니다
> 안녕하세요~~
전에 만들어주신 식중 일부입니다 (시초가가 매수포인트(변수) 만큼 하락시 매수하라)
input : ntime(70000),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
1. 내부(겸 내장)변수 var1은 초기값이 0 인데 내부변수 선언은 왜 없는지요?
2. 상기식에서-messagelog("%.f",var1)-하면 var1 값이 초기값 0으로 나오고 실행은 시초가로 작동하는것 같은데 어떻게 할당이 된건지요?
4. 어차피 시초가 대비 무조건 진입인데 상기식중 -AND L > var1-매수포인트- 가 왜 필요한지요?
5. -L < var1-매수포인트- 로 변경하면 어케 다른지요?
6. ntime을 070000~090000 (증가단위 3600 최적화) 돌리면 77200 이나 88000 같은 값이 나오는데 몇시로 봐야하는지요?
예스스탁
예스스탁 답변
2021-01-28 17:53:32
안녕하세요
예스스탁입니다.
1
Exitlong("c",atlimit,익절);
현재 220회 거래는 매수후 청산이 모두 "c"라는 신호로 발생되고 있습니다.
거래내역에
setstoploss로 청산이 발생하면 청산명은 StopLoss
SetStopProfittarget로 청산이 발생하면 StopProfittarget으로 표시됩니다.
2
Exitlong("c",atlimit,익절);
위 내용에서 익절은 값이 100입니다.
작성하신 청산내용이 100포인트 수익이 아닙니다.
가격이 100보다 크면 청산하라는 내용입니다.
그러므로 entryprice+익절와 같이 값을 지정해서
진입가대비 100포인트 큰값으로 지정해야 합니다.
100포인트 익절시 청산은 아래와 같이 작성되어야 합니다.
Exitlong("c",atlimit,entryprice+익절);
3
L > DayOpen-15를 제거하면 신호발생 조건이 달라지게 됩니다.
if MarketPosition == 0 and entry < 1 and L > DayOpen-15 Then
Buy("b",AtLimit,DayOpen-10);
위식은 저가가 이미 시초가-15까지 내려간 상태에서 봉이 완성되면
다음봉의 시세가 시초가-10 이하이면 매수진입하게 됩니다.
L > DayOpen-15이 없으면
완성봉의 저가의 위치에 대한 조건이 없어지므로
다음봉시세가 시초가-10이하만 되면 신호가 발생하게 됩니다.
차트에서 신호가 발생한 봉을 기준으로 전봉이 시초가-15이하인지 아닌지 확인해보시면 됩니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : Re : Re : 수식문의합니다~~
> 수식 올려드립니다~
1. 예스트레이더(유진) 5분봉 2020년 1년간 / 아래수식에서 손절 220회 발생합니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-15 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,익절);
2. 상기식에서 Exitlong("c",atlimit,익절);를 SetStopProfittarget(익절,PointStop); 로
변경하면 정상 작동합니다.
3.정상 작동시 and L > DayOpen-15 를 삭제하면 결과 값이 달라지는데 이유가 무엇인지요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
특정가격보다 위에서 가격이 형성되다가
하락해서 특정가격을 터치할때 즉시 진입하고자 할떄 사용됩니다.
구사하는 내용에 따라 onclose보다 더 빨리 진입할 수 있습니다.
2
신호타입이 지정되어 있지 않으면 onclose입니다.
3
이전문의에 시간을 증가단위 3600으로 최적화를 하신다고 질문올리셔서 답변드린 내용입니다.
ntime(090000)
이값에 3600을 더하면
93600은 차트에 93600으로 리턴되는 시간이 있으므로 정상적으로 신호가 적용되지만
97200은 차트에 차트에 이런값으로 리턴되는 시간이 없으므로
해당 최적화 조건으로는 신호가 발생하지 않습니다.
즉 90000에 7200이 더해지면 101200로 값이 지정되는 것이 아니고
단순 숫자 더하기로 97200이 되서 36분 간격으로 증가해서
101200봉으로 신호가 적용되어 최적화가 되지 않는 다는 의미입니다.
그래서 이전문의에 시간을 최적화 하신다면 시간을 TimeToMinutes함수로 변환해서
사용하는 방법을 올려드린 것 입니다.
4
하루에 한번이면 없어도 됩니다.
당일 진입회수를 늘리게 되면 필요한 내용입니다.
5
손절매는 매수는 진입가 - 설정값, 매도진입은 진입가 + 설정값입니다.
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
위 내용으로 식을 적용해 보았지만 첨부된 그림과 같이
나스닥 몇년동안의 시뮬레이션에서 손절매 신호가 있지는 않습니다.
적용하신 프로그램명과 주기를 올려주시기 바랍니다.
6
if문과 atlimit의 조건은 같은봉에 동시충족되는 것이 아닙니다.
하나의 봉이 완성시에 if조건이 만족하면 DayOpen-10이 셋팅되고
다음봉 미완성시에 현재가가 DayOpen-10과 같거나 낮은 시세가 발생하면 즉시 매수신호가 발생합니다.
즉 신호가 난 봉을 기준으로는 if문은 전봉에 만족한 것입니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
> 1. <<<신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입>>>
onclose가 더 빠른데 왜 atlimit를 사용하죠?
2. -buy()- 는 어떤 신호타잎인지요?
3. <<<시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다>>>
그러면 아래 시작시간과 종료시간을 9시와 15시30분으로 보내 안되나요?
아니면 입력 값은 시간인데 변수로 리턴되는 값은 시간이 아니라는 것인지요?
input : ntime(090000),Xtime(153000)
4. <<< L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.>>>
어차피 하루 1번 진입으로 카운팅되기때문에 필요 없지 않나요?
5. 나스닥에서 상식적인 손절 범위를 벗어나게 십만포인트를 설정햬는데도 손절이 발생하는데 공식에 어떤문제가 있는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
아래는 정상으로 나옵니다
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
SetStopProfittarget(20,PointStop);
6. 아래 수식에서 저가가 DayOpen-10 보다 커야 buy가 수행되는 전제조건인데 buy는 DayOpen-10 이하가 되어야 수행이 되니 어케 체결이 되는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시 확인 요청드립니다
> 안녕하세요
예스스탁입니다.
1.2
var1~var99, value1~value99
위 변수는 선언없이 사용가능한 내부저장변수입니다.
내부적으로 미리 0으로 모두 선언이 된 상태입니다.
해당 수식에서는 ntime봉의 시가를 저장하게 작성이 되어 있습니다.
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
4
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입입니다.
봉이 지정한 가격보다 위에 형성되어 있다가 하락해서
var1-매수포인트를 처음 터치할때 진입하게 작성된 내용입니다.
L > var1-매수포인트가 없으면 손절등 청산뒤에
계속 해당 가격아래 있으면 바로 또 매수가 발생하게 됩니다.
5
L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.
6
시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다.
시간을 최적화해 보고자 하시면
아래와 같이 시간을 특별한 단위로 변경해서 사용하셔야 합니다.
TimeToMinutes은 시간을 0시이후 경과된 분으로 리턴해 주는 함수입니다.
7시면 420분으로 리턴됩니다.
최적화에서 36단위로 최적화 하시면 됩니다.
input : ntime(420),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
var : T1(0),TM(0);
TM = TimeToMinutes(stime);
T1 = TimeToMinutes(ntime);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and TM >= T1) or
(sdate == sdate[1] and TM >= T1 and TM[1] < T1) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 다시 확인 요청드립니다
> 안녕하세요~~
전에 만들어주신 식중 일부입니다 (시초가가 매수포인트(변수) 만큼 하락시 매수하라)
input : ntime(70000),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
1. 내부(겸 내장)변수 var1은 초기값이 0 인데 내부변수 선언은 왜 없는지요?
2. 상기식에서-messagelog("%.f",var1)-하면 var1 값이 초기값 0으로 나오고 실행은 시초가로 작동하는것 같은데 어떻게 할당이 된건지요?
4. 어차피 시초가 대비 무조건 진입인데 상기식중 -AND L > var1-매수포인트- 가 왜 필요한지요?
5. -L < var1-매수포인트- 로 변경하면 어케 다른지요?
6. ntime을 070000~090000 (증가단위 3600 최적화) 돌리면 77200 이나 88000 같은 값이 나오는데 몇시로 봐야하는지요?
1.같은 결과입니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,entryprice+익절);
2. 저는 익절을 진입가가 아니고 시가에 연동시키기위하여
아래 공식을 사용하려 합니다
Exitlong("c",atlimit,entryprice+익절)
3. 아래는 하루 1번진입, 개장전 예스 수행하면 개장즉시 진입 맞나요?
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 Then
Buy();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
Exitlong("c",atlimit,익절);
현재 220회 거래는 매수후 청산이 모두 "c"라는 신호로 발생되고 있습니다.
거래내역에
setstoploss로 청산이 발생하면 청산명은 StopLoss
SetStopProfittarget로 청산이 발생하면 StopProfittarget으로 표시됩니다.
2
Exitlong("c",atlimit,익절);
위 내용에서 익절은 값이 100입니다.
작성하신 청산내용이 100포인트 수익이 아닙니다.
가격이 100보다 크면 청산하라는 내용입니다.
그러므로 entryprice+익절와 같이 값을 지정해서
진입가대비 100포인트 큰값으로 지정해야 합니다.
100포인트 익절시 청산은 아래와 같이 작성되어야 합니다.
Exitlong("c",atlimit,entryprice+익절);
> 코퍼 님이 쓴 글입니다.
> 제목 : Re : Re : 수식문의합니다~~
> 수식 올려드립니다~
1. 예스트레이더(유진) 5분봉 2020년 1년간 / 아래수식에서 손절 220회 발생합니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-15 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,익절);
2. 상기식에서 Exitlong("c",atlimit,익절);를 SetStopProfittarget(익절,PointStop); 로
변경하면 정상 작동합니다.
3.정상 작동시 and L > DayOpen-15 를 삭제하면 결과 값이 달라지는데 이유가 무엇인지요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
특정가격보다 위에서 가격이 형성되다가
하락해서 특정가격을 터치할때 즉시 진입하고자 할떄 사용됩니다.
구사하는 내용에 따라 onclose보다 더 빨리 진입할 수 있습니다.
2
신호타입이 지정되어 있지 않으면 onclose입니다.
3
이전문의에 시간을 증가단위 3600으로 최적화를 하신다고 질문올리셔서 답변드린 내용입니다.
ntime(090000)
이값에 3600을 더하면
93600은 차트에 93600으로 리턴되는 시간이 있으므로 정상적으로 신호가 적용되지만
97200은 차트에 차트에 이런값으로 리턴되는 시간이 없으므로
해당 최적화 조건으로는 신호가 발생하지 않습니다.
즉 90000에 7200이 더해지면 101200로 값이 지정되는 것이 아니고
단순 숫자 더하기로 97200이 되서 36분 간격으로 증가해서
101200봉으로 신호가 적용되어 최적화가 되지 않는 다는 의미입니다.
그래서 이전문의에 시간을 최적화 하신다면 시간을 TimeToMinutes함수로 변환해서
사용하는 방법을 올려드린 것 입니다.
4
하루에 한번이면 없어도 됩니다.
당일 진입회수를 늘리게 되면 필요한 내용입니다.
5
손절매는 매수는 진입가 - 설정값, 매도진입은 진입가 + 설정값입니다.
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
위 내용으로 식을 적용해 보았지만 첨부된 그림과 같이
나스닥 몇년동안의 시뮬레이션에서 손절매 신호가 있지는 않습니다.
적용하신 프로그램명과 주기를 올려주시기 바랍니다.
6
if문과 atlimit의 조건은 같은봉에 동시충족되는 것이 아닙니다.
하나의 봉이 완성시에 if조건이 만족하면 DayOpen-10이 셋팅되고
다음봉 미완성시에 현재가가 DayOpen-10과 같거나 낮은 시세가 발생하면 즉시 매수신호가 발생합니다.
즉 신호가 난 봉을 기준으로는 if문은 전봉에 만족한 것입니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
> 1. <<<신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입>>>
onclose가 더 빠른데 왜 atlimit를 사용하죠?
2. -buy()- 는 어떤 신호타잎인지요?
3. <<<시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다>>>
그러면 아래 시작시간과 종료시간을 9시와 15시30분으로 보내 안되나요?
아니면 입력 값은 시간인데 변수로 리턴되는 값은 시간이 아니라는 것인지요?
input : ntime(090000),Xtime(153000)
4. <<< L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.>>>
어차피 하루 1번 진입으로 카운팅되기때문에 필요 없지 않나요?
5. 나스닥에서 상식적인 손절 범위를 벗어나게 십만포인트를 설정햬는데도 손절이 발생하는데 공식에 어떤문제가 있는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
아래는 정상으로 나옵니다
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
SetStopProfittarget(20,PointStop);
6. 아래 수식에서 저가가 DayOpen-10 보다 커야 buy가 수행되는 전제조건인데 buy는 DayOpen-10 이하가 되어야 수행이 되니 어케 체결이 되는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시 확인 요청드립니다
> 안녕하세요
예스스탁입니다.
1.2
var1~var99, value1~value99
위 변수는 선언없이 사용가능한 내부저장변수입니다.
내부적으로 미리 0으로 모두 선언이 된 상태입니다.
해당 수식에서는 ntime봉의 시가를 저장하게 작성이 되어 있습니다.
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
4
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입입니다.
봉이 지정한 가격보다 위에 형성되어 있다가 하락해서
var1-매수포인트를 처음 터치할때 진입하게 작성된 내용입니다.
L > var1-매수포인트가 없으면 손절등 청산뒤에
계속 해당 가격아래 있으면 바로 또 매수가 발생하게 됩니다.
5
L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.
6
시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다.
시간을 최적화해 보고자 하시면
아래와 같이 시간을 특별한 단위로 변경해서 사용하셔야 합니다.
TimeToMinutes은 시간을 0시이후 경과된 분으로 리턴해 주는 함수입니다.
7시면 420분으로 리턴됩니다.
최적화에서 36단위로 최적화 하시면 됩니다.
input : ntime(420),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
var : T1(0),TM(0);
TM = TimeToMinutes(stime);
T1 = TimeToMinutes(ntime);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and TM >= T1) or
(sdate == sdate[1] and TM >= T1 and TM[1] < T1) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 다시 확인 요청드립니다
> 안녕하세요~~
전에 만들어주신 식중 일부입니다 (시초가가 매수포인트(변수) 만큼 하락시 매수하라)
input : ntime(70000),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
1. 내부(겸 내장)변수 var1은 초기값이 0 인데 내부변수 선언은 왜 없는지요?
2. 상기식에서-messagelog("%.f",var1)-하면 var1 값이 초기값 0으로 나오고 실행은 시초가로 작동하는것 같은데 어떻게 할당이 된건지요?
4. 어차피 시초가 대비 무조건 진입인데 상기식중 -AND L > var1-매수포인트- 가 왜 필요한지요?
5. -L < var1-매수포인트- 로 변경하면 어케 다른지요?
6. ntime을 070000~090000 (증가단위 3600 최적화) 돌리면 77200 이나 88000 같은 값이 나오는데 몇시로 봐야하는지요?
예스스탁
예스스탁 답변
2021-01-29 11:31:35
> 코퍼 님이 쓴 글입니다.
> 제목 : 사진올려드립니다
> 1.같은 결과입니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,entryprice+익절);
2. 저는 익절을 진입가가 아니고 시가에 연동시키기위하여
아래 공식을 사용하려 합니다
Exitlong("c",atlimit,entryprice+익절)
3. 아래는 하루 1번진입, 개장전 예스 수행하면 개장즉시 진입 맞나요?
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 Then
Buy();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
Exitlong("c",atlimit,익절);
현재 220회 거래는 매수후 청산이 모두 "c"라는 신호로 발생되고 있습니다.
거래내역에
setstoploss로 청산이 발생하면 청산명은 StopLoss
SetStopProfittarget로 청산이 발생하면 StopProfittarget으로 표시됩니다.
2
Exitlong("c",atlimit,익절);
위 내용에서 익절은 값이 100입니다.
작성하신 청산내용이 100포인트 수익이 아닙니다.
가격이 100보다 크면 청산하라는 내용입니다.
그러므로 entryprice+익절와 같이 값을 지정해서
진입가대비 100포인트 큰값으로 지정해야 합니다.
100포인트 익절시 청산은 아래와 같이 작성되어야 합니다.
Exitlong("c",atlimit,entryprice+익절);
> 코퍼 님이 쓴 글입니다.
> 제목 : Re : Re : 수식문의합니다~~
> 수식 올려드립니다~
1. 예스트레이더(유진) 5분봉 2020년 1년간 / 아래수식에서 손절 220회 발생합니다
input : 익절(100);
var : entry(0);
if Bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and entry < 1 and L > DayOpen-15 Then
Buy("b",AtLimit,DayOpen-10);
if MarketPosition == 1 Then
SetStopLoss(100000,PointStop);
Exitlong("c",atlimit,익절);
2. 상기식에서 Exitlong("c",atlimit,익절);를 SetStopProfittarget(익절,PointStop); 로
변경하면 정상 작동합니다.
3.정상 작동시 and L > DayOpen-15 를 삭제하면 결과 값이 달라지는데 이유가 무엇인지요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식문의합니다~~
> 안녕하세요
예스스탁입니다.
1
특정가격보다 위에서 가격이 형성되다가
하락해서 특정가격을 터치할때 즉시 진입하고자 할떄 사용됩니다.
구사하는 내용에 따라 onclose보다 더 빨리 진입할 수 있습니다.
2
신호타입이 지정되어 있지 않으면 onclose입니다.
3
이전문의에 시간을 증가단위 3600으로 최적화를 하신다고 질문올리셔서 답변드린 내용입니다.
ntime(090000)
이값에 3600을 더하면
93600은 차트에 93600으로 리턴되는 시간이 있으므로 정상적으로 신호가 적용되지만
97200은 차트에 차트에 이런값으로 리턴되는 시간이 없으므로
해당 최적화 조건으로는 신호가 발생하지 않습니다.
즉 90000에 7200이 더해지면 101200로 값이 지정되는 것이 아니고
단순 숫자 더하기로 97200이 되서 36분 간격으로 증가해서
101200봉으로 신호가 적용되어 최적화가 되지 않는 다는 의미입니다.
그래서 이전문의에 시간을 최적화 하신다면 시간을 TimeToMinutes함수로 변환해서
사용하는 방법을 올려드린 것 입니다.
4
하루에 한번이면 없어도 됩니다.
당일 진입회수를 늘리게 되면 필요한 내용입니다.
5
손절매는 매수는 진입가 - 설정값, 매도진입은 진입가 + 설정값입니다.
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
위 내용으로 식을 적용해 보았지만 첨부된 그림과 같이
나스닥 몇년동안의 시뮬레이션에서 손절매 신호가 있지는 않습니다.
적용하신 프로그램명과 주기를 올려주시기 바랍니다.
6
if문과 atlimit의 조건은 같은봉에 동시충족되는 것이 아닙니다.
하나의 봉이 완성시에 if조건이 만족하면 DayOpen-10이 셋팅되고
다음봉 미완성시에 현재가가 DayOpen-10과 같거나 낮은 시세가 발생하면 즉시 매수신호가 발생합니다.
즉 신호가 난 봉을 기준으로는 if문은 전봉에 만족한 것입니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
> 1. <<<신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입>>>
onclose가 더 빠른데 왜 atlimit를 사용하죠?
2. -buy()- 는 어떤 신호타잎인지요?
3. <<<시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다>>>
그러면 아래 시작시간과 종료시간을 9시와 15시30분으로 보내 안되나요?
아니면 입력 값은 시간인데 변수로 리턴되는 값은 시간이 아니라는 것인지요?
input : ntime(090000),Xtime(153000)
4. <<< L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.>>>
어차피 하루 1번 진입으로 카운팅되기때문에 필요 없지 않나요?
5. 나스닥에서 상식적인 손절 범위를 벗어나게 십만포인트를 설정햬는데도 손절이 발생하는데 공식에 어떤문제가 있는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
ExitLong("bp",AtLimit,DayOpen+10);
아래는 정상으로 나옵니다
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
SetStopLoss(100000,PointStop);
SetStopProfittarget(20,PointStop);
6. 아래 수식에서 저가가 DayOpen-10 보다 커야 buy가 수행되는 전제조건인데 buy는 DayOpen-10 이하가 되어야 수행이 되니 어케 체결이 되는지요?
if MarketPosition == 0 and entry < 1 and L > DayOpen-10 Then
Buy("b",AtLimit,DayOpen-10);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 다시 확인 요청드립니다
> 안녕하세요
예스스탁입니다.
1.2
var1~var99, value1~value99
위 변수는 선언없이 사용가능한 내부저장변수입니다.
내부적으로 미리 0으로 모두 선언이 된 상태입니다.
해당 수식에서는 ntime봉의 시가를 저장하게 작성이 되어 있습니다.
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
4
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
신호타입 중 atlimit은 Buy에 사용되면
if조건이 만족하면 특정값(var1-매수포인트)을 셋팅하고
다음봉에서 현재가가 특정값(Buy에 사용되면) 이하이면 즉시 진입입니다.
봉이 지정한 가격보다 위에 형성되어 있다가 하락해서
var1-매수포인트를 처음 터치할때 진입하게 작성된 내용입니다.
L > var1-매수포인트가 없으면 손절등 청산뒤에
계속 해당 가격아래 있으면 바로 또 매수가 발생하게 됩니다.
5
L < var1-매수포인트
위와 같이 작성되면 이미 봉이 var1-매수포인트보다 아래인 상태에서
다음봉에서 다시 해당 가격이하이면 진입하게 됩니다.
6
시간은 십만단위 숫자일 뿐입니다.
HH:MM:SS와 같은 시간값이 아닙니다
시간값이 70000으로 리턴되지만 7:00:00과 같은 시간이 아닙니다.
시간을 최적화해 보고자 하시면
아래와 같이 시간을 특별한 단위로 변경해서 사용하셔야 합니다.
TimeToMinutes은 시간을 0시이후 경과된 분으로 리턴해 주는 함수입니다.
7시면 420분으로 리턴됩니다.
최적화에서 36단위로 최적화 하시면 됩니다.
input : ntime(420),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
var : T1(0),TM(0);
TM = TimeToMinutes(stime);
T1 = TimeToMinutes(ntime);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and TM >= T1) or
(sdate == sdate[1] and TM >= T1 and TM[1] < T1) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 다시 확인 요청드립니다
> 안녕하세요~~
전에 만들어주신 식중 일부입니다 (시초가가 매수포인트(변수) 만큼 하락시 매수하라)
input : ntime(70000),Xtime(0),매수포인트(10),손절포인트(30),익절포인트(30);
var : Tcond(False),entry(0);
if (sdate != sdate[1] and stime >= Xtime) or
(sdate == sdate[1] and stime >= Xtime and stime[1] < Xtime) Then
{
Tcond = false;
}
if Bdate != Bdate[1] Then
{
Tcond = False;
entry = 0;
if Xtime < ntime Then
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= ntime) or
(sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then
{
Tcond = true;
var1 = O;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and MarketPosition == 0 and entry < 1 AND L > var1-매수포인트 Then
Buy("b",AtLimit,var1-매수포인트);
1. 내부(겸 내장)변수 var1은 초기값이 0 인데 내부변수 선언은 왜 없는지요?
2. 상기식에서-messagelog("%.f",var1)-하면 var1 값이 초기값 0으로 나오고 실행은 시초가로 작동하는것 같은데 어떻게 할당이 된건지요?
4. 어차피 시초가 대비 무조건 진입인데 상기식중 -AND L > var1-매수포인트- 가 왜 필요한지요?
5. -L < var1-매수포인트- 로 변경하면 어케 다른지요?
6. ntime을 070000~090000 (증가단위 3600 최적화) 돌리면 77200 이나 88000 같은 값이 나오는데 몇시로 봐야하는지요?