예스스탁
예스스탁 답변
2025-10-10 10:22:59.0
안녕하세요
예스스탁입니다.
1,2,3번식에는 해외선물에는 제공되지 않는 미결제약정이 사용되어 있습니다.
각식에서 미결제약정 내용은 제외하고 그려지게 수정해 드립니다.
4,5번식은 종목에 맞게 진입가와 손절과 익절만 적용하는 종목에 맞게 설정하시면 됩니다.
해당 부분은 저희가 임의로 지정해 드리기 어렵습니다.
1
// === 사용자 입력 ===
Input : 기준거래량배율(1.5), 체결강도EMA(20), OI_EMA단기(10), OI_EMA장기(60);
// === 변수 선언 ===
Var: 매수체결량(0), 매도체결량(0),
순매수체결량(0), 순매도체결량(0),
순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 거래량필터패스(False), tx(0);
// === 거래량 필터 ===
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// === 체결강도 계산 ===
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순매수체결량 = ACCUM(매수체결량);
순매도체결량 = ACCUM(매도체결량);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
// === 체결강도 EMA ===
체결EMA = EMA(순체결강도, 체결강도EMA);
// === 체결강도 급증 알림 ===
If CrossUp(순체결강도, 체결EMA) Then
Begin
tx = Text_New(Date, Time, Close, "체결강도↑");
Text_SetColor(tx, Red);
Text_SetStyle(tx, 2, 0);
End;
// === 차트 출력 ===
Plot1(순매수체결량, "순매수");
Plot2(순매도체결량, "순매도");
Plot3(순체결강도, "순체결강도");
Plot4(체결EMA, "체결EMA");
2
// =================== 입력값 ===================
Input: 기준거래량배율(1.5), 체결EMA기간(20), OI_EMA단기(10), OI_EMA장기(60),
익절률(1.02), 손절률(0.985), 박스색(RGB(220,220,220));
// =================== 변수 ===================
Var: 매수체결량(0), 매도체결량(0), 순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 진입가(0), 익절가(0), 손절가(0), 진입중(False), 박스ID(0);
// =================== 거래량 필터 ===================
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// =================== 체결강도 ===================
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
체결EMA = EMA(순체결강도, 체결EMA기간);
// =================== 진입 조건 ===================
If 진입중 == False AND
순체결강도 > 체결EMA Then
Begin
진입가 = Close;
익절가 = 진입가 * 익절률;
손절가 = 진입가 * 손절률;
진입중 = True;
// 박스 출력
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
// 진입 텍스트
Text_New(Date, Time, Close, "진입 ▶");
End;
// =================== 청산 조건 ===================
If 진입중 Then
Begin
Box_SetEnd(박스ID,NextBarSdate,NextBarStime,손절가);
If Close >= 익절가 Then
Begin
Text_New(Date, Time, Close, "익절");
진입중 = False;
End
Else If Close <= 손절가 Then
Begin
Text_New(Date, Time, Close, "손절");
진입중 = False;
End;
End;
3
// =================== 입력값 ===================
Input: 기준거래량배율(1.5), 체결EMA기간(20), OI_EMA단기(10), OI_EMA장기(60),
익절률(1.02), 손절률(0.985),
숏익절률(0.98), 숏손절률(1.015),
박스색_롱(RGB(220,220,220)), 박스색_숏(RGB(200,230,255));
// =================== 변수 ===================
Var: 매수체결량(0), 매도체결량(0), 순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 진입가(0), 익절가(0), 손절가(0), 진입중(False), 숏진입(False);
Var: 박스ID(0);
// =================== 거래량 필터 ===================
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// =================== 체결강도 계산 ===================
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
체결EMA = EMA(순체결강도, 체결EMA기간);
// =================== 롱 진입 ===================
If 진입중 == False AND 순체결강도 > 체결EMA Then
Begin
진입가 = Close;
익절가 = 진입가 * 익절률;
손절가 = 진입가 * 손절률;
진입중 = True;
숏진입 = False;
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색_롱);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
Text_New(Date, Time, Close, "롱 진입 ▶");
End;
// =================== 숏 진입 ===================
If 진입중 == False AND 순체결강도 < 체결EMA Then
Begin
진입가 = Close;
익절가 = 진입가 * 숏익절률;
손절가 = 진입가 * 숏손절률;
진입중 = True;
숏진입 = True;
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색_숏);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
Text_New(Date, Time, Close, "숏 진입 ▼");
End;
// =================== 청산 조건 ===================
If 진입중 Then
Begin
Box_SetEnd(박스ID,NextBarSdate,NextBarStime,손절가);
If 숏진입 == False Then // 롱
Begin
If Close >= 익절가 Then
Begin
Text_New(Date, Time, Close, "롱 익절 ✅");
진입중 = False;
End
Else If Close <= 손절가 Then
Begin
Text_New(Date, Time, Close, "롱 손절 ❌");
진입중 = False;
End;
End
Else // 숏
Begin
If Close <= 익절가 Then
Begin
Text_New(Date, Time, Close, "숏 익절 ✅");
진입중 = False;
End
Else If Close >= 손절가 Then
Begin
Text_New(Date, Time, Close, "숏 손절 ❌");
진입중 = False;
End;
End;
End;
즐거운 하루되세요
> 윤호석 님이 쓴 글입니다.
> 제목 : 부탁드립니다 항상 감사합니다
> 일전에 작성해주신건데 해외선물 차트에 구현되는게 하나도없어서요.. 다시한번 부탁드리겠습니다
안녕하세요
예스스탁입니다.
1
// === 사용자 입력 ===
Input : 기준거래량배율(1.5), 체결강도EMA(20), OI_EMA단기(10), OI_EMA장기(60);
// === 변수 선언 ===
Var: 매수체결량(0), 매도체결량(0),
순매수체결량(0), 순매도체결량(0),
순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 거래량필터패스(False), tx(0);
// === 거래량 필터 ===
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// === 체결강도 계산 ===
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순매수체결량 = ACCUM(매수체결량);
순매도체결량 = ACCUM(매도체결량);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
// === 체결강도 EMA ===
체결EMA = EMA(순체결강도, 체결강도EMA);
// === 체결강도 급증 알림 ===
If CrossUp(순체결강도, 체결EMA) Then
Begin
tx = Text_New_Self(Date, Time, Close, "체결강도↑");
Text_SetColor(tx, Red);
Text_SetStyle(tx, 2, 0);
End;
// === OI 변화 누적 및 이동평균 ===
OI변화 = OI - OI[1];
누적OI = ACCUMN(OI변화, DayIndex());
OI_EMA1 = EMA(누적OI, OI_EMA단기);
OI_EMA2 = EMA(누적OI, OI_EMA장기);
// === OI 교차 알림 ===
If CrossUp(OI_EMA1, OI_EMA2) Then
Begin
tx = Text_New_Self(Date, Time, Close, "OI↑");
Text_SetColor(tx, Green);
End;
If CrossDown(OI_EMA1, OI_EMA2) Then
Begin
tx = Text_New_Self(Date, Time, Close, "OI↓");
Text_SetColor(tx, Blue);
End;
// === 차트 출력 ===
Plot1(순매수체결량, "순매수");
Plot2(순매도체결량, "순매도");
Plot3(순체결강도, "순체결강도");
Plot4(체결EMA, "체결EMA");
Plot5(누적OI, "누적OI");
Plot6(OI_EMA1, "OI EMA10");
Plot7(OI_EMA2, "OI EMA60");
PlotBaseLine1(0);
2
// =================== 입력값 ===================
Input: 기준거래량배율(1.5), 체결EMA기간(20), OI_EMA단기(10), OI_EMA장기(60),
익절률(1.02), 손절률(0.985), 박스색(RGB(220,220,220));
// =================== 변수 ===================
Var: 매수체결량(0), 매도체결량(0), 순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 진입가(0), 익절가(0), 손절가(0), 진입중(False), 박스ID(0);
// =================== 거래량 필터 ===================
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// =================== 체결강도 ===================
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
체결EMA = EMA(순체결강도, 체결EMA기간);
// =================== OI 누적 및 이동평균 ===================
OI변화 = OI - OI[1];
누적OI = ACCUMN(OI변화, DayIndex());
OI_EMA1 = EMA(누적OI, OI_EMA단기);
OI_EMA2 = EMA(누적OI, OI_EMA장기);
// =================== 진입 조건 ===================
If 진입중 == False AND
순체결강도 > 체결EMA AND
CrossUp(OI_EMA1, OI_EMA2)
Then
Begin
진입가 = Close;
익절가 = 진입가 * 익절률;
손절가 = 진입가 * 손절률;
진입중 = True;
// 박스 출력
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
// 진입 텍스트
Text_New(Date, Time, Close, "진입 ▶");
End;
// =================== 청산 조건 ===================
If 진입중 Then
Begin
Box_SetEnd(박스ID,NextBarSdate,NextBarStime,손절가);
If Close >= 익절가 Then
Begin
Text_New(Date, Time, Close, "익절");
진입중 = False;
End
Else If Close <= 손절가 Then
Begin
Text_New(Date, Time, Close, "손절");
진입중 = False;
End;
End;
3
// =================== 입력값 ===================
Input: 기준거래량배율(1.5), 체결EMA기간(20), OI_EMA단기(10), OI_EMA장기(60),
익절률(1.02), 손절률(0.985),
숏익절률(0.98), 숏손절률(1.015),
박스색_롱(RGB(220,220,220)), 박스색_숏(RGB(200,230,255));
// =================== 변수 ===================
Var: 매수체결량(0), 매도체결량(0), 순체결강도(0), 체결EMA(0);
Var: OI변화(0), 누적OI(0), OI_EMA1(0), OI_EMA2(0);
Var: 기준거래량(0), 진입가(0), 익절가(0), 손절가(0), 진입중(False), 숏진입(False);
Var: 박스ID(0);
// =================== 거래량 필터 ===================
기준거래량 = Average(Volume, 20);
#If Volume < 기준거래량 * 기준거래량배율 Then Return;
// =================== 체결강도 계산 ===================
매수체결량 = IFF(Close > Close[1], Volume, 0);
매도체결량 = IFF(Close < Close[1], Volume, 0);
순체결강도 = ACCUM(매수체결량 - 매도체결량);
체결EMA = EMA(순체결강도, 체결EMA기간);
// =================== OI 이동평균 ===================
OI변화 = OI - OI[1];
누적OI = ACCUMN(OI변화, DayIndex());
OI_EMA1 = EMA(누적OI, OI_EMA단기);
OI_EMA2 = EMA(누적OI, OI_EMA장기);
// =================== 롱 진입 ===================
If 진입중 == False AND 순체결강도 > 체결EMA AND CrossUp(OI_EMA1, OI_EMA2) Then
Begin
진입가 = Close;
익절가 = 진입가 * 익절률;
손절가 = 진입가 * 손절률;
진입중 = True;
숏진입 = False;
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색_롱);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
Text_New(Date, Time, Close, "롱 진입 ▶");
End;
// =================== 숏 진입 ===================
If 진입중 == False AND 순체결강도 < 체결EMA AND CrossDown(OI_EMA1, OI_EMA2) Then
Begin
진입가 = Close;
익절가 = 진입가 * 숏익절률;
손절가 = 진입가 * 숏손절률;
진입중 = True;
숏진입 = True;
박스ID = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(박스ID, 박스색_숏);
Box_SetStyle(박스ID, 1);
Box_SetSize(박스ID, 2);
Text_New(Date, Time, Close, "숏 진입 ▼");
End;
// =================== 청산 조건 ===================
If 진입중 Then
Begin
Box_SetEnd(박스ID,NextBarSdate,NextBarStime,손절가);
If 숏진입 == False Then // 롱
Begin
If Close >= 익절가 Then
Begin
Text_New(Date, Time, Close, "롱 익절 ✅");
진입중 = False;
End
Else If Close <= 손절가 Then
Begin
Text_New(Date, Time, Close, "롱 손절 ❌");
진입중 = False;
End;
End
Else // 숏
Begin
If Close <= 익절가 Then
Begin
Text_New(Date, Time, Close, "숏 익절 ✅");
진입중 = False;
End
Else If Close >= 손절가 Then
Begin
Text_New(Date, Time, Close, "숏 손절 ❌");
진입중 = False;
End;
End;
End;
4
Input: 진입가(350), 손절비율(0.985), 익절비율(1.015), 박스색상(Green), 손절색상(Red);
// 진입, 손절, 익절가 계산
Var: 익절가(0), 손절가(0), 손익비(0);
익절가 = 진입가 * 익절비율;
손절가 = 진입가 * 손절비율;
손익비 = Round((익절가 - 진입가) / (진입가 - 손절가), 2);
// 박스 출력 (익절)
Var: 익절박스(0);
// 박스 출력 (손절)
Var: 손절박스(0);
// 텍스트 출력: 손익비
Var: tx(0);
if Index == 1 Then
{
익절박스 = Box_New(Date, Time, 진입가, NextBarSdate, NextBarStime, 익절가);
Box_SetColor(익절박스, 박스색상);
Box_SetFill(익절박스, true);
손절박스 = Box_New(Date, Time, 손절가, NextBarSdate, NextBarStime, 진입가);
Box_SetColor(손절박스, 손절색상);
Box_SetFill(손절박스, true);
tx = Text_New(Date, Time, 손절가 - (진입가 - 손절가)/2, "손익비: " + NumToStr(손익비, 2));
Text_SetStyle(tx, 1, 0);
Text_SetColor(tx, Black);
Text_SetSize(tx, 10);
}
Else
{
Box_SetEnd(익절박스,NextBarSdate,NextBarStime,익절가);
Box_SetEnd(손절박스,NextBarSdate,NextBarStime,익절가);
Text_SetLocation(tx,NextBarSdate,NextBarStime, 손절가 - (진입가 - 손절가)/2);
}
5
Input: 진입가(0), 손절비율(1.015), 익절비율(0.985), 박스색상(Red), 손절색상(Green);
// === 익절/손절가 계산 ===
Var: 익절가(0), 손절가(0), 손익비(0);
익절가 = 진입가 * 익절비율;
손절가 = 진입가 * 손절비율;
손익비 = Round((진입가 - 익절가) / (손절가 - 진입가), 2);
// === 익절 박스 생성 ===
Var: 익절박스(0);
// === 손절 박스 생성 ===
Var: 손절박스(0);
// === 손익비 텍스트 출력 ===
Var: tx(0);
if Index == 1 Then
{
익절박스 = Box_New(Date, Time, 익절가, NextBarSdate, NextBarStime, 진입가);
Box_SetColor(익절박스, 박스색상);
Box_SetFill(익절박스, true);
손절박스 = Box_New(Date, Time, 진입가, NextBarSdate, NextBarStime, 손절가);
Box_SetColor(손절박스, 손절색상);
Box_SetFill(손절박스, true);
tx = Text_New(Date, Time, 손절가 + (손절가 - 진입가)/2, "손익비: " + NumToStr(손익비, 2));
Text_SetStyle(tx, 1, 1);
Text_SetColor(tx, Black);
Text_SetSize(tx, 10);
}
Else
{
Box_SetEnd(익절박스,NextBarSdate,NextBarStime,진입가);
Box_SetEnd(손절박스,NextBarSdate,NextBarStime,손절가);
Text_SetLocation(tx,NextBarSdate,NextBarStime,손절가 + (손절가 - 진입가)/2);
}