커뮤니티

시스템식 부탁드립니다.

프로필 이미지
양치기
2023-03-30 12:38:53
986
글번호 167730
답변완료
항상 도움 주셔서 감사합니다. 금일 답변해 주셨는데 추가 질문사항이 있어서 재질문 드립니다. var : 이평(0),간격(0),매수가격(0); 이평 = ma(C,20) ; 간격 = PriceScale*10; if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",atlimit,매수가격+간격*1,1) ; buy("b3.",atlimit,매수가격+간격*2,1) ; buy("b4.",atlimit,매수가격+간격*3,1) ; buy("b5.",atlimit,매수가격+간격*4,1) ; buy("b6.",atlimit,매수가격+간격*5,1) ; } if marketposition == 1 then { if lowest(L,BarsSinceEntry) > 매수가격+간격*1 Then buy("b2",atlimit,매수가격+간격*1,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*2 Then buy("b3",atlimit,매수가격+간격*2,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*3 Then buy("b4",atlimit,매수가격+간격*3,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*4 Then buy("b5",atlimit,매수가격+간격*4,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*5 Then buy("b6",atlimit,매수가격+간격*5,1) ; if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); } } Else SetStopProfittarget(0); 위와 같이 코딩해 주셨는데요. 질문사항 1 : 위의 시스템식을 적용해보면 b1. b2. b3. b4. b5. b6. 진입가격이 모두 동일합니다. 왜 그런건가요? 질문사항2 : if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",atlimit,매수가격+간격*1,1) ; buy("b3.",atlimit,매수가격+간격*2,1) ; buy("b4.",atlimit,매수가격+간격*3,1) ; buy("b5.",atlimit,매수가격+간격*4,1) ; buy("b6.",atlimit,매수가격+간격*5,1) ; } 위의 경우 처음 매수하면 marketposition == 0 이 아닌데 왜 b2. b3 b4. b5. b6. 모두 같은 가격으로 매수가 되는건가요? 질문사항 3. if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); } 위 코딩에서 3계약 이내는 개별청산을 하고 나머지 계약은 일괄 청산하려면 남아있는 계약의 평균 진입가격 대비 10틱 위에서 청산해야 하는거 아닌가요? 즉 ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); 아니라 ExitLong("bx",AtLimit,avgEntryPrice+PriceScale*10); 이게 맞는게 아닌가요? 질문사항 4. SetStopProfittarget(0); 위 함수를 2번 해제 하셨는데 위에서 조건문으로 해제 했는데 왜 마지막에 또 해제 하는건가요? 질문사항 5. 위에 코딩은 가격이 상승한 경우 즉 매수 불타기 코딩인거죠? 물타기 코딩을 하려면 아래와 같이 (-) 마이너스 하면 되는 건가요? buy("b2.",atlimit,매수가격-간격*1,1) ; 질문사항 6. 위 시스템식을 차트에 적용해보면 marketposition == 0 일때만 6계약 모두 매수가 되고 marketposition == 1 일때는 매수가 하나도 안됩니다. 왜 그런거죠? 가격이 하락해서 물타기 하는 경우 marketposition == 0 일때는 1계약만 들어가고 나머지 계약은 marketposition == 1 일때만 들어가야 하는거 아닌가요? 죄송하지만 코딩의 내용이 이해가 안됩니다. 설명좀 부탁드립니다. 그리고 마지막으로 수고스럽겠지만 첫 진입이후 가격이 상승하면 10틱 단위로 매수 불타기 하고 첫 진입이후 가격이 하락하면 10틱 단위로 매수 물타기 하고 그리고 총 계약이 3틱 이내에는 10틱 수익이 발생하면 개별 청산하고 총 계약이 3틱 이상일 경우에는 총 진입계약의 평균가격보다 10틱 이상 수익 발생시 모두 일괄청산하는 시스템식 부탁드립니다. 마지막으로 포지션 진입은 marketposition == 0 일 경우에만 매수, 매도 하고 싶습니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-03-30 14:11:57

안녕하세요 예스스탁입니다. 1 불타기/물타기 다시 올려드립니다. 식이 혼재되서 있었습니다. 1-1 물타기 var : 이평(0),간격(0),매수가격(0); 이평 = ma(C,20) ; 간격 = PriceScale*10; if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",atlimit,매수가격-간격*1,1) ; buy("b3.",atlimit,매수가격-간격*2,1) ; buy("b4.",atlimit,매수가격-간격*3,1) ; buy("b5.",atlimit,매수가격-간격*4,1) ; buy("b6.",atlimit,매수가격-간격*5,1) ; } if marketposition == 1 then { if lowest(L,BarsSinceEntry) > 매수가격-간격*1 Then buy("b2",atlimit,매수가격-간격*1,1) ; if lowest(L,BarsSinceEntry) > 매수가격-간격*2 Then buy("b3",atlimit,매수가격-간격*2,1) ; if lowest(L,BarsSinceEntry) > 매수가격-간격*3 Then buy("b4",atlimit,매수가격-간격*3,1) ; if lowest(L,BarsSinceEntry) > 매수가격-간격*4 Then buy("b5",atlimit,매수가격-간격*4,1) ; if lowest(L,BarsSinceEntry) > 매수가격-간격*5 Then buy("b6",atlimit,매수가격-간격*5,1) ; if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,AvgEntryPrice+PriceScale*10); } } Else SetStopProfittarget(0); 1-2 불타기 var : 이평(0),간격(0),매수가격(0); 이평 = ma(C,20) ; 간격 = PriceScale*10; if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",AtStop,매수가격+간격*1,1) ; buy("b3.",AtStop,매수가격+간격*2,1) ; buy("b4.",AtStop,매수가격+간격*3,1) ; buy("b5.",AtStop,매수가격+간격*4,1) ; buy("b6.",AtStop,매수가격+간격*5,1) ; } if marketposition == 1 then { if Highest(H,BarsSinceEntry) < 매수가격+간격*1 Then buy("b2",AtStop,매수가격+간격*1,1) ; if Highest(H,BarsSinceEntry) < 매수가격+간격*2 Then buy("b3",AtStop,매수가격+간격*2,1) ; if Highest(H,BarsSinceEntry) < 매수가격+간격*3 Then buy("b4",AtStop,매수가격+간격*3,1) ; if Highest(H,BarsSinceEntry) < 매수가격+간격*4 Then buy("b5",AtStop,매수가격+간격*4,1) ; if Highest(H,BarsSinceEntry) < 매수가격+간격*5 Then buy("b6",AtStop,매수가격+간격*5,1) ; if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,AvgEntryPrice+PriceScale*10); } } Else SetStopProfittarget(0); 3 평단가로 변경해 드립니다. 4 강제청산은 한번셋팅이 되면 계속 유지가 됩니다. 조건에 따라 셋팅 및 해제가 반복되어야 하므로 2번진입후 포지션이 종료되면 해제되게 추가한 내용입니다. 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 시스템식 부탁드립니다. > 항상 도움 주셔서 감사합니다. 금일 답변해 주셨는데 추가 질문사항이 있어서 재질문 드립니다. var : 이평(0),간격(0),매수가격(0); 이평 = ma(C,20) ; 간격 = PriceScale*10; if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",atlimit,매수가격+간격*1,1) ; buy("b3.",atlimit,매수가격+간격*2,1) ; buy("b4.",atlimit,매수가격+간격*3,1) ; buy("b5.",atlimit,매수가격+간격*4,1) ; buy("b6.",atlimit,매수가격+간격*5,1) ; } if marketposition == 1 then { if lowest(L,BarsSinceEntry) > 매수가격+간격*1 Then buy("b2",atlimit,매수가격+간격*1,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*2 Then buy("b3",atlimit,매수가격+간격*2,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*3 Then buy("b4",atlimit,매수가격+간격*3,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*4 Then buy("b5",atlimit,매수가격+간격*4,1) ; if lowest(L,BarsSinceEntry) > 매수가격+간격*5 Then buy("b6",atlimit,매수가격+간격*5,1) ; if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); } } Else SetStopProfittarget(0); 위와 같이 코딩해 주셨는데요. 질문사항 1 : 위의 시스템식을 적용해보면 b1. b2. b3. b4. b5. b6. 진입가격이 모두 동일합니다. 왜 그런건가요? 질문사항2 : if marketposition == 0 and C > 이평 then { buy("b1",OnClose,Def,1) ; 매수가격 = C; buy("b2.",atlimit,매수가격+간격*1,1) ; buy("b3.",atlimit,매수가격+간격*2,1) ; buy("b4.",atlimit,매수가격+간격*3,1) ; buy("b5.",atlimit,매수가격+간격*4,1) ; buy("b6.",atlimit,매수가격+간격*5,1) ; } 위의 경우 처음 매수하면 marketposition == 0 이 아닌데 왜 b2. b3 b4. b5. b6. 모두 같은 가격으로 매수가 되는건가요? 질문사항 3. if CurrentContracts < 3 Then SetStopProfittarget(PriceScale*10,PointStop); Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); } 위 코딩에서 3계약 이내는 개별청산을 하고 나머지 계약은 일괄 청산하려면 남아있는 계약의 평균 진입가격 대비 10틱 위에서 청산해야 하는거 아닌가요? 즉 ExitLong("bx",AtLimit,EntryPrice+PriceScale*10); 아니라 ExitLong("bx",AtLimit,avgEntryPrice+PriceScale*10); 이게 맞는게 아닌가요? 질문사항 4. SetStopProfittarget(0); 위 함수를 2번 해제 하셨는데 위에서 조건문으로 해제 했는데 왜 마지막에 또 해제 하는건가요? 질문사항 5. 위에 코딩은 가격이 상승한 경우 즉 매수 불타기 코딩인거죠? 물타기 코딩을 하려면 아래와 같이 (-) 마이너스 하면 되는 건가요? buy("b2.",atlimit,매수가격-간격*1,1) ; 질문사항 6. 위 시스템식을 차트에 적용해보면 marketposition == 0 일때만 6계약 모두 매수가 되고 marketposition == 1 일때는 매수가 하나도 안됩니다. 왜 그런거죠? 가격이 하락해서 물타기 하는 경우 marketposition == 0 일때는 1계약만 들어가고 나머지 계약은 marketposition == 1 일때만 들어가야 하는거 아닌가요? 죄송하지만 코딩의 내용이 이해가 안됩니다. 설명좀 부탁드립니다. 그리고 마지막으로 수고스럽겠지만 첫 진입이후 가격이 상승하면 10틱 단위로 매수 불타기 하고 첫 진입이후 가격이 하락하면 10틱 단위로 매수 물타기 하고 그리고 총 계약이 3틱 이내에는 10틱 수익이 발생하면 개별 청산하고 총 계약이 3틱 이상일 경우에는 총 진입계약의 평균가격보다 10틱 이상 수익 발생시 모두 일괄청산하는 시스템식 부탁드립니다. 마지막으로 포지션 진입은 marketposition == 0 일 경우에만 매수, 매도 하고 싶습니다. 감사합니다.