커뮤니티

질문

프로필 이미지
Good
2009-07-31 09:45:02
683
글번호 23817
답변완료
우선 빠른 답변 감사합니다... 같은 수식으로 계속 물어보려 하니까 죄송스럽네요 알려주신 수식을 바탕으로 수식을 구성해 봤는데요 If MarketPosition == 1 then { if MarketPosition[1] == 1 Then { var1 = 10; var2 = var1 * 0.5; } } if CurrentContracts == var1 then { Exitlong("SX1", AtLimit, entryprice *1.05, "",var2,1); } if CurrentContracts == var1 - (var2*1) then { Exitlong ("SX2", AtLimit, entryprice *1.10, "",var2,1); } 조건이 맞으면 콜 매수가 5% 상승하면 5개를 판매하라 10%상승하면 5개를 판매하라 이렇게 나타내려 하는데요... 구동이 않되네요... 답변 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-07-31 11:04:03

안녕하세요 예스스탁입니다. 식을 테스트해본 결과 정상적으로 작동합니다. 테스트한 식입니다. 수량이 10진입해야만 청산이 발동합니다. if dayindex == 0 Then buy("b",OnClose,def,10); If MarketPosition == 1 then { if MarketPosition[1] == 1 Then { var1 = 10; var2 = var1 * 0.5; } } if CurrentContracts == var1 then { Exitlong("SX1", AtLimit, entryprice *1.05, "",var2,1); } if CurrentContracts == var1 - (var2*1) then { Exitlong ("SX2", AtLimit, entryprice *1.10, "",var2,1); } 진입된 수량을 자동으로 인식해서 수량의 50%를 인식하게끔 식을 아래와 같이 변경하셔도 됩니다. if dayindex == 0 Then buy("b",OnClose,def,10); If MarketPosition == 1 then { if MarketPosition[1] == 1 Then { var1 = CurrentContracts; var2 = int(var1 * 0.5); var3 = var1-var2; } } if CurrentContracts == var1 then { Exitlong("SX1", AtLimit, entryprice *1.05, "",var2,1); } if CurrentContracts == var1 - (var2*1) then { Exitlong ("SX2", AtLimit, entryprice *1.10, "",var3,1); } 수량계산에 int를 사용하여 정수값만 취한것은 진입수량이 9개와 같이 50%값이 소숫점일 경우를 대비하기 위함이며 그래서 var3이란느 변수를 추가해서 첫진입수량에서 var2를 뺀값으로 지정했습니다. 즐거운 하루되세요 > Good 님이 쓴 글입니다. > 제목 : 질문 > 우선 빠른 답변 감사합니다... 같은 수식으로 계속 물어보려 하니까 죄송스럽네요 알려주신 수식을 바탕으로 수식을 구성해 봤는데요 If MarketPosition == 1 then { if MarketPosition[1] == 1 Then { var1 = 10; var2 = var1 * 0.5; } } if CurrentContracts == var1 then { Exitlong("SX1", AtLimit, entryprice *1.05, "",var2,1); } if CurrentContracts == var1 - (var2*1) then { Exitlong ("SX2", AtLimit, entryprice *1.10, "",var2,1); } 조건이 맞으면 콜 매수가 5% 상승하면 5개를 판매하라 10%상승하면 5개를 판매하라 이렇게 나타내려 하는데요... 구동이 않되네요... 답변 부탁드립니다.