커뮤니티

문의드립니다.

프로필 이미지
곽민수
2017-03-07 16:38:04
171
글번호 107551
답변완료

첨부 이미지

1. input : 기간(50),시작시간(180000),끝시간(0),당일수익틱수(20); INPUT: P26(26), PER(1); var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0); var : Tcond(false),N1(0),daypl(0),당일수익(0),Xcond(false); if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then{ Tcond = true; Xcond = false; N1 = NetProfit; } if (끝시간 > 0 and (stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간))) or (끝시간== 0 and sdate != sdate[1]) Then{ Tcond = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } 당일수익 = PriceScale*당일수익틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbx1",1) == true or IsExitName("dsx",1) == true) Then Xcond = true; var1 = Highest(h,기간); var2 = Lowest(L,기간); var3 = var1-var2; value1 = var1-var3*0.382; value2 = var1-var3*0.500; value3 = var1-var3*0.618; if value2 > value2[1] Then T = 1; if value2 < value2[1] Then T = -1; if T == 1 then{ a1 = value1; a2 = value2; } else{ a1 = value3; a2 = value2; } V1=(Highest(H,P26)+LOWEST(L,P26))/2; V2=V1*(1+PER/100); V3=V1*(1-PER/100); if Tcond == true and Xcond == false then{ if crossup(a1,v1) Then buy("매수",OnClose,def,1); if CrossDown(a1,v1) Then sell("매도",OnClose,def,1); if MarketPosition == 1 Then{ ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*10,"",1,1); ExitLong("dbx",AtLimit,EntryPrice+당일수익-daypl); } if MarketPosition == -1 Then{ ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*10,"",1,1); ExitShort("dsx",AtLimit,EntryPrice-당일수익+daypl); } } 다름이아니라 제가원하는 방향되로 조금씩 변경은되고있습니다 위 수식을 적용할경우 위 사진상처럼 3월 6일자 거래를 보면 1번째 매도 -10틱 마이너스 2번&#51760; 매수 +10틱 수익 3번째 매도 +10틱 수익 4번째 매수 +10틱 수익 일경우 당일 20틱 수익이 맞을경우 당일 수익 이 나왔기&#46468;문에 신호가 더이상 발생이 안되어야..?하는거같은데 5번째 매도 -11틱 마이너스 6번&#51760; 매수 +10틱수익 7번째 매수 +1틱 수익 3번의 거래가 더진행된거같은데 이점에 대해서는 어떤점이..? 거래를 계속 진행이 된건지 ...? 수정 이나..아니면 어떤점에서 문제점이있는지 궁금해서 여쭈어뵙니다..
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-03-08 10:55:20

안녕하세요 예스스탁입니다 당일수익이 발생하면 매수상태에서는 dbx라는 이름의 청산,매도는 dsx라는 이름이 청산이 발생하고 해당 이름의 청산이 발생하면 Xcond가 true가 되서 더이상 진입을 하지 않는 구조입니다. if TotalTrades > TotalTrades[1] and (IsExitName("dbx1",1) == true or IsExitName("dsx",1) == true) Then Xcond = true; 이름체크부분에 dbx가 dbx1로 지정이 되어 있어 인지를 못햇습니다. 아래와 같이 변경하시면 됩니다. if TotalTrades > TotalTrades[1] and (IsExitName("dbx",1) == true or IsExitName("dsx",1) == true) Then Xcond = true; 또 하나는 수식은 위에서 아래로 읽어 들어갑니다. 그러므로 만약 10틱청산과 당일수익의 지점이 같으면 10틱 청산이 발동하고 진입이 한번더 들어가게 되므로 아래와 같이 청산식의 순서를 변경해 주시면 됩니다. if MarketPosition == 1 Then{ ExitLong("dbx",AtLimit,EntryPrice+당일수익-daypl); ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*10,"",1,1); } if MarketPosition == -1 Then{ ExitShort("dsx",AtLimit,EntryPrice-당일수익+daypl); ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*10,"",1,1); } 즐거운 하루되세요 > 곽민수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 1. input : 기간(50),시작시간(180000),끝시간(0),당일수익틱수(20); INPUT: P26(26), PER(1); var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0); var : Tcond(false),N1(0),daypl(0),당일수익(0),Xcond(false); if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then{ Tcond = true; Xcond = false; N1 = NetProfit; } if (끝시간 > 0 and (stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간))) or (끝시간== 0 and sdate != sdate[1]) Then{ Tcond = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } 당일수익 = PriceScale*당일수익틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbx1",1) == true or IsExitName("dsx",1) == true) Then Xcond = true; var1 = Highest(h,기간); var2 = Lowest(L,기간); var3 = var1-var2; value1 = var1-var3*0.382; value2 = var1-var3*0.500; value3 = var1-var3*0.618; if value2 > value2[1] Then T = 1; if value2 < value2[1] Then T = -1; if T == 1 then{ a1 = value1; a2 = value2; } else{ a1 = value3; a2 = value2; } V1=(Highest(H,P26)+LOWEST(L,P26))/2; V2=V1*(1+PER/100); V3=V1*(1-PER/100); if Tcond == true and Xcond == false then{ if crossup(a1,v1) Then buy("매수",OnClose,def,1); if CrossDown(a1,v1) Then sell("매도",OnClose,def,1); if MarketPosition == 1 Then{ ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*10,"",1,1); ExitLong("dbx",AtLimit,EntryPrice+당일수익-daypl); } if MarketPosition == -1 Then{ ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*10,"",1,1); ExitShort("dsx",AtLimit,EntryPrice-당일수익+daypl); } } 다름이아니라 제가원하는 방향되로 조금씩 변경은되고있습니다 위 수식을 적용할경우 위 사진상처럼 3월 6일자 거래를 보면 1번째 매도 -10틱 마이너스 2번&#51760; 매수 +10틱 수익 3번째 매도 +10틱 수익 4번째 매수 +10틱 수익 일경우 당일 20틱 수익이 맞을경우 당일 수익 이 나왔기&#46468;문에 신호가 더이상 발생이 안되어야..?하는거같은데 5번째 매도 -11틱 마이너스 6번&#51760; 매수 +10틱수익 7번째 매수 +1틱 수익 3번의 거래가 더진행된거같은데 이점에 대해서는 어떤점이..? 거래를 계속 진행이 된건지 ...? 수정 이나..아니면 어떤점에서 문제점이있는지 궁금해서 여쭈어뵙니다..