var : vEntryPrice(2232.9), vExitPrice(2345.9), vLossCutPrice(2188.2);
// 매수진입부분
if C > vLossCutPrice and C <= vEntryPrice and MarketPosition == 0 Then
Buy("매수", AtMarket);
// 익절부분. 로직에따라 SetStopProfittarget 사용
if C >= vExitPrice and MarketPosition == 1 Then
ExitLong("매수청산", AtMarket);
// 손절매. 로직에따라 SetStopLoss 사용
if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
첨부한 1/9 매수가격 일시 이후에 실행했기에 매수는 이루어지지 않았습니다.
(eFriend Force 스샷보시면 매수 없습니다)
그런데 첨부한 스샷처럼 1/10 같은 시간에 exitlong과 손절이 됐습니다.
1. MarketPosition이 1일때 주문하도록 조건이 들어갔는데 왜 매도 주문이 나갔을까요?
2. 왜 매도주문이 2개가 같은 시간에 동시에 나갔을까요?
추가 필요한 자료 있으면 올리겠습니다.
답변 2
예스스탁
예스스탁 답변
2025-01-13 16:52:31
안녕하세요
예스스탁입니다.
Buy는 매수진입, Sell은 매도진입함수입니다.
포지션 진입 후 청산신호만 발생하는 함수는 exitlong,exitshort입니다.
각 진입함수는 무포지션에서 발생하면 지정한 수량으로 진입만하고
반대포지션에서 발생하면 반대포지션을 청산하고 진입하게 됩니다.
if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
위 내용은 매수포지션일 때, 종가가 vLossCutPrice값 이하이면
청산하고 매도로 진입하라는 내용이 됩니다.
즉 매도로 스위칭입니다.
청산만 하고자 하시면 exitlong함수를 이용하셔야 합니다.
if C <= vLossCutPrice and MarketPosition == 1 Then
exitlong("매수손절", AtMarket);
즐거운 하루되세요
> typeb 님이 쓴 글입니다.
> 제목 : 예트 코드 올립니다.잘못된 주문이 나갑니다. 검토바랍니다.
> var : vEntryPrice(2232.9), vExitPrice(2345.9), vLossCutPrice(2188.2);
// 매수진입부분
if C > vLossCutPrice and C <= vEntryPrice and MarketPosition == 0 Then
Buy("매수", AtMarket);
// 익절부분. 로직에따라 SetStopProfittarget 사용
if C >= vExitPrice and MarketPosition == 1 Then
ExitLong("매수청산", AtMarket);
// 손절매. 로직에따라 SetStopLoss 사용
if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
첨부한 1/9 매수가격 일시 이후에 실행했기에 매수는 이루어지지 않았습니다.
(eFriend Force 스샷보시면 매수 없습니다)
그런데 첨부한 스샷처럼 1/10 같은 시간에 exitlong과 손절이 됐습니다.
1. MarketPosition이 1일때 주문하도록 조건이 들어갔는데 왜 매도 주문이 나갔을까요?
2. 왜 매도주문이 2개가 같은 시간에 동시에 나갔을까요?
추가 필요한 자료 있으면 올리겠습니다.
typeb
2025-01-15 10:05:37
알려주신 사항 반영하여 잘 사용하겠습니다 (ExitLong, ExitShort 사용)
그런데 두가지 문의사항 있어 다시 질문 드립니다.
1. if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
이 코드에서 MarketPosion이 1인지 check하는데 위 조건에서는 작동하지 않는것이 맞을까요? 향후 거래 규모를 늘릴때 거래규모에따른 제한 조건이 작동하려면 어찌해야하는지 문의 드립니다.
2.이 부분은 더 이상합니다.
// 익절부분. 로직에따라 SetStopProfittarget 사용
if C >= vExitPrice and MarketPosition == 1 Then
ExitLong("매수청산", AtMarket);
ExitLong이지만 기존 매수분이 없었습니다.
그래서 무포지션이 였는데 위 sell과 exitLong이 모두 작동한겁니다.
참조 자료 확인 부탁드립니다.
예스트레이더로 향후 거래 규모 늘리려는 계획이나 위 부분들이 적용에 너무 큰 부담이 됩니다. 기존 올렸던 자료와 함께 검토 부탁드립니다.
추가 필요자료 있으시면 요청 주십시요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 예트 코드 올립니다.잘못된 주문이 나갑니다. 검토바랍니다.
> 안녕하세요
예스스탁입니다.
Buy는 매수진입, Sell은 매도진입함수입니다.
포지션 진입 후 청산신호만 발생하는 함수는 exitlong,exitshort입니다.
각 진입함수는 무포지션에서 발생하면 지정한 수량으로 진입만하고
반대포지션에서 발생하면 반대포지션을 청산하고 진입하게 됩니다.
if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
위 내용은 매수포지션일 때, 종가가 vLossCutPrice값 이하이면
청산하고 매도로 진입하라는 내용이 됩니다.
즉 매도로 스위칭입니다.
청산만 하고자 하시면 exitlong함수를 이용하셔야 합니다.
if C <= vLossCutPrice and MarketPosition == 1 Then
exitlong("매수손절", AtMarket);
즐거운 하루되세요
> typeb 님이 쓴 글입니다.
> 제목 : 예트 코드 올립니다.잘못된 주문이 나갑니다. 검토바랍니다.
> var : vEntryPrice(2232.9), vExitPrice(2345.9), vLossCutPrice(2188.2);
// 매수진입부분
if C > vLossCutPrice and C <= vEntryPrice and MarketPosition == 0 Then
Buy("매수", AtMarket);
// 익절부분. 로직에따라 SetStopProfittarget 사용
if C >= vExitPrice and MarketPosition == 1 Then
ExitLong("매수청산", AtMarket);
// 손절매. 로직에따라 SetStopLoss 사용
if C <= vLossCutPrice and MarketPosition == 1 Then
Sell("손절", AtMarket);
첨부한 1/9 매수가격 일시 이후에 실행했기에 매수는 이루어지지 않았습니다.
(eFriend Force 스샷보시면 매수 없습니다)
그런데 첨부한 스샷처럼 1/10 같은 시간에 exitlong과 손절이 됐습니다.
1. MarketPosition이 1일때 주문하도록 조건이 들어갔는데 왜 매도 주문이 나갔을까요?
2. 왜 매도주문이 2개가 같은 시간에 동시에 나갔을까요?
추가 필요한 자료 있으면 올리겠습니다.