예스스탁
예스스탁 답변
2022-10-24 09:48:24
안녕하세요
예스스탁입니다.
수식에 if문은 봉완성기준입니다.
if CurrentContracts > CurrentContracts[1] Then
스위칭이 되는 경우에 전봉과 현재봉 완성시 수량의 변화가 없으므로
스위칭이 가능한 식에서는 위 조건을 제외하시면 됩니다.
if Marketposition() == 1 then
{
if LatestEntryName(0) == "A" Then
var3 = LatestEntryPrice(0);
if LatestEntryName(0) == "A_MT" Then
var9 = LatestEntryPrice(0);
if var9 > 0 Then
{
ExitLong("A_MT손절",AtStop,var9*(1-cut1_l/100),"A_MT",2*k);
}
if var3 > 0 Then
{
ExitLong("B익절",Atlimit,var3*(1+gain_gl/100),"B",2*k);
ExitLong("B손절",AtStop,Var3*(1-cut_gl/100),"B",2*k);
}
}
Else
{
Var3 = 0;
Var9 = 0;
}
if Marketposition() == -1 then
{
if LatestEntryName(0) == "C" Then
var5 = LatestEntryPrice(0);
if LatestEntryName(0) == "D" Then
var6 = LatestEntryPrice(0);
if var5 > 0 Then
ExitShort("C익절",Atlimit,Var5*(1-gain_gs/100),"C",2*k);
if var6 > 0 Then
ExitShort("D손절",AtStop,var6*(1+cut_mt/100),"D",2*k);
}
Else
{
Var5 = 0;
Var6 = 0;
}
if MarketPosition == 0 Then
{
SetStopProfittarget(0);
setstoploss(0);
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 진입별 청산 재질문
> 아래 답변 감사합니다.
알려주신대로 VAR3, VAR9등을 초기화 했더니, 해당일에 반복적으로 진입하고 청산되는 현상을 사라졌습니다.
다만, 매도진입포지션을 청산하면서 진입하는 경우에는 여전히 해당 손절이 적용이 안되네요..
C매도 포지션상태에서 A_MT 매수신호가 발생되어 청산시키고 진입하는 경우에는
원하는 손절이 적용이 여전히 안되고 있습니다. 뭐가 문제일까요...
무포지션에서 A_MT매수진입건은 잘 적용이 되구요...
해당구간 전후로 VAR9 값을 찍어보았더니, 해당매수가 발생했어도 매도를 청산하고 진입해서 인지 진입가격(entryprice)이 아닌 계속 0으로 나옵니다. 버그같은게 아닌지요...
---------------------------------------------------
안녕하세요
예스스탁입니다.
수식의 var3,var9는 매수포지션이 아니면 0으로 초기화가 되게 하셔야 합니다.
새로 진입하고 지정한 이름의 진입이 발생하면 새로운 값을 저장하게 됩니다.
청산식에 var3 > 0, var9 > 0이라는 조건이 있는 이유도
매수진입후 지정한 이름의 진입이 발생해서 값이 저장되었다는 의미입니다.
초기화가 없으면 기존값이 유지가 되므로 다음 매수진입하게 되면 기존 저장된 값 대비로 신호가 발생하게 됩니다.
if Marketposition() == 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "A" Then
var3 = LatestEntryPrice(0);
if LatestEntryName(0) == "A_MT" Then
var9 = LatestEntryPrice(0);
}
if var9 > 0 Then
{
ExitLong("A_MT손절",AtStop,var9*(1-cut1_l/100),"A_MT",2*k);
}
if var3 > 0 Then
{
ExitLong("B익절",Atlimit,var3*(1+gain_gl/100),"B",2*k);
ExitLong("B손절",AtStop,Var3*(1-cut_gl/100),"B",2*k);
}
}
Else
{
Var3 = 0;
Var9 = 0;
}
if Marketposition() == -1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "C" Then
var5 = LatestEntryPrice(0);
if LatestEntryName(0) == "D" Then
var6 = LatestEntryPrice(0);
}
if var5 > 0 Then
ExitShort("C익절",Atlimit,Var5*(1-gain_gs/100),"C",2*k);
if var6 > 0 Then
ExitShort("D손절",AtStop,var6*(1+cut_mt/100),"D",2*k);
}
Else
{
Var5 = 0;
Var6 = 0;
}
if MarketPosition == 0 Then
{
SetStopProfittarget(0);
setstoploss(0);
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 진입별 청산 오류
> 안녕하세요.
진입별로 청산이 정상작동하지 않아 문의드립니다.
약간 복잡할 수 있지만, 아래 식과 같이 손익절을 진입별로 구분해서 쓰고 있습니다.
다른 진입에 대한 익절과 손절은 다 잘 작동하는데, 유독 "A_MT"라는 진입에 대해서
특정한 날에 손절이 작동하지 않는것을 거래내역을 통해 알았습니다.
특정한 날이라 하면, 매수 "D" 진입이 A_MT라는 매수진입으로 청산되면서 진입되는 날에는
A_MT에 원하는 손절이 적용안되고, 1분후에 바로 청산되고, 매수되기를 반복하는 현상이
발생합니다.
다른 진입과 간섭이 문제가 되는거 같아서, 나머지 진입들과 청산조건을 모두 삭제하고
A_MT에 대한 진입과 청산만 남겨두고 테스트를 해보면 정상적으로 작동하는것을
확인했습니다. 따라서, 반대포지션과 바로 스위칭되었을때 원하는 손절이 안되고
있는것으로 보이는데요, 버그같기도 하구요.
(*아래는 대강의 구조만 작성했습니다. minor한 오류는 있을수 있습니다)
------------------------------------------
IF MT condition = true then
{
if ~ then
sell("D");
if ~ then
buy("A_MT");
}
Else {
if ~ then
buy("A");
if ~ then
buy("B");
if ~ then
Sell("C");
}
if Marketposition() == 1 then{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "A" Then
var3 = LatestEntryPrice(0);
if LatestEntryName(0) == "A_MT" Then
var9 = LatestEntryPrice(0);
}
if var9 > 0 Then
{
ExitLong("A_MT손절",AtStop,var9*(1-cut1_l/100),"A_MT",2*k);
}
if var3 > 0 Then {
ExitLong("B익절",Atlimit,var3*(1+gain_gl/100),"B",2*k);
ExitLong("B손절",AtStop,Var3*(1-cut_gl/100),"B",2*k);
}
}
else if Marketposition() == -1 then{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "C" Then
var5 = LatestEntryPrice(0);
if LatestEntryName(0) == "D" Then
var6 = LatestEntryPrice(0);
}
if var5 > 0 Then {
ExitShort("C익절",Atlimit,Var5*(1-gain_gs/100),"C",2*k);
}
if var6 > 0 Then
ExitShort("D손절",AtStop,var6*(1+cut_mt/100),"D",2*k);
}
else{
SetStopProfittarget(0);
setstoploss(0);
}