예스스탁
예스스탁 답변
2025-05-14 17:04:58
안녕하세요
예스스탁입니다.
1
MarketPosition == 0 조건은 차트상 무포지션일때만 진입하라는 내용입니다.
그러므로 코드1은 반대조건으로 스위칭이 되지 않게 됩니다.
코드1에 MarketPosition == 0 조건을 제외하시면 2개 코드가 동일합니다.
2
예 맞습니다.
1번에서 답변드린대로 스위칭은 가능하지 않고
진입후 청산완료 후에 다음 진입이 될 수 있습니다.
즐거운 하루되세요
> sewzie 님이 쓴 글입니다.
> 제목 : 로직 문의
> 안녕하세요 몇가지 질문이 있습니다
질문 #1
제가 봤을때는 동일한 논리인 아래 두 코드가 백테스트에는 다른 결과를 보여주는데요
제가 잘못 이해하고 있는게 있을까요? 감사합니다
코드 #1
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True and CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If Condition2 == True and CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
코드 #2
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
If CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
질문 #2
아래 코드의 논리를 제가 이렇게 이해하고 있는데, 맞는지 검증 부탁드립니다
현재봉에서 직전 XX봉 고가/저가 돌파가 나오면 매수/매도
포지션이 있을때 entryprice가 진입봉의 저가/고가를 벗어나면 청산
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True then Buy("B1",AtMarket,DEf,1);
If Condition2 == True then Sell("B2",AtMarket,DEf,1);
// 손절: 진입신호 봉의 저가 손절
input:FF(8); // 1~10, 진입 후 XX봉 경과
If MarketPosition == 1 and EntryPrice < L[BarsSinceEntry] Then ExitLong("C1");
If MarketPosition == -1 and EntryPrice > H[BarsSinceEntry] Then ExitShort("C2");
sewzie
2025-05-14 21:52:28
안녕하세요, 답변 감사합니다
2번에 손절 관련하여 로직이 맞다고 말씀해주셨는데,
막상 NG.1로 실험해보면 한번도 손절이 일어나지 않습니다
확인 부탁드리겠습니다, 감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 로직 문의
>
안녕하세요
예스스탁입니다.
1
MarketPosition == 0 조건은 차트상 무포지션일때만 진입하라는 내용입니다.
그러므로 코드1은 반대조건으로 스위칭이 되지 않게 됩니다.
코드1에 MarketPosition == 0 조건을 제외하시면 2개 코드가 동일합니다.
2
예 맞습니다.
1번에서 답변드린대로 스위칭은 가능하지 않고
진입후 청산완료 후에 다음 진입이 될 수 있습니다.
즐거운 하루되세요
> sewzie 님이 쓴 글입니다.
> 제목 : 로직 문의
> 안녕하세요 몇가지 질문이 있습니다
질문 #1
제가 봤을때는 동일한 논리인 아래 두 코드가 백테스트에는 다른 결과를 보여주는데요
제가 잘못 이해하고 있는게 있을까요? 감사합니다
코드 #1
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True and CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If Condition2 == True and CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
코드 #2
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
If CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
질문 #2
아래 코드의 논리를 제가 이렇게 이해하고 있는데, 맞는지 검증 부탁드립니다
현재봉에서 직전 XX봉 고가/저가 돌파가 나오면 매수/매도
포지션이 있을때 entryprice가 진입봉의 저가/고가를 벗어나면 청산
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True then Buy("B1",AtMarket,DEf,1);
If Condition2 == True then Sell("B2",AtMarket,DEf,1);
// 손절: 진입신호 봉의 저가 손절
input:FF(8); // 1~10, 진입 후 XX봉 경과
If MarketPosition == 1 and EntryPrice < L[BarsSinceEntry] Then ExitLong("C1");
If MarketPosition == -1 and EntryPrice > H[BarsSinceEntry] Then ExitShort("C2");