아래 수식에서 if C > 매수조건1 Then{
t=1;
if MarketPosition() == 0 and t==1 Then
buy("매수");
}
포지션이 없어지면 매수가 됩니다.
청산 이후에 포지션이 없어지면 매수조건이 성랍되면 실제로 매수가 이루어지고 있습
니다 문제는 같은봉에서 동일시간에 포지션 체인지가 발생시 문제가 됩니다.
결론은 청산봉에서 매매가 안일어나야 합니다. 청산봉에서는 청산만 하고요 다른 매매가 일어나지 않도록
다음봉에서 매매가 일어나도록 부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요? 예스스탁입니다.
적어주신 내용 중에 '손절 청산이나 이익 청산시에 청산함과 동일시간에 반대포지션
진입이 되므로' 라고 하셨는데 식의 내용으로 볼때 청산만 하는 로직으로 작성된 것으로 보입니다. 청산과 동시에 반대 포지션으로 진입하시려면 Exitlong를 Sell로 Exitshort을 buy로 변경해 주시면 됩니다.
감사합니다.
> 종호 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
아래 분봉 수식에서 손절 청산이나 이익 청산시에 청산함과 동일시간에 반대포지션
진입이 되므로 반대포지션 체결이 되어야 할텐데 반대 포지션으로 실제로는
체결이 안되고 있습니다,
어떻게 해야 할까요?
수정을 부탁드립니다.
if C > 매수조건1 Then{
t=1;
if MarketPosition() == 0 and t==1 Then
buy("매수");
}
if C < 매도조건1 Then {
t=-1 ;
if MarketPosition() ==0 and t==-1 Then
Sell("매도");
}
if MarketPosition == 1 Then
{
buy("bb",AtStop,LatestEntryPrice(0)+PriceScale*매수간격);
if MaxEntries == 1 Then
ExitLong("매수1손절",AtStop,A-PriceScale*손절변수);
if MaxEntries >= 2 Then
ExitLong("bx",AtStop,B);
ExitLong("매수이익x",AtLimit,C+PriceScale*이익변수 );
}
if MarketPosition == -1 Then
{
Sell("ss",AtStop,LatestEntryPrice(0)-PriceScale*매도간격);
if MaxEntries == 1 Then
ExitShort("매도1손절",AtStop,A+PriceScale*손절변수 );
if MaxEntries >= 2 Then
ExitShort("sx",AtStop,Be);
ExitShort("매도이익",AtLimit,C-PriceScale*이익변수);
}
답변 1
예스스탁
예스스탁 답변
2022-08-11 16:17:27
안녕하세요? 예스스탁입니다.
손절이나 목표수익으로 청산했을 경우 청산신호가 발생된 봉에서 반대방향으로 진입신호가 발생되지 않게 하는 것으로 이해하고 답변드립니다.
작성하신 식에서 손절이나 목표수익은 봉 중간에 청산되므로 그 봉의 marketposition값은 0이 됩니다. 때문에 marketposition == 0으로 작성하시더라도 그 봉에서 진입신호가 발생됩니다.
해결 방법은 청산신호가 발생되었는지를 저장하여 청산신호가 발생된 봉에서는 진입이 발생하지 않도록 수정하시면 될것 같습니다. 아래의 사례처럼 매수청산봉이면 var1에 1을 저장하도록 하고 매수청산봉에서 매도진입신호가 발생되지 않도록 매도진입식에서 var1 == 0 의 내용을 추가해 주시면 될것 같습니다. 매도는 var2에 저장하여 사용하시면 됩니다.
# 매수청산봉
if MarketPosition[1] == 1 and MarketPosition == 0 Then
var1 = 1;
Else
var1 = 0;
# 매도청산봉
if MarketPosition[1] == -1 and MarketPosition == 0 Then
var2 = 1;
Else
var2 = 0;
if C > 매수조건1 Then{
t=1;
if MarketPosition() == 0 and t==1 and var2 == 0 Then
buy("매수");
}
if C < 매도조건1 Then {
t=-1 ;
if MarketPosition() ==0 and t==-1 and var1 == 0 Then
Sell("매도");
> 종호 님이 쓴 글입니다.
> 제목 : 재문의드립니다.
>
아래 수식에서 if C > 매수조건1 Then{
t=1;
if MarketPosition() == 0 and t==1 Then
buy("매수");
}
포지션이 없어지면 매수가 됩니다.
청산 이후에 포지션이 없어지면 매수조건이 성랍되면 실제로 매수가 이루어지고 있습
니다 문제는 같은봉에서 동일시간에 포지션 체인지가 발생시 문제가 됩니다.
결론은 청산봉에서 매매가 안일어나야 합니다. 청산봉에서는 청산만 하고요 다른 매매가 일어나지 않도록
다음봉에서 매매가 일어나도록 부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요? 예스스탁입니다.
적어주신 내용 중에 '손절 청산이나 이익 청산시에 청산함과 동일시간에 반대포지션
진입이 되므로' 라고 하셨는데 식의 내용으로 볼때 청산만 하는 로직으로 작성된 것으로 보입니다. 청산과 동시에 반대 포지션으로 진입하시려면 Exitlong를 Sell로 Exitshort을 buy로 변경해 주시면 됩니다.
감사합니다.
> 종호 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
아래 분봉 수식에서 손절 청산이나 이익 청산시에 청산함과 동일시간에 반대포지션
진입이 되므로 반대포지션 체결이 되어야 할텐데 반대 포지션으로 실제로는
체결이 안되고 있습니다,
어떻게 해야 할까요?
수정을 부탁드립니다.
if C > 매수조건1 Then{
t=1;
if MarketPosition() == 0 and t==1 Then
buy("매수");
}
if C < 매도조건1 Then {
t=-1 ;
if MarketPosition() ==0 and t==-1 Then
Sell("매도");
}
if MarketPosition == 1 Then
{
buy("bb",AtStop,LatestEntryPrice(0)+PriceScale*매수간격);
if MaxEntries == 1 Then
ExitLong("매수1손절",AtStop,A-PriceScale*손절변수);
if MaxEntries >= 2 Then
ExitLong("bx",AtStop,B);
ExitLong("매수이익x",AtLimit,C+PriceScale*이익변수 );
}
if MarketPosition == -1 Then
{
Sell("ss",AtStop,LatestEntryPrice(0)-PriceScale*매도간격);
if MaxEntries == 1 Then
ExitShort("매도1손절",AtStop,A+PriceScale*손절변수 );
if MaxEntries >= 2 Then
ExitShort("sx",AtStop,Be);
ExitShort("매도이익",AtLimit,C-PriceScale*이익변수);
}