예스스탁
예스스탁 답변
2025-03-27 14:41:55
안녕하세요
예스스탁입니다.
강제청산은 한번 셋팅되면 해당 셋팅이 유지됩니다.
각 진입별로 모두 사용하는 것이 아니면
지정한 이름의 진입이 아니면 해제하는 내용이 들어가야 합니다.
input : ls1(2.75),gl1(8.75),tr1(2.75); // 1차 b1진입
input : ls4(1.75),gl4(6.75),tr4(1.75); // 2차 s1진입
input : ls2(1),gl2(7.75),tr2(2.5); // 1차 s1진입
input : ls3(1.75),gl3(999999),tr3(1.75); // 2차 b1진입
input : bbls(1),bbgl(999999),bbtr(1.75),b2mi(999999),b2bg(999999); // 3차 "b2"진입
input : bsls(1.75),bsgl(999999),bstr(3.25),b3mi(999999),b3bg(999999);// 3차 "b3"진입
input : sbls(3),sbgl(999999),sbtr(3),s2mi(4.5),s2bg(1200); // 3차 "s2"진입
input : ssls(1.5),ssgl(1.25),sstr(2.25),s3mi(7),s3bg(2000); // 3차 "s3"진입
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 == 1 and IsEntryName("b1") == true Then
{
SetStopInactivity(0,0);#해제
//매수진입이 첫진입일때
if entry == 1 Then
{
SetStopLoss(ls1,PointStop);
SetStopProfittarget(gl1,PointStop);
SetStopTrailing(tr1,0,PointStop);
}
Else //매수진입이 두번째진입일때
{
SetStopLoss(ls3,PointStop);
SetStopProfittarget(gl3,PointStop);
SetStopTrailing(tr3,0,PointStop);
}
}
Else if MarketPosition == -1 and IsEntryName("s1") == true Then
{
SetStopInactivity(0,0);#해제
//매도진입이 첫진입일때
if entry == 1 Then
{
SetStopLoss(ls2,PointStop);
SetStopProfittarget(gl2,PointStop);
SetStopTrailing(tr2,0,PointStop);
}
Else //매도진입이 두번째진입일때
{
SetStopLoss(ls4,PointStop);
SetStopProfittarget(gl4,PointStop);
SetStopTrailing(tr4,0,PointStop);
}
}
if MarketPosition== 1 Then //고점돌파시
{
if IsEntryName("b2") == true Then //직전 포지션 매수
{
SetStopLoss(bbls,PointStop);
SetStopProfittarget(bbgl,PointStop);
SetStopTrailing(bbtr,0,PointStop,1);
SetStopInactivity(b2mi,b2bg,PointStop);
}
Else if IsEntryName("b3") == true Then //직전 포지션 매도
{
SetStopLoss(bsls,PointStop);
SetStopProfittarget(bsgl,PointStop);
SetStopTrailing(bstr,0,PointStop,1);
SetStopInactivity(b3mi,b3bg,PointStop);
}
}
if MarketPosition== -1 Then //저점돌파시
{
if IsEntryName("s2") == true Then //직전 포지션 매수
{
SetStopLoss(sbls,PointStop);
SetStopProfittarget(sbgl,PointStop);
SetStopTrailing(sbtr,0,PointStop,1);
SetStopInactivity(s2mi,s2bg,PointStop);
}
Else if IsEntryName("s3") == true Then //직전 포지션 매도
{
SetStopLoss(ssls,PointStop);
SetStopProfittarget(ssgl,PointStop);
SetStopTrailing(sstr,0,PointStop,1);
SetStopInactivity(s3mi,s3bg,PointStop);
}
}
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 문의
> 아래 청산수식을 검토해주십시요.
문제점은 inactivity 청산에서 확인됩니다.
(손절,추적스탑,익절은 구별이 힘든데 최소가격변화는 빈도가 적어서 문제를 발견했습니다)
청산수식 전체에 문제가 있을 거 같습니다.
첨부파일은 inactivity 청산내역입니다.(별첨1,2)
inactivity 수식은 b1과 s1에는 없고 b2,b3와 s2,s3 수식에만 있는데
b1과 s1 청산결과에 나타납니다.(별첨1)
s3를 시뮬레이션하면 값들이 나오는데 inactivity 청산결과는 없습니다.(별첨2)
*진입내용
b1과 s1은 리버스 거래
b2는 고점돌파(직전 포지션 매수)
b3는 고점돌파(직전 포지션 매도)
s2는 저점돌파(직전 포지션 매수)
s3는 저점돌파(직전 포지션 매도)
*진입순서(b1,s1 신호가 모두 나온 후 고점이나 저점을 돌파할 때)
b1-s1-b3 1차 매수 / 2차 매도 / 3차 고점돌파
b1-s1-s3 1차 매수 / 2차 매도 / 3차 저점돌파
s1-b1-b2 1차 매도 / 2차 매수 / 3차 고점돌파
s1-b1-s2 1차 매도 / 2차 매수 / 3차 저점돌파
항상 고맙습니다.
*******************************************************************************
input : ls1(2.75),gl1(8.75),tr1(2.75); // 1차 b1진입
input : ls4(1.75),gl4(6.75),tr4(1.75); // 2차 s1진입
input : ls2(1),gl2(7.75),tr2(2.5); // 1차 s1진입
input : ls3(1.75),gl3(999999),tr3(1.75); // 2차 b1진입
input : bbls(1),bbgl(999999),bbtr(1.75),b2mi(999999),b2bg(999999); // 3차 "b2"진입
input : bsls(1.75),bsgl(999999),bstr(3.25),b3mi(999999),b3bg(999999);// 3차 "b3"진입
input : sbls(3),sbgl(999999),sbtr(3),s2mi(4.5),s2bg(1200); // 3차 "s2"진입
input : ssls(1.5),ssgl(1.25),sstr(2.25),s3mi(7),s3bg(2000); // 3차 "s3"진입
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 == 1 and IsEntryName("b1") == true Then
{
//매수진입이 첫진입일때
if entry == 1 Then
{
SetStopLoss(ls1,PointStop);
SetStopProfittarget(gl1,PointStop);
SetStopTrailing(tr1,0,PointStop);
}
Else //매수진입이 두번째진입일때
{
SetStopLoss(ls3,PointStop);
SetStopProfittarget(gl3,PointStop);
SetStopTrailing(tr3,0,PointStop);
}
}
Else if MarketPosition == -1 and IsEntryName("s1") == true Then
{
//매도진입이 첫진입일때
if entry == 1 Then
{
SetStopLoss(ls2,PointStop);
SetStopProfittarget(gl2,PointStop);
SetStopTrailing(tr2,0,PointStop);
}
Else //매도진입이 두번째진입일때
{
SetStopLoss(ls4,PointStop);
SetStopProfittarget(gl4,PointStop);
SetStopTrailing(tr4,0,PointStop);
}
}
if MarketPosition== 1 Then //고점돌파시
{
if IsEntryName("b2") == true Then //직전 포지션 매수
{
SetStopLoss(bbls,PointStop);
SetStopProfittarget(bbgl,PointStop);
SetStopTrailing(bbtr,0,PointStop,1);
SetStopInactivity(b2mi,b2bg,PointStop);
}
Else if IsEntryName("b3") == true Then //직전 포지션 매도
{
SetStopLoss(bsls,PointStop);
SetStopProfittarget(bsgl,PointStop);
SetStopTrailing(bstr,0,PointStop,1);
SetStopInactivity(b3mi,b3bg,PointStop);
}
}
if MarketPosition== -1 Then //저점돌파시
{
if IsEntryName("s2") == true Then //직전 포지션 매수
{
SetStopLoss(sbls,PointStop);
SetStopProfittarget(sbgl,PointStop);
SetStopTrailing(sbtr,0,PointStop,1);
SetStopInactivity(s2mi,s2bg,PointStop);
}
Else if IsEntryName("s3") == true Then //직전 포지션 매도
{
SetStopLoss(ssls,PointStop);
SetStopProfittarget(ssgl,PointStop);
SetStopTrailing(sstr,0,PointStop,1);
SetStopInactivity(s3mi,s3bg,PointStop);
}
}