커뮤니티

문의

프로필 이미지
데몬
2013-05-22 02:43:31
423
글번호 63342
답변완료

첨부 이미지

잘 안되네요..^^; 1) 여전히 exitShort 에서 오류가 납니다. '12년 5월 28일 오전 7시에 모든 계약을 청산했는데(그림에도 신호가 나타납니다) 로그를 찍어보면 여전히 8시에 계약을 1개 가지고 있습니다. 2) 그림에서 보면 eS9 / eS11 등이 두번씩 발생합니다. 3) 진입과 청산이 무수히 발생함에도 불구하고, 수익차트에는 반영이 안됩니다.. 번거롭게 죄송합니다 ^^ 부탁드릴께요. input: period(90); var: ii(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); MessageLog("Cntrct %.f", CurrentContracts*MarketPosition); MessageLog("profit %.3f", NetProfit); MessageLog("sell %.f // buy %.f", sell_cnt, buy_cnt); sum = 0; for ii = 0 to period-1 { sum = sum + (C[ii]-C[ii+1])/(C[ii]); } avr = sum/period; sum = 0; for ii=0 to period-1 { sum = sum + ((C[ii]-C[ii+1])/(C[ii])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/20 >= 1 then { bet = int((50+netProfit)/(C/20)); } else bet = int(((50+netProfit)/(C/20))*(abs(k)/20)); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then buy_cnt = 0; if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then sell_cnt = 0; if bet*p == CurrentContracts*MarketPosition then { // MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { buy("L", AtMarket, DEF, bet); } else if p <= 0 then { Sell("S", AtMarket, DEF, bet); } } else if MarketPosition > 0 Then { if CurrentContracts < CurrentContracts[1] Then buy_cnt = buy_cnt + 1; if p > 0 then { if bet > CurrentContracts then { buy("Ladd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && buy_cnt == 0 then { ExitLong("eL1", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 1 then { exitlong("eL2", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 2 then { exitlong("eL3", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 3 then { exitlong("eL4", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 4 then { exitlong("eL5", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 5 then { exitlong("eL6", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 6 then { exitlong("eL7", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 7 then { exitlong("eL8", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 8 then { exitlong("eL9", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 9 then { exitlong("eL10", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 10 then { exitlong("eL11", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 11 then { exitlong("eL12", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 12 then { exitlong("eL13", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 13 then { exitlong("eL14", AtMarket, DEF,"",CurrentContracts-bet,1); } } else if p <= 0 then { sell("change_S", AtMarket, DEF, bet); } } else if MarketPosition < 0 Then { if CurrentContracts < CurrentContracts[1] Then Sell_cnt = Sell_cnt + 1; if p < 0 then { if bet > CurrentContracts then { Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && sell_cnt == 0 then { exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 1 then { exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 2 then { exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 3 then { exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 4 then { exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 5 then { exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 6 then { exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 7 then { exitShort("eS8", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 8 then { exitShort("eS9", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 9 then { exitShort("eS10", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 10 then { exitShort("eS11", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 11 then { exitShort("eS12", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 12 then { exitShort("eS13", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 13 then { exitShort("eS14", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 14 then { exitShort("eS15", AtMarket, DEF,"", CurrentContracts-bet,1); MessageLog("차이 %.f", CurrentContracts-bet); } else if bet < CurrentContracts && sell_cnt == 15 then { exitShort("eS16", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 16 then { exitShort("eS17", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 17 then { exitShort("eS18", AtMarket, DEF,"", CurrentContracts-bet,1); } } else if p >= 0 then { Buy("change_B", AtMarket, DEF, bet); } } MessageLog("BET %.f", bet);
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2013-05-20 16:29:12

안녕하세요 예스스탁입니다. 추가진입을 하기 위해서는 시스템 트레이딩 설정창에서 피라미딩을 설정하셔야 합니다. 올리신 경우에는 피라미딩을 다른진입신호허용으로 설정하셔야 추가진입을 하게 됩니다. 적용이 잘 안되시면 내일 편하신 시간에 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 데몬 님이 쓴 글입니다. > 제목 : 청산문의 > 안녕하세요 ^^; 수고 많으십니다. 아래 내용으로 시스템을 돌려보면 계약진행이 (-3 / -2 / -3 / -1) 으로 진행될거라 예상되었으나 실제로는 (-3 / -2 / -2 / 0) 으로 진행됩니다. 정상적인 매매가 진행되려면 어떻게 수정해야 하는지요..? var: cnt(0); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); if cnt == 0 then { Sell("S", AtMarket, DEF, 3); cnt = cnt + 1; } else if cnt == 1 then { exitShort("eS1", AtMarket, DEF,"", 1,1); cnt = cnt + 1; } else if cnt == 2 then { Sell("Sadd", AtMarket, DEF, 1); cnt = cnt + 1; } else if cnt == 3 then { exitShort("eS2", AtMarket, DEF,"", 2,1); cnt = cnt + 1; } ============================================== 원래 로직은 아래와 같습니다. "일부 삽니다" 및 "일부 팝니다" 주문이 정상적으로 작동하지 않습니다. 예를들어 일부삽니다 3계약이 주문되어도 1계약만 청산되는 등의 문제가 있습니다 ^^ 번거로우시겠지만 검토부탁드립니다- 감사합니다 ^^ var: i(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); input: period(90); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); sum = 0; for i=0 to period-1 { sum = sum + (C[i]-C[i+1])/(C[i]); } avr = sum/period; sum = 0; for i=0 to period-1 { sum = sum + ((C[i]-C[i+1])/(C[i])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/15 >= 1 then { bet = int((20+netProfit)/(C/15)); } else bet = int(((20+netProfit)/(C/15))*(abs(k)/15)); MessageLog("BET%.2f",bet); MessageLog("차이%.2f",bet - CurrentContracts); if bet*p == CurrentContracts*MarketPosition then { MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { MessageLog("삽니다%.f",bet ); buy("L", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } else if p <= 0 then { MessageLog("팝니다%.f", bet); Sell("S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition > 0 Then { if p > 0 then { if bet > CurrentContracts then { MessageLog("추가로삽니다%.f",bet - CurrentContracts); buy("Ladd", AtMarket, DEF, bet-CurrentContracts); buy_cnt = buy_cnt + 1; } else if bet < CurrentContracts && buy_cnt > 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL1", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL2", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -1 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL3", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -2 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL4", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -3then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL5", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -4 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL6", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -5 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL7", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -6 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL8", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } } else if p <= 0 then { MessageLog("포지션을 바꿔 팝니다%.f",bet); sell("change_S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition < 0 Then { if p < 0 then { if bet > CurrentContracts then { MessageLog("추가로팝니다%.f",bet - CurrentContracts); Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); sell_cnt = sell_cnt + 1; } else if bet < CurrentContracts && sell_cnt > 0 then { MessageLog("일부삽니다1%.f",bet - CurrentContracts); exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == 0 then { MessageLog("일부삽니다2%.f",bet - CurrentContracts); exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -1 then { MessageLog("일부삽니다3%.f",bet - CurrentContracts); exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -2 then { MessageLog("일부삽니다4%.f",bet - CurrentContracts); exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -3 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -4 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -5 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } } else if p >= 0 then { MessageLog("포지션을 바꿔 삽니다%.f",bet); Buy("change_B", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } } MessageLog("셀카운트%.f",sell_cnt); MessageLog("바이카운트%.f",buy_cnt);
프로필 이미지

예스스탁 예스스탁 답변

2013-05-21 15:34:00

안녕하세요 input: period(90); var: ii(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); sum = 0; for ii = 0 to period-1 { sum = sum + (C[ii]-C[ii+1])/(C[ii]); } avr = sum/period; sum = 0; for ii=0 to period-1 { sum = sum + ((C[ii]-C[ii+1])/(C[ii])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/15 >= 1 then { bet = int((20+netProfit)/(C/15)); } else bet = int(((20+netProfit)/(C/15))*(abs(k)/15)); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then buy_cnt = 0; if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then sell_cnt = 0; if bet*p == CurrentContracts*MarketPosition then { // MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { buy("L", AtMarket, DEF, bet); } else if p <= 0 then { Sell("S", AtMarket, DEF, bet); } } else if MarketPosition > 0 Then { if CurrentContracts < CurrentContracts[1] Then buy_cnt = buy_cnt + 1; if p > 0 then { if bet > CurrentContracts then { buy("Ladd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && buy_cnt == 0 then { ExitLong("eL1", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 1 then { exitlong("eL2", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 2 then { exitlong("eL3", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 3 then { exitlong("eL4", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 4 then { exitlong("eL5", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 5 then { exitlong("eL6", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 6 then { exitlong("eL7", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 7 then { exitlong("eL8", AtMarket, DEF,"",bet-CurrentContracts,1); } } else if p <= 0 then { sell("change_S", AtMarket, DEF, bet); } } else if MarketPosition < 0 Then { if CurrentContracts < CurrentContracts[1] Then Sell_cnt = Sell_cnt + 1; if p < 0 then { if bet > CurrentContracts then { Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && sell_cnt == 0 then { exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 1 then { exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 2 then { exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 3 then { exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 4 then { exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 5 then { exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 6 then { exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); } } else if p >= 0 then { Buy("change_B", AtMarket, DEF, bet); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 청산문의 > 안녕하세요 예스스탁입니다. 추가진입을 하기 위해서는 시스템 트레이딩 설정창에서 피라미딩을 설정하셔야 합니다. 올리신 경우에는 피라미딩을 다른진입신호허용으로 설정하셔야 추가진입을 하게 됩니다. 적용이 잘 안되시면 내일 편하신 시간에 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 데몬 님이 쓴 글입니다. > 제목 : 청산문의 > 안녕하세요 ^^; 수고 많으십니다. 아래 내용으로 시스템을 돌려보면 계약진행이 (-3 / -2 / -3 / -1) 으로 진행될거라 예상되었으나 실제로는 (-3 / -2 / -2 / 0) 으로 진행됩니다. 정상적인 매매가 진행되려면 어떻게 수정해야 하는지요..? var: cnt(0); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); if cnt == 0 then { Sell("S", AtMarket, DEF, 3); cnt = cnt + 1; } else if cnt == 1 then { exitShort("eS1", AtMarket, DEF,"", 1,1); cnt = cnt + 1; } else if cnt == 2 then { Sell("Sadd", AtMarket, DEF, 1); cnt = cnt + 1; } else if cnt == 3 then { exitShort("eS2", AtMarket, DEF,"", 2,1); cnt = cnt + 1; } ============================================== 원래 로직은 아래와 같습니다. "일부 삽니다" 및 "일부 팝니다" 주문이 정상적으로 작동하지 않습니다. 예를들어 일부삽니다 3계약이 주문되어도 1계약만 청산되는 등의 문제가 있습니다 ^^ 번거로우시겠지만 검토부탁드립니다- 감사합니다 ^^ var: i(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); input: period(90); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); sum = 0; for i=0 to period-1 { sum = sum + (C[i]-C[i+1])/(C[i]); } avr = sum/period; sum = 0; for i=0 to period-1 { sum = sum + ((C[i]-C[i+1])/(C[i])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/15 >= 1 then { bet = int((20+netProfit)/(C/15)); } else bet = int(((20+netProfit)/(C/15))*(abs(k)/15)); MessageLog("BET%.2f",bet); MessageLog("차이%.2f",bet - CurrentContracts); if bet*p == CurrentContracts*MarketPosition then { MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { MessageLog("삽니다%.f",bet ); buy("L", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } else if p <= 0 then { MessageLog("팝니다%.f", bet); Sell("S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition > 0 Then { if p > 0 then { if bet > CurrentContracts then { MessageLog("추가로삽니다%.f",bet - CurrentContracts); buy("Ladd", AtMarket, DEF, bet-CurrentContracts); buy_cnt = buy_cnt + 1; } else if bet < CurrentContracts && buy_cnt > 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL1", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL2", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -1 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL3", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -2 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL4", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -3then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL5", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -4 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL6", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -5 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL7", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -6 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL8", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } } else if p <= 0 then { MessageLog("포지션을 바꿔 팝니다%.f",bet); sell("change_S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition < 0 Then { if p < 0 then { if bet > CurrentContracts then { MessageLog("추가로팝니다%.f",bet - CurrentContracts); Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); sell_cnt = sell_cnt + 1; } else if bet < CurrentContracts && sell_cnt > 0 then { MessageLog("일부삽니다1%.f",bet - CurrentContracts); exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == 0 then { MessageLog("일부삽니다2%.f",bet - CurrentContracts); exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -1 then { MessageLog("일부삽니다3%.f",bet - CurrentContracts); exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -2 then { MessageLog("일부삽니다4%.f",bet - CurrentContracts); exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -3 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -4 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -5 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } } else if p >= 0 then { MessageLog("포지션을 바꿔 삽니다%.f",bet); Buy("change_B", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } } MessageLog("셀카운트%.f",sell_cnt); MessageLog("바이카운트%.f",buy_cnt);
프로필 이미지

예스스탁 예스스탁 답변

2013-05-22 14:01:52

안녕하세요 예스스탁입니다. input: period(90); var: ii(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); MessageLog("BET %.f CurrentContracts %.2f", bet, CurrentContracts); sum = 0; for ii = 0 to period-1 { sum = sum + (C[ii]-C[ii+1])/(C[ii]); } avr = sum/period; sum = 0; for ii=0 to period-1 { sum = sum + ((C[ii]-C[ii+1])/(C[ii])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/20 >= 1 then { bet = int((50+netProfit)/(C/20)); } else bet = int(((50+netProfit)/(C/20))*(abs(k)/20)); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then buy_cnt = 0; if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then sell_cnt = 0; if bet*p == CurrentContracts*MarketPosition then { // MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { buy("L", AtMarket, DEF, bet); } else if p <= 0 then { Sell("S", AtMarket, DEF, bet); } } else if MarketPosition > 0 Then { if CurrentContracts < CurrentContracts[1] Then buy_cnt = buy_cnt + 1; if bet == 0 Then exitlong("매수마감청산"); if p > 0 then { if bet > CurrentContracts then { buy("Ladd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && buy_cnt == 0 then { ExitLong("eL1", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 1 then { exitlong("eL2", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 2 then { exitlong("eL3", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 3 then { exitlong("eL4", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 4 then { exitlong("eL5", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 5 then { exitlong("eL6", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 6 then { exitlong("eL7", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 7 then { exitlong("eL8", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 8 then { exitlong("eL9", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 9 then { exitlong("eL10", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 10 then { exitlong("eL11", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 11 then { exitlong("eL12", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 12 then { exitlong("eL13", AtMarket, DEF,"",CurrentContracts-bet,1); } else if bet < CurrentContracts && buy_cnt == 13 then { exitlong("eL14", AtMarket, DEF,"",CurrentContracts-bet,1); } } else if p <= 0 then { sell("change_S", AtMarket, DEF, bet); } } else if MarketPosition < 0 Then { if CurrentContracts < CurrentContracts[1] Then Sell_cnt = Sell_cnt + 1; if bet == 0 Then ExitShort("매도마감청산"); if p < 0 then { if bet > CurrentContracts then { Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && sell_cnt == 0 then { exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 1 then { exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 2 then { exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 3 then { exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 4 then { exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 5 then { exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 6 then { exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 7 then { exitShort("eS8", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 8 then { exitShort("eS9", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 9 then { exitShort("eS10", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 10 then { exitShort("eS11", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 11 then { exitShort("eS12", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 12 then { exitShort("eS13", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 13 then { exitShort("eS14", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 14 then { exitShort("eS15", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 15 then { exitShort("eS16", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 16 then { exitShort("eS17", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 17 then { exitShort("eS18", AtMarket, DEF,"", CurrentContracts-bet,1); } } else if p >= 0 then { Buy("change_B", AtMarket, DEF, bet); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : 청산문의 > 안녕하세요 input: period(90); var: ii(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); sum = 0; for ii = 0 to period-1 { sum = sum + (C[ii]-C[ii+1])/(C[ii]); } avr = sum/period; sum = 0; for ii=0 to period-1 { sum = sum + ((C[ii]-C[ii+1])/(C[ii])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/15 >= 1 then { bet = int((20+netProfit)/(C/15)); } else bet = int(((20+netProfit)/(C/15))*(abs(k)/15)); if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then buy_cnt = 0; if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then sell_cnt = 0; if bet*p == CurrentContracts*MarketPosition then { // MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { buy("L", AtMarket, DEF, bet); } else if p <= 0 then { Sell("S", AtMarket, DEF, bet); } } else if MarketPosition > 0 Then { if CurrentContracts < CurrentContracts[1] Then buy_cnt = buy_cnt + 1; if p > 0 then { if bet > CurrentContracts then { buy("Ladd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && buy_cnt == 0 then { ExitLong("eL1", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 1 then { exitlong("eL2", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 2 then { exitlong("eL3", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 3 then { exitlong("eL4", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 4 then { exitlong("eL5", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 5 then { exitlong("eL6", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 6 then { exitlong("eL7", AtMarket, DEF,"",bet-CurrentContracts,1); } else if bet < CurrentContracts && buy_cnt == 7 then { exitlong("eL8", AtMarket, DEF,"",bet-CurrentContracts,1); } } else if p <= 0 then { sell("change_S", AtMarket, DEF, bet); } } else if MarketPosition < 0 Then { if CurrentContracts < CurrentContracts[1] Then Sell_cnt = Sell_cnt + 1; if p < 0 then { if bet > CurrentContracts then { Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); } else if bet < CurrentContracts && sell_cnt == 0 then { exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 1 then { exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 2 then { exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 3 then { exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 4 then { exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 5 then { exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); } else if bet < CurrentContracts && sell_cnt == 6 then { exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); } } else if p >= 0 then { Buy("change_B", AtMarket, DEF, bet); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 청산문의 > 안녕하세요 예스스탁입니다. 추가진입을 하기 위해서는 시스템 트레이딩 설정창에서 피라미딩을 설정하셔야 합니다. 올리신 경우에는 피라미딩을 다른진입신호허용으로 설정하셔야 추가진입을 하게 됩니다. 적용이 잘 안되시면 내일 편하신 시간에 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 데몬 님이 쓴 글입니다. > 제목 : 청산문의 > 안녕하세요 ^^; 수고 많으십니다. 아래 내용으로 시스템을 돌려보면 계약진행이 (-3 / -2 / -3 / -1) 으로 진행될거라 예상되었으나 실제로는 (-3 / -2 / -2 / 0) 으로 진행됩니다. 정상적인 매매가 진행되려면 어떻게 수정해야 하는지요..? var: cnt(0); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); if cnt == 0 then { Sell("S", AtMarket, DEF, 3); cnt = cnt + 1; } else if cnt == 1 then { exitShort("eS1", AtMarket, DEF,"", 1,1); cnt = cnt + 1; } else if cnt == 2 then { Sell("Sadd", AtMarket, DEF, 1); cnt = cnt + 1; } else if cnt == 3 then { exitShort("eS2", AtMarket, DEF,"", 2,1); cnt = cnt + 1; } ============================================== 원래 로직은 아래와 같습니다. "일부 삽니다" 및 "일부 팝니다" 주문이 정상적으로 작동하지 않습니다. 예를들어 일부삽니다 3계약이 주문되어도 1계약만 청산되는 등의 문제가 있습니다 ^^ 번거로우시겠지만 검토부탁드립니다- 감사합니다 ^^ var: i(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0); input: period(90); MessageLog("현재계약%.2f", CurrentContracts*MarketPosition); sum = 0; for i=0 to period-1 { sum = sum + (C[i]-C[i+1])/(C[i]); } avr = sum/period; sum = 0; for i=0 to period-1 { sum = sum + ((C[i]-C[i+1])/(C[i])-avr)^2; } vari = sum/period; //수익률 평균 k = avr/vari; p = k / abs(k); if abs(k)/15 >= 1 then { bet = int((20+netProfit)/(C/15)); } else bet = int(((20+netProfit)/(C/15))*(abs(k)/15)); MessageLog("BET%.2f",bet); MessageLog("차이%.2f",bet - CurrentContracts); if bet*p == CurrentContracts*MarketPosition then { MessageLog("변동없음.%.f",int(-0.5)); } else if MarketPosition == 0 Then { if p > 0 then { MessageLog("삽니다%.f",bet ); buy("L", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } else if p <= 0 then { MessageLog("팝니다%.f", bet); Sell("S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition > 0 Then { if p > 0 then { if bet > CurrentContracts then { MessageLog("추가로삽니다%.f",bet - CurrentContracts); buy("Ladd", AtMarket, DEF, bet-CurrentContracts); buy_cnt = buy_cnt + 1; } else if bet < CurrentContracts && buy_cnt > 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL1", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == 0 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL2", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -1 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL3", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -2 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL4", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -3then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL5", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -4 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL6", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -5 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL7", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } else if bet < CurrentContracts && buy_cnt == -6 then { MessageLog("일부팝니다1%.f",bet - CurrentContracts); exitlong("eL8", AtMarket, DEF,"",bet-CurrentContracts,1); buy_cnt = buy_cnt - 1; } } else if p <= 0 then { MessageLog("포지션을 바꿔 팝니다%.f",bet); sell("change_S", AtMarket, DEF, bet); sell_cnt = sell_cnt + 1; buy_cnt = 0; } } else if MarketPosition < 0 Then { if p < 0 then { if bet > CurrentContracts then { MessageLog("추가로팝니다%.f",bet - CurrentContracts); Sell("Sadd", AtMarket, DEF, bet-CurrentContracts); sell_cnt = sell_cnt + 1; } else if bet < CurrentContracts && sell_cnt > 0 then { MessageLog("일부삽니다1%.f",bet - CurrentContracts); exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == 0 then { MessageLog("일부삽니다2%.f",bet - CurrentContracts); exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -1 then { MessageLog("일부삽니다3%.f",bet - CurrentContracts); exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -2 then { MessageLog("일부삽니다4%.f",bet - CurrentContracts); exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -3 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -4 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } else if bet < CurrentContracts && sell_cnt == -5 then { MessageLog("일부삽니다%.f",bet - CurrentContracts); exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1); sell_cnt = sell_cnt -1; } } else if p >= 0 then { MessageLog("포지션을 바꿔 삽니다%.f",bet); Buy("change_B", AtMarket, DEF, bet); buy_cnt = buy_cnt + 1; sell_cnt = 0; } } MessageLog("셀카운트%.f",sell_cnt); MessageLog("바이카운트%.f",buy_cnt);