커뮤니티

검토부탁드립니다.

프로필 이미지
음양조파
2023-02-12 22:01:27
792
글번호 166214
답변완료
안녕하세요? 부탁드려서 아래와 같은 식을 받았는데, 매도 하나만 이루어지고 안 되는데 수정도 못해보겠네요. 검토좀 부탁드리고요, 이참에 첫번째 20이평선 하회할 때 sp에서 첫진입을 시작하는 것으로 바꿔주시면 감사하겠습니다. #1)10.20,60 이평선이 정배열로 봉이 진행 중 #2) 20이평선이 60이평선 위에 있는 동안 최초로 봉의 저점이 20이평선을 하회했을때 그 봉에서의 20이평선 가격을 sp라 하고 #3) 그 뒤 60이평선이 상향 진행되어 sp 가격까지 도달된 이후 #4) 두번째로 봉의 저점이 20이평선을 하회하게 되면 그 선에서 매도 1계약하고 그 때의 20이평선 가격을 sp2라 하고 #5) 그 후 만일 봉의 저점이 60이평선을 하회하지 못한 채 봉의 저점이 20이평선 위로 올라가 최소한 10봉을 진행하게 되고 다시 60 이평선이 또 상향하여 sp2가격에 이르면 매도 1계약 #6)...그 식으로 누적시켜 가다가 상황이 반전되어 그 다음엔 반대로 역배열이 되면 독같은 방식으로 일단 최초의 역sp에서 매도진입분 전량청산하고 매수 1계약, 그 다음 sp2에서 또 매수 1계약...하는 식 input : P1(10),P2(20),P3(60); var : mav1(0),mav2(0),mav3(0); var : S(0),SP(0),SellAdd(False); var : B(0),LP(0),BuyAdd(False); mav1 = ma(C,P1); mav2 = ma(C,P2); mav3 = ma(C,P3); Condition1 = mav1 > mav2 and mav2 > mav3; Condition2 = mav1 < mav2 and mav2 < mav3; if Condition1 == true Then { if Condition1[1] == False Then S = 0; if CrossUp(mav2,mav3) then { S = 1; } Else if CrossDown(mav2,mav3) then { S = -1; } Else { if S >= 1 Then { if S == 1 Then { if CrossDown(L,mav2) Then { sp = mav2; S = 2; } } Else if S == 2 Then { if mav3 >= sp Then { S = 3; } } Else if S == 3 Then { if MarketPosition >= 0 and CrossDown(L,mav2) Then { Sell("s1",OnClose,Def,1); sp = mav2; } } } } } Else S = 0; if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] Then { SellAdd = true; var1 = Index; } if L < mav3 Then SellAdd = False; if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then { Sell("s",OnClose,Def,1); sp = mav2; } } if Condition2 == true Then { if Condition2[1] == False Then B = 0; if CrossUp(mav2,mav3) then { B = 1; } Else if CrossDown(mav2,mav3) then { B = -1; } Else { if B <= -1 Then { if B == -1 Then { if Crossup(H,mav2) Then { LP = mav2; B = -2; } } Else if B == -2 Then { if mav3 <= LP Then { B = -3; } } Else if B == -3 Then { if MarketPosition <= 0 and CrossUp(H,mav2) Then { Buy("b",OnClose,Def,1); LP = mav2; } } } } } Else B = 0; if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { BuyAdd = true; var2 = Index; } if H > mav3 Then BuyAdd = False; if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then { Buy("bb",OnClose,Def,1); LP = mav2; } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-02-13 18:17:26

안녕하세요 예스스탁입니다. 1 해당식 차트에 적용해 보았지만 첨부된 그림과 같이 매수와 매도신호가 발생하고 있습니다. 또한 주기에 따라 추가진입도 발생하고 있습니다. 2 첫번째 20이평 크로스에서 진입하게 수정해 드립니다. input : P1(10),P2(20),P3(60); var : mav1(0),mav2(0),mav3(0); var : S(0),SP(0),SellAdd(False); var : B(0),LP(0),BuyAdd(False); mav1 = ma(C,P1); mav2 = ma(C,P2); mav3 = ma(C,P3); Condition1 = mav1 > mav2 and mav2 > mav3; Condition2 = mav1 < mav2 and mav2 < mav3; if Condition1 == true Then { if Condition1[1] == False Then S = 0; if CrossUp(mav2,mav3) then { S = 1; } Else if CrossDown(mav2,mav3) then { S = -1; } Else { if S == 1 Then { if MarketPosition >= 0 and CrossDown(L,mav2) Then { Sell("s1",OnClose,Def,1); sp = mav2; } } } } Else S = 0; if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] Then { SellAdd = true; var1 = Index; } if L < mav3 Then SellAdd = False; if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then { Sell("s",OnClose,Def,1); sp = mav2; } } if Condition2 == true Then { if Condition2[1] == False Then B = 0; if CrossUp(mav2,mav3) then { B = 1; } Else if CrossDown(mav2,mav3) then { B = -1; } Else { if B == -1 Then { if MarketPosition <= 0 and Crossup(H,mav2) Then { Buy("b",OnClose,Def,1); LP = mav2; B = -2; } } } } Else B = 0; if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { BuyAdd = true; var2 = Index; } if H > mav3 Then BuyAdd = False; if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then { Buy("bb",OnClose,Def,1); LP = mav2; } } 즐거운 하루되세요 > 음양조파 님이 쓴 글입니다. > 제목 : 검토부탁드립니다. > 안녕하세요? 부탁드려서 아래와 같은 식을 받았는데, 매도 하나만 이루어지고 안 되는데 수정도 못해보겠네요. 검토좀 부탁드리고요, 이참에 첫번째 20이평선 하회할 때 sp에서 첫진입을 시작하는 것으로 바꿔주시면 감사하겠습니다. #1)10.20,60 이평선이 정배열로 봉이 진행 중 #2) 20이평선이 60이평선 위에 있는 동안 최초로 봉의 저점이 20이평선을 하회했을때 그 봉에서의 20이평선 가격을 sp라 하고 #3) 그 뒤 60이평선이 상향 진행되어 sp 가격까지 도달된 이후 #4) 두번째로 봉의 저점이 20이평선을 하회하게 되면 그 선에서 매도 1계약하고 그 때의 20이평선 가격을 sp2라 하고 #5) 그 후 만일 봉의 저점이 60이평선을 하회하지 못한 채 봉의 저점이 20이평선 위로 올라가 최소한 10봉을 진행하게 되고 다시 60 이평선이 또 상향하여 sp2가격에 이르면 매도 1계약 #6)...그 식으로 누적시켜 가다가 상황이 반전되어 그 다음엔 반대로 역배열이 되면 독같은 방식으로 일단 최초의 역sp에서 매도진입분 전량청산하고 매수 1계약, 그 다음 sp2에서 또 매수 1계약...하는 식 input : P1(10),P2(20),P3(60); var : mav1(0),mav2(0),mav3(0); var : S(0),SP(0),SellAdd(False); var : B(0),LP(0),BuyAdd(False); mav1 = ma(C,P1); mav2 = ma(C,P2); mav3 = ma(C,P3); Condition1 = mav1 > mav2 and mav2 > mav3; Condition2 = mav1 < mav2 and mav2 < mav3; if Condition1 == true Then { if Condition1[1] == False Then S = 0; if CrossUp(mav2,mav3) then { S = 1; } Else if CrossDown(mav2,mav3) then { S = -1; } Else { if S >= 1 Then { if S == 1 Then { if CrossDown(L,mav2) Then { sp = mav2; S = 2; } } Else if S == 2 Then { if mav3 >= sp Then { S = 3; } } Else if S == 3 Then { if MarketPosition >= 0 and CrossDown(L,mav2) Then { Sell("s1",OnClose,Def,1); sp = mav2; } } } } } Else S = 0; if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] Then { SellAdd = true; var1 = Index; } if L < mav3 Then SellAdd = False; if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then { Sell("s",OnClose,Def,1); sp = mav2; } } if Condition2 == true Then { if Condition2[1] == False Then B = 0; if CrossUp(mav2,mav3) then { B = 1; } Else if CrossDown(mav2,mav3) then { B = -1; } Else { if B <= -1 Then { if B == -1 Then { if Crossup(H,mav2) Then { LP = mav2; B = -2; } } Else if B == -2 Then { if mav3 <= LP Then { B = -3; } } Else if B == -3 Then { if MarketPosition <= 0 and CrossUp(H,mav2) Then { Buy("b",OnClose,Def,1); LP = mav2; } } } } } Else B = 0; if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { BuyAdd = true; var2 = Index; } if H > mav3 Then BuyAdd = False; if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then { Buy("bb",OnClose,Def,1); LP = mav2; } }