커뮤니티

39628 추가 문의입니다.

프로필 이미지
미수예스
2014-12-25 20:55:15
177
글번호 81659
답변완료

첨부 이미지

안녕하십니까. 휴일 잘보냈셨는지요. 몇가지 수정사항 문의드립니다. 수식은 아래내용입니다. 연결선물 종목으로 해서,, 기간을 2014.10.1~12.24로 잡고 test해보면 첨부의 그림같이 나오는데요, input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*CurrentEntries)/100),X+X*CurrentEntries); if MarketPosition >= 0 Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*CurrentEntries)/100),X+X*CurrentEntries); SetStopProfittarget(MM,PercentStop); 1. a,b는 250+250*0.005=251.25에서 신호가 나와야 할것 같은데 둘다 다른값으로 나옵니다. 2. c,d,e,M은 청산후 첫진입이니까 (s신호)가 나와야 하는데 (ss)가 나왔고요 값도 250보다 높은데서 나와야 하는데 247에서 나옵니다. 3. f,p는 g처럼 244.5로 나와야 하고요. 247-247*0.005 = 244.5 4. h,i,j 와 k,L은 주가가 업다운하면서 같은 가격대에서 반복해서 진입이 되었습니다. 원하는 것은 한 가격대에서는 1번만 진입이 되었으면 합니다. 5. r,s도 진입수량이 같은것으로 보아서 같은 가격대에서 반복진입이 되었습니다. 그런데 가격이 약간 차이가 발생했습니다. 6. 만약 일괄청산하려면 SetStopProfittarget(MM,PercentStop); 를 ExitLong("Profit",atlimit,AvgEntryPrice*(1+MM/100)); 로 바꾸면 되는지요. 아마 제 설명이 명확하지 않았던것 같은데요, 요약하면 BuyPrice를 내려가면 동일 값으로 수량을 증가하며 매수,한자리에서는 한번만 SellPrice를 올라가면 동일 값으로 수량을 증가하며 매도,한자리에서는 한번만 입니다. 저번에 도와주셨던 주식수식에서는 비슷한 개념을 EntryPrice가 아니라 LatestEntryPrice(0)를 이용해서 아래와 같이 처리를 해서 의도대로 나온적이 있습니다. 혹시 참고가 되실런지요 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "UpB" Then{ UpVal = LatestEntryPrice(0); UPCnt = UPcnt+1; Mny2 = Mny2-투자금액*Mult; if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol2 = int(int((투자금액-투자금액*Mult)/C)/10)*10; } Else{ vol2 = int((투자금액-투자금액*Mult)/C); } } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "DnB" Then{ DnVal = LatestEntryPrice(0); DnCnt = Dncnt+1;//불필요 Mny3 = Mny3+투자금액*Mult;//증액 if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol3 = int(int((Mny3)/C)/10)*10; } Else{ vol3 = int((Mny3)/C); } } if UPcnt < 10 Then buy("UpB",AtStop,UpVal*(1+(Per)/100),Vol2); if Dncnt < 10 Then buy("DnB",atlimit,DnVal*(1-(Per)/100),Vol3); ExitLong("Profit",atlimit,AvgEntryPrice*(1+Profit/100)); } 감사합니다.
시스템
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2014-12-26 11:16:39

안녕하세요 예스스탁입니다. 1. atlimit은 매수주문에서 지정한 가격 이하의 시세가 발생하면 신호가 발생 매도주문에서 지정한 가격 이상의 시세가 발생하면 신호가 발생합니다. 2014/10/01 9시 10분봉의 시가가 256으로 255.25보다 높으므로 즉시 신호가 발생하는 것입니다. 첫진입신호가 지정한 가격에서 신호가 발생하게 첫진입에 제한 조건을 주었습니다. 2. 수식에서 최대한 동일가격대에 진입하는 것을 막았습니다. 시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우는 따로 제어가 되지 않습니다. 3. 수정된 수식입니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MaxEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*MaxEntries)/100),X+X*MaxEntries); if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MaxEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*MaxEntries)/100),X+X*MaxEntries); SetStopProfittarget(MM,PercentStop); 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : 39628 추가 문의입니다. > 안녕하십니까. 휴일 잘보냈셨는지요. 몇가지 수정사항 문의드립니다. 수식은 아래내용입니다. 연결선물 종목으로 해서,, 기간을 2014.10.1~12.24로 잡고 test해보면 첨부의 그림같이 나오는데요, input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*CurrentEntries)/100),X+X*CurrentEntries); if MarketPosition >= 0 Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*CurrentEntries)/100),X+X*CurrentEntries); SetStopProfittarget(MM,PercentStop); 1. a,b는 250+250*0.005=251.25에서 신호가 나와야 할것 같은데 둘다 다른값으로 나옵니다. 2. c,d,e,M은 청산후 첫진입이니까 (s신호)가 나와야 하는데 (ss)가 나왔고요 값도 250보다 높은데서 나와야 하는데 247에서 나옵니다. 3. f,p는 g처럼 244.5로 나와야 하고요. 247-247*0.005 = 244.5 4. h,i,j 와 k,L은 주가가 업다운하면서 같은 가격대에서 반복해서 진입이 되었습니다. 원하는 것은 한 가격대에서는 1번만 진입이 되었으면 합니다. 5. r,s도 진입수량이 같은것으로 보아서 같은 가격대에서 반복진입이 되었습니다. 그런데 가격이 약간 차이가 발생했습니다. 6. 만약 일괄청산하려면 SetStopProfittarget(MM,PercentStop); 를 ExitLong("Profit",atlimit,AvgEntryPrice*(1+MM/100)); 로 바꾸면 되는지요. 아마 제 설명이 명확하지 않았던것 같은데요, 요약하면 BuyPrice를 내려가면 동일 값으로 수량을 증가하며 매수,한자리에서는 한번만 SellPrice를 올라가면 동일 값으로 수량을 증가하며 매도,한자리에서는 한번만 입니다. 저번에 도와주셨던 주식수식에서는 비슷한 개념을 EntryPrice가 아니라 LatestEntryPrice(0)를 이용해서 아래와 같이 처리를 해서 의도대로 나온적이 있습니다. 혹시 참고가 되실런지요 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "UpB" Then{ UpVal = LatestEntryPrice(0); UPCnt = UPcnt+1; Mny2 = Mny2-투자금액*Mult; if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol2 = int(int((투자금액-투자금액*Mult)/C)/10)*10; } Else{ vol2 = int((투자금액-투자금액*Mult)/C); } } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "DnB" Then{ DnVal = LatestEntryPrice(0); DnCnt = Dncnt+1;//불필요 Mny3 = Mny3+투자금액*Mult;//증액 if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol3 = int(int((Mny3)/C)/10)*10; } Else{ vol3 = int((Mny3)/C); } } if UPcnt < 10 Then buy("UpB",AtStop,UpVal*(1+(Per)/100),Vol2); if Dncnt < 10 Then buy("DnB",atlimit,DnVal*(1-(Per)/100),Vol3); ExitLong("Profit",atlimit,AvgEntryPrice*(1+Profit/100)); } 감사합니다.
프로필 이미지

미수예스

2014-12-26 11:52:55

안녕하십니까. "시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우" 를 잘이해하지 못하였습니다. 연결선물지수 5분봉 20141001~20141224 적용한 결과에서 10/13 09:05 243.25 4계약 매수 10/13 09:05 243.25 6계약 매수-->같은 시간대에 두가지의 신호가 발생 10/13 09:10 243.25 6계약 매수-->시가아닌 다른 시간대에 동일가격 발생 12/05 09:25 255.05 8계약 매도 12/05 10:50 255.05 8계약 매도-->시가아닌 다른 시간대에 동일가격 중복발생 를 예로 들어서 설명부탁드립니다. 감사합니다 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 39628 추가 문의입니다. > 안녕하세요 예스스탁입니다. 1. atlimit은 매수주문에서 지정한 가격 이하의 시세가 발생하면 신호가 발생 매도주문에서 지정한 가격 이상의 시세가 발생하면 신호가 발생합니다. 2014/10/01 9시 10분봉의 시가가 256으로 255.25보다 높으므로 즉시 신호가 발생하는 것입니다. 첫진입신호가 지정한 가격에서 신호가 발생하게 첫진입에 제한 조건을 주었습니다. 2. 수식에서 최대한 동일가격대에 진입하는 것을 막았습니다. 시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우는 따로 제어가 되지 않습니다. 3. 수정된 수식입니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MaxEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*MaxEntries)/100),X+X*MaxEntries); if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MaxEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*MaxEntries)/100),X+X*MaxEntries); SetStopProfittarget(MM,PercentStop); 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : 39628 추가 문의입니다. > 안녕하십니까. 휴일 잘보냈셨는지요. 몇가지 수정사항 문의드립니다. 수식은 아래내용입니다. 연결선물 종목으로 해서,, 기간을 2014.10.1~12.24로 잡고 test해보면 첨부의 그림같이 나오는데요, input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*CurrentEntries)/100),X+X*CurrentEntries); if MarketPosition >= 0 Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*CurrentEntries)/100),X+X*CurrentEntries); SetStopProfittarget(MM,PercentStop); 1. a,b는 250+250*0.005=251.25에서 신호가 나와야 할것 같은데 둘다 다른값으로 나옵니다. 2. c,d,e,M은 청산후 첫진입이니까 (s신호)가 나와야 하는데 (ss)가 나왔고요 값도 250보다 높은데서 나와야 하는데 247에서 나옵니다. 3. f,p는 g처럼 244.5로 나와야 하고요. 247-247*0.005 = 244.5 4. h,i,j 와 k,L은 주가가 업다운하면서 같은 가격대에서 반복해서 진입이 되었습니다. 원하는 것은 한 가격대에서는 1번만 진입이 되었으면 합니다. 5. r,s도 진입수량이 같은것으로 보아서 같은 가격대에서 반복진입이 되었습니다. 그런데 가격이 약간 차이가 발생했습니다. 6. 만약 일괄청산하려면 SetStopProfittarget(MM,PercentStop); 를 ExitLong("Profit",atlimit,AvgEntryPrice*(1+MM/100)); 로 바꾸면 되는지요. 아마 제 설명이 명확하지 않았던것 같은데요, 요약하면 BuyPrice를 내려가면 동일 값으로 수량을 증가하며 매수,한자리에서는 한번만 SellPrice를 올라가면 동일 값으로 수량을 증가하며 매도,한자리에서는 한번만 입니다. 저번에 도와주셨던 주식수식에서는 비슷한 개념을 EntryPrice가 아니라 LatestEntryPrice(0)를 이용해서 아래와 같이 처리를 해서 의도대로 나온적이 있습니다. 혹시 참고가 되실런지요 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "UpB" Then{ UpVal = LatestEntryPrice(0); UPCnt = UPcnt+1; Mny2 = Mny2-투자금액*Mult; if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol2 = int(int((투자금액-투자금액*Mult)/C)/10)*10; } Else{ vol2 = int((투자금액-투자금액*Mult)/C); } } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "DnB" Then{ DnVal = LatestEntryPrice(0); DnCnt = Dncnt+1;//불필요 Mny3 = Mny3+투자금액*Mult;//증액 if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol3 = int(int((Mny3)/C)/10)*10; } Else{ vol3 = int((Mny3)/C); } } if UPcnt < 10 Then buy("UpB",AtStop,UpVal*(1+(Per)/100),Vol2); if Dncnt < 10 Then buy("DnB",atlimit,DnVal*(1-(Per)/100),Vol3); ExitLong("Profit",atlimit,AvgEntryPrice*(1+Profit/100)); } 감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2014-12-26 12:19:11

안녕하세요 예스스탁입니다. 1. 예를 들어 0.5%가 1.05포인트 인데 시가 갭이 발생해 3포인트 이상 갭이 발생하면 한번에 몇배수를 넘게 되는데 해당 부분을 감안해 식을 작성할수 없다는 의미입니다. 2. 식 잘못올려서 다시 올려드립니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then var1 = 0; if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then var1 = var1+1; if var1 < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*var1)/100),X+X*var1); } if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then var2 = 0; if MarketPosition == -1 and MaxEntries < 100 Then{ if CurrentContracts > CurrentContracts[1] Then var2 = var2+1; if var2 < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*var2)/100),X+X*var2); } SetStopProfittarget(MM,PercentStop); 3. 좀더 자세한 설명이 필요하시면 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : Re : Re : 39628 추가 문의입니다. > 안녕하십니까. "시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우" 를 잘이해하지 못하였습니다. 연결선물지수 5분봉 20141001~20141224 적용한 결과에서 10/13 09:05 243.25 4계약 매수 10/13 09:05 243.25 6계약 매수-->같은 시간대에 두가지의 신호가 발생 10/13 09:10 243.25 6계약 매수-->시가아닌 다른 시간대에 동일가격 발생 12/05 09:25 255.05 8계약 매도 12/05 10:50 255.05 8계약 매도-->시가아닌 다른 시간대에 동일가격 중복발생 를 예로 들어서 설명부탁드립니다. 감사합니다 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 39628 추가 문의입니다. > 안녕하세요 예스스탁입니다. 1. atlimit은 매수주문에서 지정한 가격 이하의 시세가 발생하면 신호가 발생 매도주문에서 지정한 가격 이상의 시세가 발생하면 신호가 발생합니다. 2014/10/01 9시 10분봉의 시가가 256으로 255.25보다 높으므로 즉시 신호가 발생하는 것입니다. 첫진입신호가 지정한 가격에서 신호가 발생하게 첫진입에 제한 조건을 주었습니다. 2. 수식에서 최대한 동일가격대에 진입하는 것을 막았습니다. 시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우는 따로 제어가 되지 않습니다. 3. 수정된 수식입니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MaxEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*MaxEntries)/100),X+X*MaxEntries); if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MaxEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*MaxEntries)/100),X+X*MaxEntries); SetStopProfittarget(MM,PercentStop); 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : 39628 추가 문의입니다. > 안녕하십니까. 휴일 잘보냈셨는지요. 몇가지 수정사항 문의드립니다. 수식은 아래내용입니다. 연결선물 종목으로 해서,, 기간을 2014.10.1~12.24로 잡고 test해보면 첨부의 그림같이 나오는데요, input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*CurrentEntries)/100),X+X*CurrentEntries); if MarketPosition >= 0 Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*CurrentEntries)/100),X+X*CurrentEntries); SetStopProfittarget(MM,PercentStop); 1. a,b는 250+250*0.005=251.25에서 신호가 나와야 할것 같은데 둘다 다른값으로 나옵니다. 2. c,d,e,M은 청산후 첫진입이니까 (s신호)가 나와야 하는데 (ss)가 나왔고요 값도 250보다 높은데서 나와야 하는데 247에서 나옵니다. 3. f,p는 g처럼 244.5로 나와야 하고요. 247-247*0.005 = 244.5 4. h,i,j 와 k,L은 주가가 업다운하면서 같은 가격대에서 반복해서 진입이 되었습니다. 원하는 것은 한 가격대에서는 1번만 진입이 되었으면 합니다. 5. r,s도 진입수량이 같은것으로 보아서 같은 가격대에서 반복진입이 되었습니다. 그런데 가격이 약간 차이가 발생했습니다. 6. 만약 일괄청산하려면 SetStopProfittarget(MM,PercentStop); 를 ExitLong("Profit",atlimit,AvgEntryPrice*(1+MM/100)); 로 바꾸면 되는지요. 아마 제 설명이 명확하지 않았던것 같은데요, 요약하면 BuyPrice를 내려가면 동일 값으로 수량을 증가하며 매수,한자리에서는 한번만 SellPrice를 올라가면 동일 값으로 수량을 증가하며 매도,한자리에서는 한번만 입니다. 저번에 도와주셨던 주식수식에서는 비슷한 개념을 EntryPrice가 아니라 LatestEntryPrice(0)를 이용해서 아래와 같이 처리를 해서 의도대로 나온적이 있습니다. 혹시 참고가 되실런지요 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "UpB" Then{ UpVal = LatestEntryPrice(0); UPCnt = UPcnt+1; Mny2 = Mny2-투자금액*Mult; if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol2 = int(int((투자금액-투자금액*Mult)/C)/10)*10; } Else{ vol2 = int((투자금액-투자금액*Mult)/C); } } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "DnB" Then{ DnVal = LatestEntryPrice(0); DnCnt = Dncnt+1;//불필요 Mny3 = Mny3+투자금액*Mult;//증액 if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol3 = int(int((Mny3)/C)/10)*10; } Else{ vol3 = int((Mny3)/C); } } if UPcnt < 10 Then buy("UpB",AtStop,UpVal*(1+(Per)/100),Vol2); if Dncnt < 10 Then buy("DnB",atlimit,DnVal*(1-(Per)/100),Vol3); ExitLong("Profit",atlimit,AvgEntryPrice*(1+Profit/100)); } 감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2014-12-26 13:39:49

안녕하세요 예스스탁입니다. 청산후 두번째 부터는 직전청산가격을 기준으로 진입하게 추가했습니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if totaltrades == 0 and MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if totaltrades >= 1 and MarketPosition == 0 and L > exitprice(1)*(1-N/100) Then buy("b.",AtLimit,exitprice(1)*(1-N/100),X); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then var1 = 0; if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then var1 = var1+1; if var1 < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*var1)/100),X+X*var1); } if totaltrades == 0 and MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if totaltrades >= 1 and MarketPosition == 0 and H < exitprice(1)*(1+N/100) Then Sell("s.",AtLimit,exitprice(1)*(1+N/100),X); if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then var2 = 0; if MarketPosition == -1 and MaxEntries < 100 Then{ if CurrentContracts > CurrentContracts[1] Then var2 = var2+1; if var2 < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*var2)/100),X+X*var2); } SetStopProfittarget(MM,PercentStop); 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : 39628 추가 문의입니다. > 안녕하세요 예스스탁입니다. 1. 예를 들어 0.5%가 1.05포인트 인데 시가 갭이 발생해 3포인트 이상 갭이 발생하면 한번에 몇배수를 넘게 되는데 해당 부분을 감안해 식을 작성할수 없다는 의미입니다. 2. 식 잘못올려서 다시 올려드립니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then var1 = 0; if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then var1 = var1+1; if var1 < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*var1)/100),X+X*var1); } if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then var2 = 0; if MarketPosition == -1 and MaxEntries < 100 Then{ if CurrentContracts > CurrentContracts[1] Then var2 = var2+1; if var2 < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*var2)/100),X+X*var2); } SetStopProfittarget(MM,PercentStop); 3. 좀더 자세한 설명이 필요하시면 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : Re : Re : 39628 추가 문의입니다. > 안녕하십니까. "시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우" 를 잘이해하지 못하였습니다. 연결선물지수 5분봉 20141001~20141224 적용한 결과에서 10/13 09:05 243.25 4계약 매수 10/13 09:05 243.25 6계약 매수-->같은 시간대에 두가지의 신호가 발생 10/13 09:10 243.25 6계약 매수-->시가아닌 다른 시간대에 동일가격 발생 12/05 09:25 255.05 8계약 매도 12/05 10:50 255.05 8계약 매도-->시가아닌 다른 시간대에 동일가격 중복발생 를 예로 들어서 설명부탁드립니다. 감사합니다 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 39628 추가 문의입니다. > 안녕하세요 예스스탁입니다. 1. atlimit은 매수주문에서 지정한 가격 이하의 시세가 발생하면 신호가 발생 매도주문에서 지정한 가격 이상의 시세가 발생하면 신호가 발생합니다. 2014/10/01 9시 10분봉의 시가가 256으로 255.25보다 높으므로 즉시 신호가 발생하는 것입니다. 첫진입신호가 지정한 가격에서 신호가 발생하게 첫진입에 제한 조건을 주었습니다. 2. 수식에서 최대한 동일가격대에 진입하는 것을 막았습니다. 시가 갭이 발생해서 한봉에서 여러가격대를 한번에 넘어가는 경우는 따로 제어가 되지 않습니다. 3. 수정된 수식입니다. input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 and L > BuyPrice*(1-N/100) Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and MaxEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*MaxEntries)/100),X+X*MaxEntries); if MarketPosition >= 0 and H < SellPrice*(1+N/100) Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == -1 and MaxEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*MaxEntries)/100),X+X*MaxEntries); SetStopProfittarget(MM,PercentStop); 즐거운 하루되세요 > 미수예스 님이 쓴 글입니다. > 제목 : 39628 추가 문의입니다. > 안녕하십니까. 휴일 잘보냈셨는지요. 몇가지 수정사항 문의드립니다. 수식은 아래내용입니다. 연결선물 종목으로 해서,, 기간을 2014.10.1~12.24로 잡고 test해보면 첨부의 그림같이 나오는데요, input : BuyPrice(247),SellPrice(250),N(0.5),x(2),MM(1); var : P2(0); if MarketPosition <= 0 Then buy("b",AtLimit,BuyPrice*(1-N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then buy("bb",atlimit,EntryPrice*(1-(N*CurrentEntries)/100),X+X*CurrentEntries); if MarketPosition >= 0 Then Sell("s",AtLimit,SellPrice*(1+N/100),X); if MarketPosition == 1 and CurrentEntries < 100 Then sell("ss",atlimit,EntryPrice*(1+(N*CurrentEntries)/100),X+X*CurrentEntries); SetStopProfittarget(MM,PercentStop); 1. a,b는 250+250*0.005=251.25에서 신호가 나와야 할것 같은데 둘다 다른값으로 나옵니다. 2. c,d,e,M은 청산후 첫진입이니까 (s신호)가 나와야 하는데 (ss)가 나왔고요 값도 250보다 높은데서 나와야 하는데 247에서 나옵니다. 3. f,p는 g처럼 244.5로 나와야 하고요. 247-247*0.005 = 244.5 4. h,i,j 와 k,L은 주가가 업다운하면서 같은 가격대에서 반복해서 진입이 되었습니다. 원하는 것은 한 가격대에서는 1번만 진입이 되었으면 합니다. 5. r,s도 진입수량이 같은것으로 보아서 같은 가격대에서 반복진입이 되었습니다. 그런데 가격이 약간 차이가 발생했습니다. 6. 만약 일괄청산하려면 SetStopProfittarget(MM,PercentStop); 를 ExitLong("Profit",atlimit,AvgEntryPrice*(1+MM/100)); 로 바꾸면 되는지요. 아마 제 설명이 명확하지 않았던것 같은데요, 요약하면 BuyPrice를 내려가면 동일 값으로 수량을 증가하며 매수,한자리에서는 한번만 SellPrice를 올라가면 동일 값으로 수량을 증가하며 매도,한자리에서는 한번만 입니다. 저번에 도와주셨던 주식수식에서는 비슷한 개념을 EntryPrice가 아니라 LatestEntryPrice(0)를 이용해서 아래와 같이 처리를 해서 의도대로 나온적이 있습니다. 혹시 참고가 되실런지요 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "UpB" Then{ UpVal = LatestEntryPrice(0); UPCnt = UPcnt+1; Mny2 = Mny2-투자금액*Mult; if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol2 = int(int((투자금액-투자금액*Mult)/C)/10)*10; } Else{ vol2 = int((투자금액-투자금액*Mult)/C); } } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "DnB" Then{ DnVal = LatestEntryPrice(0); DnCnt = Dncnt+1;//불필요 Mny3 = Mny3+투자금액*Mult;//증액 if CodeCategoryEx == 11 and BasePrice < 50000 Then{ vol3 = int(int((Mny3)/C)/10)*10; } Else{ vol3 = int((Mny3)/C); } } if UPcnt < 10 Then buy("UpB",AtStop,UpVal*(1+(Per)/100),Vol2); if Dncnt < 10 Then buy("DnB",atlimit,DnVal*(1-(Per)/100),Vol3); ExitLong("Profit",atlimit,AvgEntryPrice*(1+Profit/100)); } 감사합니다.