답변완료
시스템식 문의 드립니다.
주식현물 시스템식 작성중에 궁금한게 있어 글을 남깁니다.
1. if Bdate != Bdate[1] Then
Condition1 = False;
위 식에서는 날짜가 하루 지나가게 되면 condition1 = false 로 바뀌게 되는걸로
알고 있는데
if NextBarSdate == sDate and (MarketPosition == 0 or
(MarketPosition == 1 and sDate == EntryDate)) Then
매수전에 사용되었던 조건식인데 해석이 잘 안됩니다. ㅜ.ㅜ 해석좀 부탁드립니다.
메뉴얼에는 nextbarsdate가 다음봉시작날짜라고 써 있는데
진입날짜 (ex)3/6일) 가 sdate에 저장되고 1분봉차트에서 다음봉이 나올때마다
sdate(3/6)일 날짜와 비교해서 맞으면 조건이 성립되는게 맞는건가요??
그럼 sdate와 bdate의 차이점이 몬지도 궁금합니다..
메뉴얼보니 sdate는 봉의 시작날짜이고 bdate는 영업일이라고 나오는데?
2. 3시에 매수해서 그 다음날 일봉상 3일선을 터치하면 추매하는 전략을 사용하려고
아래와 같은 시스템식을 작성하였는데 다음날 매수가 안됩니다.ㅜ.ㅜ
확인좀 부탁드리겠습니다.
왜 안되는걸까요??
매수포지션을 들고 있으면서 진입날짜로 부터 하루가 지나고, 3일선 아래로 돌파했을
때 매수해라 .. 제대로 작성한것 같은데..ㅜ.ㅜ
3. '손절' 같은 latestexitname 으로 가장 마지막 청산명으로 다시 매수가 안되게 진행하려고 하는데
시뮬레이션을 돌려보면 '손절' 이후에도 계속 매수 되도록 되어있네요
어떤부분이 안되는지 확인이 안되네요...
4. 3%, 4% 매수 청산하는 부분에서 최근진입명이 아래와같은 진입명인 경우를 빼고(제외하고) 나머지를 생각하면서 만든식인데
적용이 안되는것 같습니다.
if MarketPosition == 1 AND (LatestEntryName(0) != "S1" or LatestEntryName(0) != "S1(NEXT)" or LatestEntryName(0) != "BS1(상풀)") Then
추매했을경우 (0.3%, 1%) 해당 진입명은 아래와 같습니다.
if MarketPosition == 1 AND (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
결론적으로 추매했을경우에는 0.3, 1% 매수청산이고 추매하지 않았을경우에는 3,4% 매수청산인데
적용이 안되는것 같습니다. 도와주세요..ㅜ.ㅜ
5. 기초적인거 많이 물어봐서 죄송합니다. 그리고 항상 감사합니다.
------------------------------------------------------------------------------
input :금액1(500000),상한가(36500),손절금액(300000),N(3);
input : 익절(3),익절2(1);
var : cnt(0),sum(0),mav(0),DD(0);
var : day(0),entry(False),AP(0),TT(0);
var : LL(0),RR(0),rate(0);
sum = 0;
For cnt = 0 to N-1
{
sum = sum + DayClose(cnt);
}
mav = (sum/N)*1;
if Bdate != Bdate[1] Then
Condition1 = False;
entry = True;
if sTime > 120000 and C[0] >= DayClose(1)*1.265 Then
Condition1 = true;
if LatestExitName(0) == "손절" or (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
entry = False;
#여기서 부터 매수하기.
if NextBarSdate == sDate and entry == true and (MarketPosition == 0 or (MarketPosition == 1 and sDate == EntryDate)) Then
{
if condition1 == true OR LatestExitName(1) == "4%익절" Then
Buy("상한가매수",AtStop,상한가,Floor(금액1/min(NextBarOpen,상한가)));
if condition1 == true and IsEntryName("상한가매수") == true Then
Buy("BS1(상풀)",AtLimit,상한가*0.955,Floor(금액1/min(NextBarOpen,상한가*0.955)));
if condition1 == true Then
Buy("BS1",AtLimit,Dayclose(1)*1.235,Floor(금액1/min(NextBarOpen,Dayclose(1)*1.235)));
if condition1 == true and IsEntryName("BS1") == true and sdate >= EntryDate+1 and day <=1 Then
Buy("S1",AtLimit,Dayclose(1)*1.19,Floor(금액1/min(NextBarOpen,Dayclose(1)*1.19)));
if condition1 == true and IsEntryName("BS1") == true and sTime == 150800 Then
Buy("3시10분매수(1-1)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(1-1)") == true and sTime == 151300 Then
Buy("3시15분매수(1-2)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(1-1)") == true and sTime == 151700 Then
Buy("3시19분매수(1-3)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and MarketPosition == 0 and sTime == 150800 Then
Buy("3시10분매수(2-1)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(2-1)") == true and sTime == 151300 Then
Buy("3시15분매수(2-2)",AtMarket,floor(금액1/nextbaropen));
if condition1 == true and IsEntryName("3시10분매수(2-1)") == true and sTime == 151700 Then
Buy("3시19분매수(2-3)",AtMarket,floor(금액1/nextbaropen));
if MarketPosition == 1 and day >=2 and DayOpen*1.04>=DayHigh Then
Buy("S1(NEXT)",AtLimit,DayHigh*0.92,Floor(금액1/min(NextBarOpen,DayHigh*0.92)));
}
if MarketPosition == 1 and sdate >= EntryDate+1 and L > mav Then
Buy("담날추매",AtLimit,mav,Floor(금액1/min(NextBarOpen,mav)));
#여기서 부터 매도하기.
if MarketPosition == 1 AND (LatestEntryName(0) != "S1" or LatestEntryName(0) != "S1(NEXT)" or LatestEntryName(0) != "BS1(상풀)") Then
{
if LL == 0 then
LL = L;
Else
{
if L < LL then
LL = L;
}
RR = (LL-AVGEntryPrice)/AVGEntryPrice*100;
if RR >= -0.9 Then
Rate = 익절;
if RR >= -2.9 and RR < -0.9 Then
Rate = (익절+RR);
if RR < -2.9 Then
Rate = 0.3;
ExitLong("3%익절",AtLimit,AVGEntryPrice*(1+Rate/100),"",Floor(MaxContracts*0.5));
ExitLong("4%익절",AtLimit,AVGEntryPrice*(1.01+Rate/100));
}
Else
LL = 0;
#----------------------------------------------------------------------------
# 3%, 4% 매도 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 AND (LatestEntryName(0) == "S1" or LatestEntryName(0) == "S1(NEXT)" or LatestEntryName(0) == "BS1(상풀)") Then
{
ExitLong("0.3%익절",AtLimit,AVGEntryPrice*1.003,"",Floor(MaxContracts*0.5));
ExitLong("1%익절",AtLimit,AVGEntryPrice*1.1);
}
Else
LL = 0;
#----------------------------------------------------------------------------
# 0.3%, 1% 매도 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 Then
if sdate >= EntryDate+1 and sTime == 100000 Then
{
ExitLong("다음날 10시청산");
}
#----------------------------------------------------------------------------
# 다음날 10시 청산
#----------------------------------------------------------------------------
if MarketPosition == 1 Then
ExitLong("손절",AtStop,AvgEntryPrice-손절금액/CurrentContracts);
#----------------------------------------------------------------------------
# 손절
------------------------------------------------------------------------------
2022-03-09
1170
글번호 157040
시스템
답변완료
수식 문의 드립니다
안녕하세요
작성해주신 수식은 감사히 잘 사용하고있습니다
다름이 아니라 거래대금 전일비교 말고 그냥 거래대금을 색을 통일할수는 없을까요?
일반 거래대금은 검정색으로 부탁드리고
500억이상은 그대로 주황색
1000억이상은 형광색 (bright green)
으로 부탁드립니다~
번거롭게 해드려 죄송합니다
-------------------
var : color(0);
If m > m[1] Then
{
color = RED;
if m > 50000000000 Then
color = RGB(255,165,0);
if m > 100000000000 Then
color = CYAN;
Plot1(m, "거래대금",Color);
}
Else
{
color = BLUE;
if m > 50000000000 Then
color = RGB(255,165,0);
if m > 100000000000 Then
color = CYAN;
Plot1(m, "거래대금",blue);
}
PlotBaseLine1(30000000000,"기준1");
PlotBaseLine2(50000000000,"기준2");
PlotBaseLine3(100000000000,"기준3");
2022-03-08
919
글번호 157033
지표