커뮤니티

문의 드립니다

프로필 이미지
돌아온스머프
2018-07-02 11:57:53
237
글번호 120196
답변완료

첨부 이미지

var : T1(0),Tcond(false),entrycount(0); if (sdate != sdate[1] and stime >= 91000) or (sdate == sdate[1] and stime >= 91000 and stime[1] < 91000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 153000) or (sdate == sdate[1] and stime >= 153000 and stime[1] < 153000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 183000) or (sdate == sdate[1] and stime >= 183000 and stime[1] < 183000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 43000) or (sdate == sdate[1] and stime >= 43000 and stime[1] < 43000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entrycount = TotalTrades-T1; Else entrycount = TotalTrades-T1+1; if Tcond == true then { if entrycount >= 0 then { 1,2,3 진입수식 } if entrycount >= 1 then { 4,5,6, 진입수식 } } 1. 첨부파일에 보면 ExitLong#16과 ExitShort#18이 어디서 어떻게 나온것인지 알수가 없습니다 왜 이렇게 나오는지와 이런 명령어를 하지 않기 위해서는 어떻게 해야하는지와 만일 함수를 변경해야 한다면 함수를 좀 부탁드립니다 또한 채널매수 채널매도 또한 명령이 오류가 된듯한데요..... 2. 위의 함수에서 30분 이후에 거래가 되네요 30분 이후에 청산후 거래를 정지하려면 어떻게 변경해야 하나요 야간장도 마찬가지 4시 30분이후에 청산후 거래를 아예정지하려면 어찌 해야하는지 알려주세요.... if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 1)) and 조건1 Then buy("b1"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 2)) and 조건2 Then buy("b2"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 3)) and 조건3 Then buy("b3"); #청산완료 if TotalTrades > TotalTrades[1] then { #b1로 진입후 청산되었는데 수익이면 if IsEntryName("b1",1) == true and PositionProfit(1) > 0 then var1 = 2; #b2로 진입후 청산되었는데 수익이면 if IsEntryName("b2",1) == true and PositionProfit(1) > 0 then var1 = 1; #b1로 진입후 청산되었는데 손실이면 if IsEntryName("b2",1) == true and PositionProfit(1) < 0 then var1 = 3; #b3로 진입후 청산되었는데 수익이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; #b3로 진입후 청산되었는데 손실이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; } 3. 위의 식에서 조건절이 (IF~then, IF~then, iF~then) 이렇게 여려게의 IF~then 구문으로 이루어졌을경우 어떻게 묶어주나요? {}로 묶어줬더니 오류가 뜨네요.... var : T1(0),Tcond(false),entrycount(0); if (sdate != sdate[1] and stime >= 91000) or (sdate == sdate[1] and stime >= 91000 and stime[1] < 91000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 153000) or (sdate == sdate[1] and stime >= 153000 and stime[1] < 153000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 183000) or (sdate == sdate[1] and stime >= 183000 and stime[1] < 183000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 43000) or (sdate == sdate[1] and stime >= 43000 and stime[1] < 43000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entrycount = TotalTrades-T1; Else entrycount = TotalTrades-T1+1; if Tcond == true then { if entrycount >= 0 then { 1번식 } if entrycount >= 1 then { if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 1)) and 1번식 Then buy("b1"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 2)) and 2번식 Then buy("b2"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 3)) and 3번식 Then buy("b3"); #청산완료 if TotalTrades > TotalTrades[1] then { #b1로 진입후 청산되었는데 수익이면 if IsEntryName("b1",1) == true and PositionProfit(1) > 0 then var1 = 2; #b2로 진입후 청산되었는데 수익이면 if IsEntryName("b2",1) == true and PositionProfit(1) > 0 then var1 = 1; #b1로 진입후 청산되었는데 손실이면 if IsEntryName("b2",1) == true and PositionProfit(1) < 0 then var1 = 3; #b3로 진입후 청산되었는데 수익이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; #b3로 진입후 청산되었는데 손실이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; } } } 4. 최종적으로는 이러한 식을 만들고 싶은데 위에서 보면 1번식이 두번사용되어지는데 동일하게 사용하면 안될것같아서요.... 어떻게 해야 할지 부탁드립니다 5. 개인적으로 수고하시는 에스스탁님께 계좌를 옮기고 싶은데요 어찌하면 될까요 늘 감사합니다
지표
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2018-07-02 14:58:31

안녕하세요 예스스탁입니다. 1 신호함수에 이름을 지정하지 않으시면 임의로 번호가 부여된 영문이름으로 나타나게 됩니다. 이름이 지정되지 않은 exitlong,exitshort함수가 있으면 이름을 지정해 주시면 됩니다. exitlong("bx1"); exitshort("sx1"); 또한 buy나 sell은 반대포지션에서 발동하면 자동으로 청산하고 자기 진입을 합니다. 이때 발생하는 청산은 별도로 이름을 부여할 수 없어 첨부하신 그림과 같이 자동부여된 이름으로만 나타납니다. 2 해당 수식으로 15시30분~18시30분 사이에 신호가 발생하거나 4시30분~9시10분 사이에 신호가 발생하면 해당 신호의 조건에 Tcond == false조건이 없거나 차트에서 해당 시간의 봉이 없어 Tcond가 false가 되지 못한것입니다. 현재 수식에서 별도로 수정해 드릴만한 부분이 없습니다. 해당 부분은 사용자분께서 사용하는 차트의 주기에서 지정한 시간의 봉이 있는지 혹은 수식에서 Tcond가 true일때만 신호가 발생하게 작성하셨는지 확인하셔야 합니다. 3 if문이 각 상위에 포함되면 아래와 같이 {}를 작성해 주시면 됩니다. if 조건1 then { if 조건2 then { if 조건2 then { } } } 별도의 if문이면 단순 나열해 작성하시면 됩니다. if문에 포함된 실행문이 하나면 {}은 생략하셔도 됩니다. if 조건1 then { } if 조건2 then { } if 조건3 then { } 4 내용을 정확히 파악하지 못했습니다. 올려주신 내용만으로는 수정해 드리기 어렵습니다. 5 저희는 프로그램 개발사입니다. 저희 프로그램은 하이투자증권과 NH투자증권에 제공되므로 편하신 증권사에 계좌여시고 사용해 주시면 됩니다. 즐거운 하루되세요 > 돌아온스머프 님이 쓴 글입니다. > 제목 : 문의 드립니다 > var : T1(0),Tcond(false),entrycount(0); if (sdate != sdate[1] and stime >= 91000) or (sdate == sdate[1] and stime >= 91000 and stime[1] < 91000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 153000) or (sdate == sdate[1] and stime >= 153000 and stime[1] < 153000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 183000) or (sdate == sdate[1] and stime >= 183000 and stime[1] < 183000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 43000) or (sdate == sdate[1] and stime >= 43000 and stime[1] < 43000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entrycount = TotalTrades-T1; Else entrycount = TotalTrades-T1+1; if Tcond == true then { if entrycount >= 0 then { 1,2,3 진입수식 } if entrycount >= 1 then { 4,5,6, 진입수식 } } 1. 첨부파일에 보면 ExitLong#16과 ExitShort#18이 어디서 어떻게 나온것인지 알수가 없습니다 왜 이렇게 나오는지와 이런 명령어를 하지 않기 위해서는 어떻게 해야하는지와 만일 함수를 변경해야 한다면 함수를 좀 부탁드립니다 또한 채널매수 채널매도 또한 명령이 오류가 된듯한데요..... 2. 위의 함수에서 30분 이후에 거래가 되네요 30분 이후에 청산후 거래를 정지하려면 어떻게 변경해야 하나요 야간장도 마찬가지 4시 30분이후에 청산후 거래를 아예정지하려면 어찌 해야하는지 알려주세요.... if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 1)) and 조건1 Then buy("b1"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 2)) and 조건2 Then buy("b2"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 3)) and 조건3 Then buy("b3"); #청산완료 if TotalTrades > TotalTrades[1] then { #b1로 진입후 청산되었는데 수익이면 if IsEntryName("b1",1) == true and PositionProfit(1) > 0 then var1 = 2; #b2로 진입후 청산되었는데 수익이면 if IsEntryName("b2",1) == true and PositionProfit(1) > 0 then var1 = 1; #b1로 진입후 청산되었는데 손실이면 if IsEntryName("b2",1) == true and PositionProfit(1) < 0 then var1 = 3; #b3로 진입후 청산되었는데 수익이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; #b3로 진입후 청산되었는데 손실이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; } 3. 위의 식에서 조건절이 (IF~then, IF~then, iF~then) 이렇게 여려게의 IF~then 구문으로 이루어졌을경우 어떻게 묶어주나요? {}로 묶어줬더니 오류가 뜨네요.... var : T1(0),Tcond(false),entrycount(0); if (sdate != sdate[1] and stime >= 91000) or (sdate == sdate[1] and stime >= 91000 and stime[1] < 91000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 153000) or (sdate == sdate[1] and stime >= 153000 and stime[1] < 153000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 183000) or (sdate == sdate[1] and stime >= 183000 and stime[1] < 183000) Then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 43000) or (sdate == sdate[1] and stime >= 43000 and stime[1] < 43000) Then { Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entrycount = TotalTrades-T1; Else entrycount = TotalTrades-T1+1; if Tcond == true then { if entrycount >= 0 then { 1번식 } if entrycount >= 1 then { if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 1)) and 1번식 Then buy("b1"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 2)) and 2번식 Then buy("b2"); if (TotalTrades == 0 or (TotalTrades >= 1 and var1 == 3)) and 3번식 Then buy("b3"); #청산완료 if TotalTrades > TotalTrades[1] then { #b1로 진입후 청산되었는데 수익이면 if IsEntryName("b1",1) == true and PositionProfit(1) > 0 then var1 = 2; #b2로 진입후 청산되었는데 수익이면 if IsEntryName("b2",1) == true and PositionProfit(1) > 0 then var1 = 1; #b1로 진입후 청산되었는데 손실이면 if IsEntryName("b2",1) == true and PositionProfit(1) < 0 then var1 = 3; #b3로 진입후 청산되었는데 수익이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; #b3로 진입후 청산되었는데 손실이면 if IsEntryName("b3",1) == true and PositionProfit(1) > 0 then var1 = 1; } } } 4. 최종적으로는 이러한 식을 만들고 싶은데 위에서 보면 1번식이 두번사용되어지는데 동일하게 사용하면 안될것같아서요.... 어떻게 해야 할지 부탁드립니다 5. 개인적으로 수고하시는 에스스탁님께 계좌를 옮기고 싶은데요 어찌하면 될까요 늘 감사합니다
프로필 이미지

돌아온스머프

2018-07-02 15:09:01

돌아온스머프 님에 의해 삭제된 답변입니다.
프로필 이미지

예스스탁 예스스탁 답변

2018-07-02 15:17:17

> 돌아온스머프 님이 쓴 글입니다. > 제목 : Re : Re : 문의 드립니다 > 위의 1번 질문은 함수식에서 종료 시간이 되지 않았는데 신호가 나와요 함수가 잘 못 된것 같은데 무엇이 잘 못되었는지 모르겠어요 아침 9시 10분에 시작해서 3시 30분에 끝나야 하는데 장도중에 신호가 발생합니다.... 장 이후에 신호가 발생하는 부분은 이해하지만 장 도중에 발생합니다 꼭 부탁드립니다
프로필 이미지

돌아온스머프

2018-07-02 15:19:26

if entrycount >= 0 then { if{} and { if{} if{} if{} } 위의 구분을 맞게 수정하려면 어떻게 해야 하나요....