커뮤니티

문의 드립니다

프로필 이미지
남산
2019-03-20 09:31:00
360
글번호 127205
답변완료
input : 시작시간(090000),종료시간(0); input : Period20(36),Period30(30),Period120(120),Period180(180),Period240(240),Period480(480), Period960(960),Period60(60),Period10(10),Period7(7),Period144(144),Period100(100); input : 익절틱수1(250),손절틱수1(100),익절틱수2(250),손절틱수2(200),익절틱수3(200),손절틱수3(200),익절틱수4(200),손절틱수4(200),익절틱수5(200),손절틱수5(200); var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0),mav480(0),mav960(0),mav60(0), mav10(0),mav7(0),mav144(0),mav100(0),Bxcond(false),Sxcond(false); var : Tcond(false); var : T(0); var : BE1(0),BE2(0),BE3(0),BE4(0),BE5(0); var : SE1(0),SE2(0),SE3(0),SE4(0),SE5(0); input : ntime1(6),P1(8),P2(16),P4(64),P5(128),P6(256); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : sum1(0),sum11(0),sum12(0),sum13(0),mav1(0),mav11(0),mav12(0),mav13(0); var : sum2(0),sum21(0),sum22(0),sum23(0),mav2(0),mav21(0),mav22(0),mav23(0); var : sum3(0),sum31(0),sum32(0),sum33(0),mav3(0),mav31(0),mav32(0),mav33(0); var : sum4(0),sum41(0),sum42(0),sum43(0),mav4(0),mav41(0),mav42(0),mav43(0); var : sum5(0),sum51(0),sum52(0),sum53(0),mav5(0),mav51(0),mav52(0),mav53(0); var : sum6(0),sum61(0),sum62(0),sum63(0),mav6(0),mav61(0),mav62(0),mav63(0); Array : C1[500](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 499 { C1[cnt] = C1[cnt-1][1]; } } C1[0] = C; if C1[P6+3] > 0 then { sum1 = 0; sum11 = 0; sum12 = 0; sum13 = 0; sum2 = 0; sum21 = 0; sum22 = 0; sum23 = 0; sum3 = 0; sum31 = 0; sum32 = 0; sum33 = 0; sum4 = 0; sum41 = 0; sum42 = 0; sum43 = 0; sum5 = 0; sum51 = 0; sum52 = 0; sum53 = 0; sum6 = 0; sum61 = 0; sum62 = 0; sum63 = 0; for cnt = 0 to P6-1 { if cnt < P1 then { sum1 = sum1+C1[cnt]; sum11 = sum11+C1[cnt+1]; sum12 = sum12+C1[cnt+2]; sum13 = sum13+C1[cnt+3]; } if cnt < P2 then { sum2 = sum2+C1[cnt]; sum21 = sum21+C1[cnt+1]; sum22 = sum22+C1[cnt+2]; sum23 = sum23+C1[cnt+3]; } if cnt < P3 then { sum3 = sum3+C1[cnt]; sum31 = sum31+C1[cnt+1]; sum32 = sum32+C1[cnt+2]; sum33 = sum33+C1[cnt+3]; } if cnt < P4 then { sum4 = sum4+C1[cnt]; sum41 = sum41+C1[cnt+1]; sum42 = sum42+C1[cnt+2]; sum43 = sum43+C1[cnt+3]; } if cnt < P5 then { sum5 = sum5+C1[cnt]; sum51 = sum51+C1[cnt+1]; sum52 = sum52+C1[cnt+2]; sum53 = sum53+C1[cnt+3]; } if cnt < P6 then { sum6 = sum6+C1[cnt]; sum61 = sum61+C1[cnt+1]; sum62 = sum62+C1[cnt+2]; sum63 = sum63+C1[cnt+3]; } } mav1 = sum1/P1; mav11 = sum11/P1; mav12 = sum12/P1; mav13 = sum13/P1; mav2 = sum2/P2; mav21 = sum21/P2; mav22 = sum22/P2; mav23 = sum23/P2; mav3 = sum3/P3; mav31 = sum31/P3; mav32 = sum32/P3; mav33 = sum33/P3; mav4 = sum4/P4; mav41 = sum41/P4; mav42 = sum42/P4; mav43 = sum43/P4; mav5 = sum5/P5; mav51 = sum51/P5; mav52 = sum52/P5; mav53 = sum53/P5; mav6 = sum6/P6; mav61 = sum61/P6; mav62 = sum62/P6; mav63 = sum63/P6; } } mav15 = ma(c, Period15); mav20 = ma(c, Period20); mav30 = ma(c, Period30); mav120 = ma(c, Period120); mav180 = ma(c, Period180); mav240 = ma(c, Period240); mav480 = ma(c, Period480); mav960 = ma(c, Period960); mav60 = ma(c, Period60); mav10 = ma(c, Period10); mav7 = ma(c, Period7); mav144 = ma(c, Period144); mav100 = ma(c, Period100); if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then { Tcond = True; BXcond = false; SXcond = false; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if TotalTrades > TotalTrades[1] then { BXcond = false; SXcond = false; if (IsExitName("bl",0) == true or IsExitName("bp",0) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then BXcond = true; if (IsExitName("sl",0) == true or IsExitName("sp",0) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then SXcond = true; } if Tcond == true then { if MarketPosition <= 0 and Bxcond == false and mav33 < mav32 and mav32 < mav31 and mav31 < mav3 Then { buy("매수1",OnClose,def,1); } if MarketPosition == 1 Then { if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수2",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수2-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수3",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수3-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수4",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수4-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수5",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수5-1",OnClose,def,1); } } if MarketPosition == 1 Then { if (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then exitlong("수청산1",OnClose,def,"매수1"); if (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) or (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then { exitlong("수청산2",OnClose,def,"매수2"); exitlong("수청산3",OnClose,def,"매수3"); exitlong("수청산4",OnClose,def,"매수4"); exitlong("수청산5",OnClose,def,"매수5"); } if (mav15[3] > mav15[2] and mav15[2] > mav15[1] and mav15[1] > mav15) or (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) Then { exitlong("수청산2-1",OnClose,def,"매수2-1"); exitlong("수청산3-1",OnClose,def,"매수3-1"); exitlong("수청산4-1",OnClose,def,"매수4-1"); exitlong("수청산5-1",OnClose,def,"매수5-1"); } if CurrentContracts > CurrentContracts[1] and MaxEntries == 1 Then BE1 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 2 Then BE2 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then BE3 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 4 Then BE4 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 5 Then BE5 = LatestEntryPrice(0); if MaxEntries >= 1 Then { ExitLong("bp1",atlimit,BE1+PriceScale*익절틱수1,"매수1"); ExitLong("bl1",AtStop,BE1-PriceScale*손절틱수1,"매수1"); } if MaxEntries >= 2 then { ExitLong("bp2",atlimit,BE2+PriceScale*익절틱수2,"매수2"); ExitLong("bl2",AtStop,BE2-PriceScale*손절틱수2,"매수2"); } if MaxEntries >= 3 then { ExitLong("bp3",atlimit,BE3+PriceScale*익절틱수3,"매수3"); ExitLong("bl3",AtStop,BE3-PriceScale*손절틱수3,"매수3"); } if MaxEntries >= 4 then { ExitLong("bp4",atlimit,BE4+PriceScale*익절틱수4,"매수4"); ExitLong("bl4",AtStop,BE4-PriceScale*손절틱수4,"매수4"); } if MaxEntries >= 5 then { ExitLong("bp5",atlimit,BE5+PriceScale*익절틱수5,"매수5"); ExitLong("bl5",AtStop,BE5-PriceScale*손절틱수5,"매수5"); } } 많은 도움에 먼저 감사드립니다 매수조건 만족시 매수진입후 추가진입을 2가지로 진입 후 진입별 청산을 만들어 보았습니다 수식작성이 맞은지 검토하여 주시면 고맙겠습니다 아울러 청산별 익절 및 손절을 수정하여 주시면 고맙겠습니다 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-03-20 10:19:33

안녕하세요 예스스탁입니다. 해당 내용에 대해서는 저희가 답변 드리기 어렵습니다. 해당 진입명들로 모두 작성해 드리기에는 검토하고 작성해 드리는데 시간이 많이 걸립니다. 청산함수의 4번째 매개변수가 진입명을 지정하는 부분입니다. 이전 답변받으신 수식의 구조등에 대해 충분히 숙지하셔서 사용자분이 직접 처리해 보셔야 합니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 남산 님이 쓴 글입니다. > 제목 : 문의 드립니다 > input : 시작시간(090000),종료시간(0); input : Period20(36),Period30(30),Period120(120),Period180(180),Period240(240),Period480(480), Period960(960),Period60(60),Period10(10),Period7(7),Period144(144),Period100(100); input : 익절틱수1(250),손절틱수1(100),익절틱수2(250),손절틱수2(200),익절틱수3(200),손절틱수3(200),익절틱수4(200),손절틱수4(200),익절틱수5(200),손절틱수5(200); var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0),mav480(0),mav960(0),mav60(0), mav10(0),mav7(0),mav144(0),mav100(0),Bxcond(false),Sxcond(false); var : Tcond(false); var : T(0); var : BE1(0),BE2(0),BE3(0),BE4(0),BE5(0); var : SE1(0),SE2(0),SE3(0),SE4(0),SE5(0); input : ntime1(6),P1(8),P2(16),P4(64),P5(128),P6(256); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : sum1(0),sum11(0),sum12(0),sum13(0),mav1(0),mav11(0),mav12(0),mav13(0); var : sum2(0),sum21(0),sum22(0),sum23(0),mav2(0),mav21(0),mav22(0),mav23(0); var : sum3(0),sum31(0),sum32(0),sum33(0),mav3(0),mav31(0),mav32(0),mav33(0); var : sum4(0),sum41(0),sum42(0),sum43(0),mav4(0),mav41(0),mav42(0),mav43(0); var : sum5(0),sum51(0),sum52(0),sum53(0),mav5(0),mav51(0),mav52(0),mav53(0); var : sum6(0),sum61(0),sum62(0),sum63(0),mav6(0),mav61(0),mav62(0),mav63(0); Array : C1[500](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime1; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 499 { C1[cnt] = C1[cnt-1][1]; } } C1[0] = C; if C1[P6+3] > 0 then { sum1 = 0; sum11 = 0; sum12 = 0; sum13 = 0; sum2 = 0; sum21 = 0; sum22 = 0; sum23 = 0; sum3 = 0; sum31 = 0; sum32 = 0; sum33 = 0; sum4 = 0; sum41 = 0; sum42 = 0; sum43 = 0; sum5 = 0; sum51 = 0; sum52 = 0; sum53 = 0; sum6 = 0; sum61 = 0; sum62 = 0; sum63 = 0; for cnt = 0 to P6-1 { if cnt < P1 then { sum1 = sum1+C1[cnt]; sum11 = sum11+C1[cnt+1]; sum12 = sum12+C1[cnt+2]; sum13 = sum13+C1[cnt+3]; } if cnt < P2 then { sum2 = sum2+C1[cnt]; sum21 = sum21+C1[cnt+1]; sum22 = sum22+C1[cnt+2]; sum23 = sum23+C1[cnt+3]; } if cnt < P3 then { sum3 = sum3+C1[cnt]; sum31 = sum31+C1[cnt+1]; sum32 = sum32+C1[cnt+2]; sum33 = sum33+C1[cnt+3]; } if cnt < P4 then { sum4 = sum4+C1[cnt]; sum41 = sum41+C1[cnt+1]; sum42 = sum42+C1[cnt+2]; sum43 = sum43+C1[cnt+3]; } if cnt < P5 then { sum5 = sum5+C1[cnt]; sum51 = sum51+C1[cnt+1]; sum52 = sum52+C1[cnt+2]; sum53 = sum53+C1[cnt+3]; } if cnt < P6 then { sum6 = sum6+C1[cnt]; sum61 = sum61+C1[cnt+1]; sum62 = sum62+C1[cnt+2]; sum63 = sum63+C1[cnt+3]; } } mav1 = sum1/P1; mav11 = sum11/P1; mav12 = sum12/P1; mav13 = sum13/P1; mav2 = sum2/P2; mav21 = sum21/P2; mav22 = sum22/P2; mav23 = sum23/P2; mav3 = sum3/P3; mav31 = sum31/P3; mav32 = sum32/P3; mav33 = sum33/P3; mav4 = sum4/P4; mav41 = sum41/P4; mav42 = sum42/P4; mav43 = sum43/P4; mav5 = sum5/P5; mav51 = sum51/P5; mav52 = sum52/P5; mav53 = sum53/P5; mav6 = sum6/P6; mav61 = sum61/P6; mav62 = sum62/P6; mav63 = sum63/P6; } } mav15 = ma(c, Period15); mav20 = ma(c, Period20); mav30 = ma(c, Period30); mav120 = ma(c, Period120); mav180 = ma(c, Period180); mav240 = ma(c, Period240); mav480 = ma(c, Period480); mav960 = ma(c, Period960); mav60 = ma(c, Period60); mav10 = ma(c, Period10); mav7 = ma(c, Period7); mav144 = ma(c, Period144); mav100 = ma(c, Period100); if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then { Tcond = True; BXcond = false; SXcond = false; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if TotalTrades > TotalTrades[1] then { BXcond = false; SXcond = false; if (IsExitName("bl",0) == true or IsExitName("bp",0) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then BXcond = true; if (IsExitName("sl",0) == true or IsExitName("sp",0) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then SXcond = true; } if Tcond == true then { if MarketPosition <= 0 and Bxcond == false and mav33 < mav32 and mav32 < mav31 and mav31 < mav3 Then { buy("매수1",OnClose,def,1); } if MarketPosition == 1 Then { if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수2",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수2-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수3",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수3-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수4",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수4-1",OnClose,def,1); } if mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and mav11 < mav1 and mav21 < mav2 and mav31 < mav3 and mav41 < mav4 and mav51 < mav5 Then { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and mav13 < mav12 and mav12 < mav11 and mav11 < mav1 and MaxEntries == 1 Then buy("매수5",OnClose,def,1); } Else { if mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and MaxEntries == 1 Then buy("매수5-1",OnClose,def,1); } } if MarketPosition == 1 Then { if (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then exitlong("수청산1",OnClose,def,"매수1"); if (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) or (mav33 > mav32 and mav32 > mav31 and mav31 > mav3) Then { exitlong("수청산2",OnClose,def,"매수2"); exitlong("수청산3",OnClose,def,"매수3"); exitlong("수청산4",OnClose,def,"매수4"); exitlong("수청산5",OnClose,def,"매수5"); } if (mav15[3] > mav15[2] and mav15[2] > mav15[1] and mav15[1] > mav15) or (mav13 > mav12 and mav12 > mav11 and mav11 > mav1) Then { exitlong("수청산2-1",OnClose,def,"매수2-1"); exitlong("수청산3-1",OnClose,def,"매수3-1"); exitlong("수청산4-1",OnClose,def,"매수4-1"); exitlong("수청산5-1",OnClose,def,"매수5-1"); } if CurrentContracts > CurrentContracts[1] and MaxEntries == 1 Then BE1 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 2 Then BE2 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then BE3 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 4 Then BE4 = LatestEntryPrice(0); if CurrentContracts > CurrentContracts[1] and MaxEntries == 5 Then BE5 = LatestEntryPrice(0); if MaxEntries >= 1 Then { ExitLong("bp1",atlimit,BE1+PriceScale*익절틱수1,"매수1"); ExitLong("bl1",AtStop,BE1-PriceScale*손절틱수1,"매수1"); } if MaxEntries >= 2 then { ExitLong("bp2",atlimit,BE2+PriceScale*익절틱수2,"매수2"); ExitLong("bl2",AtStop,BE2-PriceScale*손절틱수2,"매수2"); } if MaxEntries >= 3 then { ExitLong("bp3",atlimit,BE3+PriceScale*익절틱수3,"매수3"); ExitLong("bl3",AtStop,BE3-PriceScale*손절틱수3,"매수3"); } if MaxEntries >= 4 then { ExitLong("bp4",atlimit,BE4+PriceScale*익절틱수4,"매수4"); ExitLong("bl4",AtStop,BE4-PriceScale*손절틱수4,"매수4"); } if MaxEntries >= 5 then { ExitLong("bp5",atlimit,BE5+PriceScale*익절틱수5,"매수5"); ExitLong("bl5",AtStop,BE5-PriceScale*손절틱수5,"매수5"); } } 많은 도움에 먼저 감사드립니다 매수조건 만족시 매수진입후 추가진입을 2가지로 진입 후 진입별 청산을 만들어 보았습니다 수식작성이 맞은지 검토하여 주시면 고맙겠습니다 아울러 청산별 익절 및 손절을 수정하여 주시면 고맙겠습니다 감사합니다