안녕하세요 선생님 ^^
항상 고맙습니다
다름이 아니라 손절이 제대로 작동을 안해서 생각을 바꾸게 되였습니다. 1차청 나가고 나면 1차청 나갔던 수익이 잇는데 굳이 손절할 필요없이 익절 하면 되지 않을가 생각해봤는데 구현이 가능한지 여쭤봅니다.
가능하다면 어떻게 코드를 짜야하는지도요...
코드짜는 방식은 일단
1차청 나가면은 2번째 계약이 1차목표가랑2차목표가 사이에서 놀때 그리고 2차목표가까지 갔다면 문제없이 2차청 나가겠지만 2차목표가를 가지않고 1차 목표가 위에서 왔다갔다하다가 밀려서 1차청위에 가격20포인트 까지 밀려내려온다면 청산하는 방식으로 하려고 합니다
maxProfitMode 1 이걸 써야 되는것 같은데
var HH = 0; // 매수 포지션 기준 최고가 저장
var LL = 0; // 매도 포지션 기준 최저가 저장
if (BX == 1 && MarketData1.current >= BuyPrice + 220)
{
Main.MessageList("매수익절2");
BX = 2;
if (BENM > 0)
{
if (BXV >= 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1, MarketData1.Bid(5), 2);
}
}
}
if (maxProfitMode == 1 && !MinExitTriggered)
{
// 가격이 최고가에서 170틱 이상 밀린 경우
if (MarketData1.current < HH - PriceScale * 170)
{
Main.MessageList("최소170포인트 익절: 가격이 최고가에서 170포인트 이상 밀려 하락");
if (BENM > 0 && BXV >= 1)
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(5), 2); // 170포인트에서 익절 처리
MinExitTriggered = true; // 최소 170틱 익절 완료
} 이렇게 짰는데 이게 맞는건지 검토 부탁드립니다
답변 1
예스스탁
예스스탁 답변
2024-11-25 15:27:13
안녕하세요
예스스탁입니다.
1
예스랭귀지의 함수는 스팟에서 사용이 가능하지 않습니다.
PriceScale은 예스랭귀지에서 1틱을 리턴하는 함수로 스팟에는 제공되지 않습니다.
종목객체에 MarketData1.tickSize를 이용하셔야 합니다.
2
maxProfitMode가 수식에서 어떤 값인지 알 수 없습니다.
3
최고가-170틱이 1차청 위 20포인트인지 모르겠습니다.
1차청산과 2차청산 사이에서 움직이다가 1차청산+20포인트까지 내려오면 청산이면
기본적으로 아래와 같은 구조이어야 합니다.
1차 청산가는 얼마인지 알수 없어 한글로 대체합니다.
BX가 1차 청산이 발생하면 1로 변경이 되므로
BX가 1이고 최고가 1차청산가+20보다 이상 상승후 내려오면 청산하게 하시면 됩니다.
if (BX == 1 && hh > 1차청산가+20)
{
if (MarketData1.current < 1차청산가+20)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(5), 2); // 170포인트에서 익절 처리
}
}
즐거운 하루되세요
> 1000djr 님이 쓴 글입니다.
> 제목 : 익절문의
> 안녕하세요 선생님 ^^
항상 고맙습니다
다름이 아니라 손절이 제대로 작동을 안해서 생각을 바꾸게 되였습니다. 1차청 나가고 나면 1차청 나갔던 수익이 잇는데 굳이 손절할 필요없이 익절 하면 되지 않을가 생각해봤는데 구현이 가능한지 여쭤봅니다.
가능하다면 어떻게 코드를 짜야하는지도요...
코드짜는 방식은 일단
1차청 나가면은 2번째 계약이 1차목표가랑2차목표가 사이에서 놀때 그리고 2차목표가까지 갔다면 문제없이 2차청 나가겠지만 2차목표가를 가지않고 1차 목표가 위에서 왔다갔다하다가 밀려서 1차청위에 가격20포인트 까지 밀려내려온다면 청산하는 방식으로 하려고 합니다
maxProfitMode 1 이걸 써야 되는것 같은데
var HH = 0; // 매수 포지션 기준 최고가 저장
var LL = 0; // 매도 포지션 기준 최저가 저장
if (BX == 1 && MarketData1.current >= BuyPrice + 220)
{
Main.MessageList("매수익절2");
BX = 2;
if (BENM > 0)
{
if (BXV >= 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1, MarketData1.Bid(5), 2);
}
}
}
if (maxProfitMode == 1 && !MinExitTriggered)
{
// 가격이 최고가에서 170틱 이상 밀린 경우
if (MarketData1.current < HH - PriceScale * 170)
{
Main.MessageList("최소170포인트 익절: 가격이 최고가에서 170포인트 이상 밀려 하락");
if (BENM > 0 && BXV >= 1)
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(5), 2); // 170포인트에서 익절 처리
MinExitTriggered = true; // 최소 170틱 익절 완료
} 이렇게 짰는데 이게 맞는건지 검토 부탁드립니다