수고하십니다.
1. 아래1 식에서
- 다시 돌려보아도 Bcnt, MarketPosition 이 메세지로그에서 0 발생, 이유가 무엇인지요?
- 매수 연속3회 불가, 매도 연속3회 불가로 수식 수정 부탁드립니다.
== 아래1 ==
Input : 청산P(15),청산L(15);
var : SmaA(0),SmaB(0);
SmaA = ma(C,5);
SmaB = ma(C,20);
var : Bcnt(0);
if Bdate != Bdate[1] Then
Bcnt = 0;
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcnt+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
Bcnt = 0;
//진입청산
if stime > 093500 and stime <163000 and
Bcnt < 3 then
{
//매수
If MarketPosition == 0 and
c > DayOpen and
SmaA>SmaA[1] Then
Buy("B");
If (c>(EntryPrice+청산P) or c <(EntryPrice-청산L)) and
MarketPosition == 1 Then
ExitLong("ELB");
//매도
If MarketPosition == 0 and
c < DayOpen and
SmaA<SmaA[1] Then
Sell("S");
If (c<(EntryPrice-청산P) or c >(EntryPrice+청산L)) and
MarketPosition == -1 Then
ExitShort("ELS");
}
2. 아래2에서 조건문( if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then) 을
사용하는 이유가 무엇인지요?
== 아래2 ==
안녕하세요
예스스탁입니다.
1
H1이나 L1은 3봉전에 이평값을 저장하는 것이 맞습니다.
H2와 L2는 직전 조건만족시의 가격입니다.
L2 = L1[1]이라고 해서 4봉전의 이평가격이 아닙니다.
L1[1]은 L1에 기존에(한봉전) 저장되어 있던 가격을 가져와 L2에 저장한다는 의미입니다.
즉 새롭게 저장해야 할 가격이 생기면
이전까지 저장되어 있던 값을 다른 변수로 옮긴다는 내용입니다.
#스윙하이가 발생하면
if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then{
#H1에 Right봉전 이평값을 저장
H1 = mav[right];
#H2에는 H1의 한봉전까지 저장되어 있던 가격을 가져와 저장
H2 = H1[1];
if H1 < H2 and H2 > 0 Then
sell();
}
#스윙하이가 발생하면
if SwingLow(1,mav,Left,Right,Left+Right+1) != -1 Then{
#L1에 Right봉전 이평값을 저장
L1 = mav[right];
#L2에 L1의 한봉전까지 저장되어 있던 가격을 가져와 저장
L2 = L1[1];
if L1 > L2 and L2 > 0 Then
Buy();
}
3. 캔들이 10시30분 초과시는 c > 103000으로 작성하는데
이것을 105000으로 작성하거나 109000으로 작성하면 프로그램이 몇시로 인식하나요?
예스 덕분에 2번째 자동매매 실투 도전예정입니다.
항상 감사드립니다~~
답변 1
예스스탁
예스스탁 답변
2022-02-28 09:15:04
안녕하세요
예스스탁입니다.
1
Bcnt에 값저장하는 부분이 빠져있었습니다.
아래와 같이 수정하시면 됩니다.
MarketPosition은 정상적으로 변경되고 있습니다.
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcnt = Bcnt+1;
2
해당식은 고점이 낮아지면 매도, 저점이 상승하면 매수하는 내용입니다.
SwingHigh/SwingLow는 고점/저점을 지정하기 위한 함수인데
고점이나 저점을 지정하는 다른 규칙이 있으시면 해당 내용을 구현해서 사용하시면 됩니다.
if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then
이동평균이 지정한 봉수만큼(left) 상승하다 지정한 봉수만큼 하락(right)하면 고점값이 리턴되고 아니면 -1이 리됩니다.
현재봉에서 -1이 아니므로 고점이 발생했다는 의미입니다.
함수에 대한 자세한 내요은 도움말 참고하시기 바랍니다.
3
c는 봉의 종가입니다.
c > 103000는 종가가 103,000원보다 크다라는 내용이지 10시30분이후라는 내용이 아닙니다.
stime > 103000으로 비교하셔야 합니다.
시간에 109000이라는 값이 없습니다.
봉의 시간이 해당값 이후인것은 110000이므로
109000이면 stime > 110000으로 지정한 것과 같습니다.
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : 수식문의합니다~~
>
수고하십니다.
1. 아래1 식에서
- 다시 돌려보아도 Bcnt, MarketPosition 이 메세지로그에서 0 발생, 이유가 무엇인지요?
- 매수 연속3회 불가, 매도 연속3회 불가로 수식 수정 부탁드립니다.
== 아래1 ==
Input : 청산P(15),청산L(15);
var : SmaA(0),SmaB(0);
SmaA = ma(C,5);
SmaB = ma(C,20);
var : Bcnt(0);
if Bdate != Bdate[1] Then
Bcnt = 0;
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcnt+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
Bcnt = 0;
//진입청산
if stime > 093500 and stime <163000 and
Bcnt < 3 then
{
//매수
If MarketPosition == 0 and
c > DayOpen and
SmaA>SmaA[1] Then
Buy("B");
If (c>(EntryPrice+청산P) or c <(EntryPrice-청산L)) and
MarketPosition == 1 Then
ExitLong("ELB");
//매도
If MarketPosition == 0 and
c < DayOpen and
SmaA<SmaA[1] Then
Sell("S");
If (c<(EntryPrice-청산P) or c >(EntryPrice+청산L)) and
MarketPosition == -1 Then
ExitShort("ELS");
}
2. 아래2에서 조건문( if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then) 을
사용하는 이유가 무엇인지요?
== 아래2 ==
안녕하세요
예스스탁입니다.
1
H1이나 L1은 3봉전에 이평값을 저장하는 것이 맞습니다.
H2와 L2는 직전 조건만족시의 가격입니다.
L2 = L1[1]이라고 해서 4봉전의 이평가격이 아닙니다.
L1[1]은 L1에 기존에(한봉전) 저장되어 있던 가격을 가져와 L2에 저장한다는 의미입니다.
즉 새롭게 저장해야 할 가격이 생기면
이전까지 저장되어 있던 값을 다른 변수로 옮긴다는 내용입니다.
#스윙하이가 발생하면
if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then{
#H1에 Right봉전 이평값을 저장
H1 = mav[right];
#H2에는 H1의 한봉전까지 저장되어 있던 가격을 가져와 저장
H2 = H1[1];
if H1 < H2 and H2 > 0 Then
sell();
}
#스윙하이가 발생하면
if SwingLow(1,mav,Left,Right,Left+Right+1) != -1 Then{
#L1에 Right봉전 이평값을 저장
L1 = mav[right];
#L2에 L1의 한봉전까지 저장되어 있던 가격을 가져와 저장
L2 = L1[1];
if L1 > L2 and L2 > 0 Then
Buy();
}
3. 캔들이 10시30분 초과시는 c > 103000으로 작성하는데
이것을 105000으로 작성하거나 109000으로 작성하면 프로그램이 몇시로 인식하나요?
예스 덕분에 2번째 자동매매 실투 도전예정입니다.
항상 감사드립니다~~