커뮤니티
함수변환요청
2017-04-24 14:33:53
190
글번호 109106
안녕하세요?
아래는 키움에서 사용하였던 스크립트입니다.
YT로 변환 부탁드립니다.
Vars :
TickValue( 0 ),
RSI_value( 0 ),
RSI_period( 14 ),
MACD_OSC_value( 0 ),
MACD_period1( 12 ),
MACD_period2( 26 ),
MACD_signal_period( 9 ),
H_value1( 0 ),
H_bar1( 0 ),
L_value1( 0 ),
L_bar1( 0 ),
H_value2( 0 ),
H_bar2( 0 ),
L_value2( 0 ),
L_bar2( 0 ),
ShortPeriod( 9 ), // 전환선 기간
LongPeriod( 26 ); // 기준선 기간
// 호가단위
TickValue = OneTick * PriceScale;
// RSI
RSI_value = RSI(C, RSI_period);
// MACD 오실레이터
v0 = MACD(C, MACD_period1, MACD_period2); // MACD value
v1 = Ema(v0, MACD_signal_period); // MACD 시그널
MACD_Osc_value = v0 - v1; // MACD 오실레이터
// 전환선 & 기준선 HighestLowest 주어진 기간동안의 극단적인 최고가, 최저가를 반환
//ShortPeriod 기간 동안 고가(H) 중에 최고가를 찾아내어 그 값은 H_value1 값에 저장
//Shortperiod 기간 동안 저가(L) 중에 최저가를 찾아내어 그 값은 L_value1 값에 저장
//위의 최고가와 최저가를 바탕으로 아래와 같이 전환성과 기준선을 계산
highestlowest(H, L, ShortPeriod, H_value1, H_bar1, L_value1, L_bar1);
highestlowest(H, L, LongPeriod, H_value2, H_bar2, L_value2, L_bar2);
Value1 = (H_value1 + L_value1)/2; // 전환선 9개의 봉 동안 최고가 와 최저가의 중간값
Value2 = (H_value2 + L_value2)/2; // 기준선 26개의 봉 동안 최고가 와 최저가의 중간값
// 매수 진입
If Value1 > Value2 //전환선이 기준선보다 크고
And MACD_Osc_value > 0 //오실레이터 값이 0보다 크고
And CrossUp(RSI_value, 70) //RSI가 70을 상향 돌파
Then Buy("매수");
// 매도 진입
If Value1 < Value2 //전환선이 기준선보다 작고
And MACD_Osc_value < 0 //오실레이터 값이 0보다 작고
And CrossDown(RSI_value, 30) //RSI가 30을 하향 이탈
Then Sell("매도");
// 이하 청산 : 1계약당 손익이 10틱보다 크고
If ContractProfit > TickValue * 10 Then
Begin
// 매수 청산 : RSI가 70을 하향 이탈
If CrossDown(RSI_value, 70) then ExitLong("매수청산");
// 매도 청산 : RSI가 30을 상향 돌파
If CrossUp(RSI_value, 30) Then ExitShort("매도청산");
End;
// 손절 10틱
SetStopLoss(TickValue * 10);
답변 1
예스스탁 예스스탁 답변
2017-04-25 11:25:04
안녕하세요
예스스탁입니다.
Vars :
TickValue( 0 ),
RSI_value( 0 ),
RSI_period( 14 ),
MACD_OSC_value( 0 ),
MACD_period1( 12 ),
MACD_period2( 26 ),
MACD_signal_period( 9 ),
H_value1( 0 ),
H_bar1( 0 ),
L_value1( 0 ),
L_bar1( 0 ),
H_value2( 0 ),
H_bar2( 0 ),
L_value2( 0 ),
L_bar2( 0 ),
ShortPeriod( 9 ), // 전환선 기간
LongPeriod( 26 ); // 기준선 기간
var : V0(0),V1(0);
// 호가단위
TickValue = PriceScale;
// RSI
RSI_value = RSI(RSI_period);
// MACD 오실레이터
v0 = MACD(MACD_period1, MACD_period2); // MACD value
v1 = Ema(v0, MACD_signal_period); // MACD 시그널
MACD_Osc_value = v0 - v1; // MACD 오실레이터
Value1 = (highest(H,ShortPeriod) + lowest(L,ShortPeriod))/2; // 전환선 9개의 봉 동안 최고가 와 최저가의 중간값
Value2 = (highest(H,LongPeriod) + lowest(L,LongPeriod))/2; // 기준선 26개의 봉 동안 최고가 와 최저가의 중간값
// 매수 진입
If Value1 > Value2 //전환선이 기준선보다 크고
And MACD_Osc_value > 0 //오실레이터 값이 0보다 크고
And CrossUp(RSI_value, 70) //RSI가 70을 상향 돌파
Then Buy("매수");
// 매도 진입
If Value1 < Value2 //전환선이 기준선보다 작고
And MACD_Osc_value < 0 //오실레이터 값이 0보다 작고
And CrossDown(RSI_value, 30) //RSI가 30을 하향 이탈
Then Sell("매도");
// 이하 청산 : 1계약당 손익이 10틱보다 크고
If PositionProfit > TickValue * 10 Then
Begin
// 매수 청산 : RSI가 70을 하향 이탈
If CrossDown(RSI_value, 70) then ExitLong("매수청산");
// 매도 청산 : RSI가 30을 상향 돌파
If CrossUp(RSI_value, 30) Then ExitShort("매도청산");
End;
// 손절 10틱
SetStopLoss(TickValue * 10,PointStop);
즐거운 하루되세요
> 통큰베팅 님이 쓴 글입니다.
> 제목 : 함수변환요청
> 안녕하세요?
아래는 키움에서 사용하였던 스크립트입니다.
YT로 변환 부탁드립니다.
Vars :
TickValue( 0 ),
RSI_value( 0 ),
RSI_period( 14 ),
MACD_OSC_value( 0 ),
MACD_period1( 12 ),
MACD_period2( 26 ),
MACD_signal_period( 9 ),
H_value1( 0 ),
H_bar1( 0 ),
L_value1( 0 ),
L_bar1( 0 ),
H_value2( 0 ),
H_bar2( 0 ),
L_value2( 0 ),
L_bar2( 0 ),
ShortPeriod( 9 ), // 전환선 기간
LongPeriod( 26 ); // 기준선 기간
// 호가단위
TickValue = OneTick * PriceScale;
// RSI
RSI_value = RSI(C, RSI_period);
// MACD 오실레이터
v0 = MACD(C, MACD_period1, MACD_period2); // MACD value
v1 = Ema(v0, MACD_signal_period); // MACD 시그널
MACD_Osc_value = v0 - v1; // MACD 오실레이터
// 전환선 & 기준선 HighestLowest 주어진 기간동안의 극단적인 최고가, 최저가를 반환
//ShortPeriod 기간 동안 고가(H) 중에 최고가를 찾아내어 그 값은 H_value1 값에 저장
//Shortperiod 기간 동안 저가(L) 중에 최저가를 찾아내어 그 값은 L_value1 값에 저장
//위의 최고가와 최저가를 바탕으로 아래와 같이 전환성과 기준선을 계산
highestlowest(H, L, ShortPeriod, H_value1, H_bar1, L_value1, L_bar1);
highestlowest(H, L, LongPeriod, H_value2, H_bar2, L_value2, L_bar2);
Value1 = (H_value1 + L_value1)/2; // 전환선 9개의 봉 동안 최고가 와 최저가의 중간값
Value2 = (H_value2 + L_value2)/2; // 기준선 26개의 봉 동안 최고가 와 최저가의 중간값
// 매수 진입
If Value1 > Value2 //전환선이 기준선보다 크고
And MACD_Osc_value > 0 //오실레이터 값이 0보다 크고
And CrossUp(RSI_value, 70) //RSI가 70을 상향 돌파
Then Buy("매수");
// 매도 진입
If Value1 < Value2 //전환선이 기준선보다 작고
And MACD_Osc_value < 0 //오실레이터 값이 0보다 작고
And CrossDown(RSI_value, 30) //RSI가 30을 하향 이탈
Then Sell("매도");
// 이하 청산 : 1계약당 손익이 10틱보다 크고
If ContractProfit > TickValue * 10 Then
Begin
// 매수 청산 : RSI가 70을 하향 이탈
If CrossDown(RSI_value, 70) then ExitLong("매수청산");
// 매도 청산 : RSI가 30을 상향 돌파
If CrossUp(RSI_value, 30) Then ExitShort("매도청산");
End;
// 손절 10틱
SetStopLoss(TickValue * 10);