커뮤니티

문의 드립니다

프로필 이미지
돌아온스머프
2018-06-21 08:46:44
112
글번호 119922
답변완료
늘 감사합니다 함수를 만들었는데 생각대로 되지 않는 부분이 있어 이렇게 문의합니다 Input : Period1(0), Period2(0), Period3(0), Short(0), Mid(0); var : StoK(0), StoD(0); StoK = StochasticsK(Period1,Period2); StoD = StochasticsD(Period1,Period2,Period3); value1 = ma(c, Short); value2 = ma(c, Mid); # 매수 / 청산 IF StoK == 20 Then { Buy("1"); } IF StoK == 80 or entryprice>value1 Then { Exitlong("bx1",OnClose,def,"1"); } IF StoK == 80 Then { Sell("2"); } IF StoK == 20 or entryprice<value1 then { Exitshort("bx2",OnClose,def,"2"); } IF entryprice>value1 Then { Sell("3"); } IF CrossUp(value1, value2) then { Exitshort("bx3",OnClose,def,"3"); } IF entryprice<value1 Then { buy("4"); } IF CrossDown(value1, value2) then { Exitlong("bx4",OnClose,def,"4"); } 1. 위의 식에서 "entryprice<value1"은 매입가격보다 이평선의 수치가 더 크면 그때 봉 종가로 청산하라고 하고 싶은데 잘 안되네요 조언 부탁드립니다 2. 지정매매 "1""2""3""4"를 진행할때는 각각의 매매가 완결될때까지 다른 조건의 매매는 진행되지 않도록 하고 싶습니다. 간단히 말하면 매매를 1개로 지정해서 할경우 어찌해야 할지 알고 싶습니다 3. 골드와 데드 신호시 계속 늦게 발생하는데 혹시 챠트가 틱챠트나 체결챠트의 경우는 함수를 달리 사용해야 하나요 4. input : 주간장시작(90000),주간장종료(151000); input : 야간장시작(180000),야간장종료(045000); var : Tcond(false); if (sdate != sdate[1] and stime >= 주간장시작) or (sdate == sdate[1] and stime >= 주간장시작 and stime[1] < 주간장시작) Then Tcond = true; if (sdate != sdate[1] and stime >= 주간장종료) or (sdate == sdate[1] and stime >= 주간장종료 and stime[1] < 주간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 야간장시작) or (sdate == sdate[1] and stime >= 야간장시작 and stime[1] < 야간장시작) Then Tcond = true; if (sdate != sdate[1] and stime >= 야간장종료) or (sdate == sdate[1] and stime >= 야간장종료 and stime[1] < 야간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { 진입청산수식들 } 이식에서 시가을 어느부분에 어떻게 넣어야 할지 잘 모르겠습니다 예를 들어 9시 10분에 시작해서 3시 30분에 주간장을 마무리 한다면 어찌해야 할까요 5. A플랜에서 수익시에는 B플랜으로 손절시에는 C플랜으로 진행하라 라고 식을 만들고 싶은데 어떤 함수를 사용해야 할까요 부탁드릴께요 계속 번거롭게 해 드려 죄송합니다 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-06-21 09:46:46

안녕하세요 예스스탁입니다. 1 조건내용에 문제가 없습니다. 지정한 조건에 정상적으로 청산이 됩니다. 다만 청산식에 특별히 포지션에 대한 내용이 없어 진입봉에서 청산조건이 동시만족하면 한봉에서 모두 신호가 발생합니다. 매수포지션에 대한 청산식에는 MarketPosition == 1 매도포지션에 대한 청산식에는 MarketPosition == -1 조건을 추가하시기 바랍니다. 2 진입후 반대방향 조건으로 리버스가 되지 않게 하시 위해서는 신호상 무포지션일때만 진입하게 하셔야 합니다. 진입식에 MarketPosition == 0 조건을 추가하시면 됩니다. 3 수식에서 변경할 내용은 없습니다. 수식은 차트에 적용되어 차트의 봉의 데이터를 이용해서 계산합니다. 4 당일시가는 dayopen(0) 함수로 제공됩니다. 지정한 시작시간의 시가를 저장하고 하시면 주간장시작 조건문에 변수추가해서 저장해 사용하시면 됩니다. var1에는 주간장시작시간의 시가 var2에는 야간장시작시간의 시가가 저장되도록 했습니다. input : 주간장시작(90000),주간장종료(151000); input : 야간장시작(180000),야간장종료(045000); var : Tcond(false); if (sdate != sdate[1] and stime >= 주간장시작) or (sdate == sdate[1] and stime >= 주간장시작 and stime[1] < 주간장시작) Then { var1 = o; Tcond = true; } if (sdate != sdate[1] and stime >= 주간장종료) or (sdate == sdate[1] and stime >= 주간장종료 and stime[1] < 주간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 야간장시작) or (sdate == sdate[1] and stime >= 야간장시작 and stime[1] < 야간장시작) Then { var2 = O; Tcond = true; } if (sdate != sdate[1] and stime >= 야간장종료) or (sdate == sdate[1] and stime >= 야간장종료 and stime[1] < 야간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { 진입청산수식들 } 5 해당 내용은 구사하는 전략내요에 따라 다를수 있습니다. 일반적으로 직전거래의 이름과 손익으로 판단하게 코딩하셔야 합니다. var : S(0); #청산발생 if TotalTrades > TotalTrades[1] then { #초기값은 0 S = 0; #청산된 직전거래의 진입명이 b1이고 수익이면 1 if IsEntryName("b1",1) == true and PositionProfit(1) > 0 Then S = 1; #청산된 직전거래의 진입명이 b1이고 손실이면 -1 if IsEntryName("b1",1) == true and PositionProfit(1) < 0 Then S = -1; } #직전진입이 b1이고 if MarketPosition == 0 and IsEntryName("b1",1) == true then { #수익이었으면 B플랜 if S == 1 then { B플랜내용 } #손실이었으면 C플랜 if S == -1 then { C플랜내용 } } 즐거운 하루되세요 > 돌아온스머프 님이 쓴 글입니다. > 제목 : 문의 드립니다 > 늘 감사합니다 함수를 만들었는데 생각대로 되지 않는 부분이 있어 이렇게 문의합니다 Input : Period1(0), Period2(0), Period3(0), Short(0), Mid(0); var : StoK(0), StoD(0); StoK = StochasticsK(Period1,Period2); StoD = StochasticsD(Period1,Period2,Period3); value1 = ma(c, Short); value2 = ma(c, Mid); # 매수 / 청산 IF StoK == 20 Then { Buy("1"); } IF StoK == 80 or entryprice>value1 Then { Exitlong("bx1",OnClose,def,"1"); } IF StoK == 80 Then { Sell("2"); } IF StoK == 20 or entryprice<value1 then { Exitshort("bx2",OnClose,def,"2"); } IF entryprice>value1 Then { Sell("3"); } IF CrossUp(value1, value2) then { Exitshort("bx3",OnClose,def,"3"); } IF entryprice<value1 Then { buy("4"); } IF CrossDown(value1, value2) then { Exitlong("bx4",OnClose,def,"4"); } 1. 위의 식에서 "entryprice<value1"은 매입가격보다 이평선의 수치가 더 크면 그때 봉 종가로 청산하라고 하고 싶은데 잘 안되네요 조언 부탁드립니다 2. 지정매매 "1""2""3""4"를 진행할때는 각각의 매매가 완결될때까지 다른 조건의 매매는 진행되지 않도록 하고 싶습니다. 간단히 말하면 매매를 1개로 지정해서 할경우 어찌해야 할지 알고 싶습니다 3. 골드와 데드 신호시 계속 늦게 발생하는데 혹시 챠트가 틱챠트나 체결챠트의 경우는 함수를 달리 사용해야 하나요 4. input : 주간장시작(90000),주간장종료(151000); input : 야간장시작(180000),야간장종료(045000); var : Tcond(false); if (sdate != sdate[1] and stime >= 주간장시작) or (sdate == sdate[1] and stime >= 주간장시작 and stime[1] < 주간장시작) Then Tcond = true; if (sdate != sdate[1] and stime >= 주간장종료) or (sdate == sdate[1] and stime >= 주간장종료 and stime[1] < 주간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 야간장시작) or (sdate == sdate[1] and stime >= 야간장시작 and stime[1] < 야간장시작) Then Tcond = true; if (sdate != sdate[1] and stime >= 야간장종료) or (sdate == sdate[1] and stime >= 야간장종료 and stime[1] < 야간장종료) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { 진입청산수식들 } 이식에서 시가을 어느부분에 어떻게 넣어야 할지 잘 모르겠습니다 예를 들어 9시 10분에 시작해서 3시 30분에 주간장을 마무리 한다면 어찌해야 할까요 5. A플랜에서 수익시에는 B플랜으로 손절시에는 C플랜으로 진행하라 라고 식을 만들고 싶은데 어떤 함수를 사용해야 할까요 부탁드릴께요 계속 번거롭게 해 드려 죄송합니다 감사합니다