커뮤니티
질문
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개를 판매하라
이렇게 나타내려 하는데요... 구동이 않되네요...
답변 부탁드립니다.