커뮤니티
청산 관련 문의입니다.
2009-01-06 22:24:19
890
글번호 19291
아래식에서 특정명칭의 매수주문이 나간 후, 일정% 이상의 수익 발생시 매수청산을 하고 싶은데 청산신호가 발생하지 않습니다.
저는 문제점을 못찾겠네요.
그리고 print함수를 써보니까 MACD, MACD_OSC, STO_K,RSI들의 값이 제가 생각했던거하고 다르게 나옵니다.
차트에서 볼때는 MACD, MACD_OSC,STO_K가 소숫점으로 나오는데 print해보니까 MACD는 상당히 큰수고 MACD_OSC,STO_K,RSI는 챠트에 나오는 값하고 다른것 같습니다.
캡쳐해서 같이 올릴테니 검토 부탁드릴께요.
차트하고 프린트값이 단위수라던가 내용이 틀리게 나오는게 정상이라면 죄송합니다.
각종 지표를 이용하는 것이 처음이라 사실 지표들의 뜻도 잘 모르거든요..-_-!!
MACD_OSC같은 경우 그림에서 봉으로 표현되는 부분으로 생각했는데, 실제 Print해서 보니까 파란선이 MACD_OSC값하고 맞아떨어지고 차트에서 지표속성에 들어가보면 또 봉이 맞는것 같고.....
저는 봉의 상승하락 등을 기준을 잡고 식을 짠거였거든요.
제가 잘 모르는 부분을 좀 짚어주세요....
감사합니다.^^
--------------------------------------------------------------------------------
Input:shortPeriod(12), longPeriod(26), Period(9), ev(1);
var :set(0),ev_1(0),MACDV(0),MACDS(0),MACDO(0), STO_K(0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS = ema(MACDV,Period);
MACDO = MACD_OSC(shortPeriod, longPeriod, Period);
STO_K = StochasticsK(12,5);
var1=RSI(Period);
ev_1 = ev;
if MACDO <=-0.1 and (var1 <= 30 ) and STO_K<=20 Then {
if MarketPosition() == 0 and CurrentEntries ==0 Then
buy("a0",OnClose, def,ev_1);
if MarketPosition() == 1 and CurrentEntries ==1 Then
buy("a1",OnClose, def,ev_1);
}
//a0과 a1 매수됐을 때 a1은 2% 상승시 익절.
If IsEntryName("a1") == True Then
SetStopProfitTarget(2, PercentStop); //<-- 2% 상승해도 청산하지 않음.
SetStopendofday(1500);
print("데이터1.csv",",시가,%.2f,고가,%.2f,저가,%.2f,종가,%.2f,MACD,%.3f,MACD_OSC,%.3f,STO_K,%.2f,RSI,%.2f",O,H,L,C,V,MACD(12,26),MACD_OSC(12,26,9),StochasticsK(12,5),RSI(9));
- 1. 질문(Print함수사용).JPG (0.21 MB)
답변 1
예스스탁 예스스탁 답변
2009-01-07 10:12:36
안녕하세요
예스스탁입니다.
지표로 보시는 값과 프린트문의 값을 같아야 합니다.
작성하신 print문에 표시하고자 하시는 데이터와 지정한 데이터가 다릅니다.
거래량이 들어가면서 밀려서 표시됩니다.
수정한 print문입니다.
파일도 첨부해 드립니다.
print("데이터3.csv",",시가,%.2f,고가,%.2f,저가,%.2f,종가,%.2f,MACD,%.3f,MACD_OSC,%.3f,STO_K,%.2f,RSI,%.2f",
O,H,L,C,MACD(12,26),MACD_OSC(12,26,9),StochasticsK(12,5),RSI(9));
또한 수식에서
If IsEntryName("a1") == True Then
SetStopProfitTarget(2, PercentStop); //<-- 2% 상승해도 청산하지 않음.
은 발동하지 않습니다.
피라미딩된 상황에서 IsEntryName은 항상 첫번째 진입명만을 가져오므로
전체에서 IsEntryName("a1") == True 가 되는 봉은 없습니다.
2번 진입후 2번쨰 진입가에서 2% 수익시 청산 하고자 하시면
식을 아래와 같이 변경하셔야 합니다.
If MarketPosition() == 1 and CurrentEntries() == 2 Then
exitlong("x",atlimit,EntryPrice*1.02);
즐거운 하루되세요
> 깜피 님이 쓴 글입니다.
> 제목 : 청산 관련 문의입니다.
> 아래식에서 특정명칭의 매수주문이 나간 후, 일정% 이상의 수익 발생시 매수청산을 하고 싶은데 청산신호가 발생하지 않습니다.
저는 문제점을 못찾겠네요.
그리고 print함수를 써보니까 MACD, MACD_OSC, STO_K,RSI들의 값이 제가 생각했던거하고 다르게 나옵니다.
차트에서 볼때는 MACD, MACD_OSC,STO_K가 소숫점으로 나오는데 print해보니까 MACD는 상당히 큰수고 MACD_OSC,STO_K,RSI는 챠트에 나오는 값하고 다른것 같습니다.
캡쳐해서 같이 올릴테니 검토 부탁드릴께요.
차트하고 프린트값이 단위수라던가 내용이 틀리게 나오는게 정상이라면 죄송합니다.
각종 지표를 이용하는 것이 처음이라 사실 지표들의 뜻도 잘 모르거든요..-_-!!
MACD_OSC같은 경우 그림에서 봉으로 표현되는 부분으로 생각했는데, 실제 Print해서 보니까 파란선이 MACD_OSC값하고 맞아떨어지고 차트에서 지표속성에 들어가보면 또 봉이 맞는것 같고.....
저는 봉의 상승하락 등을 기준을 잡고 식을 짠거였거든요.
제가 잘 모르는 부분을 좀 짚어주세요....
감사합니다.^^
--------------------------------------------------------------------------------
Input:shortPeriod(12), longPeriod(26), Period(9), ev(1);
var :set(0),ev_1(0),MACDV(0),MACDS(0),MACDO(0), STO_K(0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS = ema(MACDV,Period);
MACDO = MACD_OSC(shortPeriod, longPeriod, Period);
STO_K = StochasticsK(12,5);
var1=RSI(Period);
ev_1 = ev;
if MACDO <=-0.1 and (var1 <= 30 ) and STO_K<=20 Then {
if MarketPosition() == 0 and CurrentEntries ==0 Then
buy("a0",OnClose, def,ev_1);
if MarketPosition() == 1 and CurrentEntries ==1 Then
buy("a1",OnClose, def,ev_1);
}
//a0과 a1 매수됐을 때 a1은 2% 상승시 익절.
If IsEntryName("a1") == True Then
SetStopProfitTarget(2, PercentStop); //<-- 2% 상승해도 청산하지 않음.
SetStopendofday(1500);
print("데이터1.csv",",시가,%.2f,고가,%.2f,저가,%.2f,종가,%.2f,MACD,%.3f,MACD_OSC,%.3f,STO_K,%.2f,RSI,%.2f",O,H,L,C,V,MACD(12,26),MACD_OSC(12,26,9),StochasticsK(12,5),RSI(9));