안녕하세요. 답변으로 아래와 같은 코드를 받았는데요, 이해가 되지 않는 부분이 있어서 질문드렸습니다
질문 1.
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
이 배열 부분에해한 설명 가능할까요?
질문 2.
그리고 2개 연속 양봉인데
OO[1] > CC[1] and OO[2] > CC[2]
보내주신 코드는 "전봉과 전전봉이 양봉이면" 이라는 뜻 같은데
OO[0] > CC[0] and OO[1] > CC[1]
이 맞지 않을까요?
질문 3.
진입코드가
ExitLong("2차 매수익절_1안",OnClose, def, "매수");
이와 같은데
이러면 봉의 끝나는 부분에서 매매가 된다면
실거래에서는 불가능한 로직인가요?
아니면 어떤식으로 주문이 나가는건가요?
------------답변 내용------------------------
안녕하세요
예스스탁입니다.
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy("매수");
}
If CrossDown(value1, value2) Then
{
Sell("매도");
}
input : convert(30);
var : S1(0), D1(0), TM(0), TF1(0), rng1(0), rng2(0), OOO1(0), OOO2(0), CCC1(0), CCC2(0), cnt(0);
Array : OO[10](0), CC[10](0);
if bdate != bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1; # TM = TimeToMinutes(stime) - S1
Else
TM = TimeToMinutes(stime)+1440-S1; # 아니면 TM = TimeToMinutes(stime) + 1440 - S1
TF1 = TM % convert; # TF1 = TM 나누기 convert(30)의 '나머지'
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then # TF[1]이 보다 유일하게 커질때가 30분 정각이다.(틱봉에선 반영이 잘 안되지만, 그래도 근사값을 구할수는 있다)
{
OO[0] = O;
CC[0] = C;
for cnt = 1 to 99
{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = c;
}
// 청산<익절> ---------------------------------------------------------------------------------------------------------------
if MarketPosition == 1 Then
{
if OO[1] > CC[1] and OO[2] > CC[2] Then
ExitLong("2차 매수익절_1안",OnClose, def, "매수");
else if CurrentContracts == 1 Then
ExitLong("2차 매수본절익절_1안", atstop, EntryPrice, "매수", 1, 1);
}
if MarketPosition == -1 Then
{
if OO[1] < CC[1] and OO[2] < CC[2] Then
ExitShort("2차 매도익절_1안", OnClose,def, "매도");
else if CurrentContracts == 1 Then
ExitShort("2차 매도본절익절_1안", atstop, EntryPrice, "매도", 1, 1);
}
// 손절
SetStopLoss(10, PointStop);
즐거운 명절 되시기 바랍니다.
답변 1
예스스탁
예스스탁 답변
2020-02-04 14:55:48
안녕하세요
예스스탁입니다.
1
OO,CC는 타주기의 시가와 종가를 저장하기 위한 배열변수입니다.
OO[0]과 CC[0]은 현재의 값을 저장하고
타주기 시간경계가 넘어가면 (if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then)
기존 [0]번방의 값은 [1]번방 으로 ([1]번방에 [0]번방의 1봉전값을 저장)
기존 [1]번방의 값은 [2]번방 으로 ([2]번방에 [1]번방의 1봉전값을 저장)
기존 [2]번방의 값은 [3]번방 으로 ([3]번방에 [2]번방의 1봉전값을 저장)
....
기존 [8]번방의 값은 [9]번방 으로 ([9]번방에 [8]번방의 1봉전값을 저장)
넘기는 로직입니다.
2
양봉/음봉은 해당주기의 봉이 모두 끝나야 알수 있으므로
양봉음봉 기준이 타주기이므로 타주기의 시간경계를 넘어가는 첫봉완성시에
[0]을 제외하고 1과 2로 연속 양봉과 음봉을 파악하게 작성한 것입니다.
3
랭귀지의 봉완성은 다음봉 시가가 수신될때입니다
신호타입 중 onclose는 다음봉 시가가 수신될때
if조건이 만족하면 신호와 주문이를 발생하는 타입입니다.
즐거운 하루되세요
> 퀀트드래곤 님이 쓴 글입니다.
> 제목 : 코드 해석 부탁드립니다.
> 안녕하세요. 답변으로 아래와 같은 코드를 받았는데요, 이해가 되지 않는 부분이 있어서 질문드렸습니다
질문 1.
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
이 배열 부분에해한 설명 가능할까요?
질문 2.
그리고 2개 연속 양봉인데
OO[1] > CC[1] and OO[2] > CC[2]
보내주신 코드는 "전봉과 전전봉이 양봉이면" 이라는 뜻 같은데
OO[0] > CC[0] and OO[1] > CC[1]
이 맞지 않을까요?
질문 3.
진입코드가
ExitLong("2차 매수익절_1안",OnClose, def, "매수");
이와 같은데
이러면 봉의 끝나는 부분에서 매매가 된다면
실거래에서는 불가능한 로직인가요?
아니면 어떤식으로 주문이 나가는건가요?
------------답변 내용------------------------
안녕하세요
예스스탁입니다.
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy("매수");
}
If CrossDown(value1, value2) Then
{
Sell("매도");
}
input : convert(30);
var : S1(0), D1(0), TM(0), TF1(0), rng1(0), rng2(0), OOO1(0), OOO2(0), CCC1(0), CCC2(0), cnt(0);
Array : OO[10](0), CC[10](0);
if bdate != bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1; # TM = TimeToMinutes(stime) - S1
Else
TM = TimeToMinutes(stime)+1440-S1; # 아니면 TM = TimeToMinutes(stime) + 1440 - S1
TF1 = TM % convert; # TF1 = TM 나누기 convert(30)의 '나머지'
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then # TF[1]이 보다 유일하게 커질때가 30분 정각이다.(틱봉에선 반영이 잘 안되지만, 그래도 근사값을 구할수는 있다)
{
OO[0] = O;
CC[0] = C;
for cnt = 1 to 99
{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = c;
}
// 청산<익절> ---------------------------------------------------------------------------------------------------------------
if MarketPosition == 1 Then
{
if OO[1] > CC[1] and OO[2] > CC[2] Then
ExitLong("2차 매수익절_1안",OnClose, def, "매수");
else if CurrentContracts == 1 Then
ExitLong("2차 매수본절익절_1안", atstop, EntryPrice, "매수", 1, 1);
}
if MarketPosition == -1 Then
{
if OO[1] < CC[1] and OO[2] < CC[2] Then
ExitShort("2차 매도익절_1안", OnClose,def, "매도");
else if CurrentContracts == 1 Then
ExitShort("2차 매도본절익절_1안", atstop, EntryPrice, "매도", 1, 1);
}
// 손절
SetStopLoss(10, PointStop);
즐거운 명절 되시기 바랍니다.