커뮤니티
문의드립니다.
2012-09-06 19:25:49
224
글번호 54462
이전답변 감사드립니다.
매수부분만 약간의 수정을 해주셨으면 좋겠습니다.
1차,2차,3차 매수가 순서대로 모두 이루어지기 전(매도가 완료되는 것은 별개입니다. 매수에 영향을 미치지 않도록 하고 싶습니다.) 까지는 다른 1차,2차,3차 진입이 이루지지 않았으면 좋겠습니다.
매도부분은 지금의 수식 그대로 의미를(모든 분할 매도는 진입신호에 따른 분할 매도가 아닌 매입 잔고상에 있는 수량의 20%, 30%, 50%, 100% 저점대비로 계산 하여 분할 매도 주문이 나가도록) 유지시켜 주시길 부탁드립니다.
앞전에 올려주신 수식입니다.
input : 투입금액(1000000);
var : ChartHigh(0);
if index == 0 Then
ChartHigh = H;
if H > ChartHigh Then
ChartHigh = H;
if CodeCategory == 1 Then{ #코스피
if BasePrice < 50000 Then
Var1 = int(int(투입금액/C)/10)*10;
Else
Var1 = int(투입금액/C);
}
if CodeCategory == 2 or CodeCategory == 8 Then#코스닥 or etf
Var1 = int(투입금액/C);
if MarketPosition == 0 Then
buy("b1",atlimit,ChartHigh*0.93,var1);
if MarketPosition == 1 Then{
if CurrentEntries == 1 and MaxEntries == 1 Then
buy("b2",atlimit,ChartHigh*0.90,var1);
if CurrentEntries == 2 and MaxEntries == 2 Then
buy("b3",atlimit,ChartHigh*0.86,var1);
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
var2 = L;
if CodeCategory == 1 and BasePrice < 50000 Then{
value1 = int(int(CurrentContracts*0.2)/10)*10;
value2 = int(int(CurrentContracts*0.3)/10)*10;
value3 = int(int(CurrentContracts*0.5)/10)*10;
}
Else{
value1 = int(CurrentContracts*0.2);
value2 = int(CurrentContracts*0.3);
value3 = int(CurrentContracts*0.5);
}
}
if L < var2 Then
var2 = L;
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 1 Then{
ExitLong("bx11",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx12",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx13",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx14",AtLimit,var2*1.09);
}
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 2 Then{
ExitLong("bx21",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx22",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx23",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx24",AtLimit,var2*1.09);
}
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 3 Then{
ExitLong("bx31",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx32",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx33",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx34",AtLimit,var2*1.09);
}
}
답변 1
예스스탁 예스스탁 답변
2012-09-07 09:49:45
안녕하세요
예스스탁입니다.
문의하신 내용 정확히 이해하지 못했습니다.
시스템을 적용하실 때 피라미딩을 다른진입신호만 허용으로 설정하고
적용하시면 진입신호당 한번씩 발생하며
식상 순서대로 진입하게 되어 있습니다.
좀더 자세한 내용 부탁드립니다,
즐거운 하루되세요
> 사과쥬스 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 이전답변 감사드립니다.
매수부분만 약간의 수정을 해주셨으면 좋겠습니다.
1차,2차,3차 매수가 순서대로 모두 이루어지기 전(매도가 완료되는 것은 별개입니다. 매수에 영향을 미치지 않도록 하고 싶습니다.) 까지는 다른 1차,2차,3차 진입이 이루지지 않았으면 좋겠습니다.
매도부분은 지금의 수식 그대로 의미를(모든 분할 매도는 진입신호에 따른 분할 매도가 아닌 매입 잔고상에 있는 수량의 20%, 30%, 50%, 100% 저점대비로 계산 하여 분할 매도 주문이 나가도록) 유지시켜 주시길 부탁드립니다.
앞전에 올려주신 수식입니다.
input : 투입금액(1000000);
var : ChartHigh(0);
if index == 0 Then
ChartHigh = H;
if H > ChartHigh Then
ChartHigh = H;
if CodeCategory == 1 Then{ #코스피
if BasePrice < 50000 Then
Var1 = int(int(투입금액/C)/10)*10;
Else
Var1 = int(투입금액/C);
}
if CodeCategory == 2 or CodeCategory == 8 Then#코스닥 or etf
Var1 = int(투입금액/C);
if MarketPosition == 0 Then
buy("b1",atlimit,ChartHigh*0.93,var1);
if MarketPosition == 1 Then{
if CurrentEntries == 1 and MaxEntries == 1 Then
buy("b2",atlimit,ChartHigh*0.90,var1);
if CurrentEntries == 2 and MaxEntries == 2 Then
buy("b3",atlimit,ChartHigh*0.86,var1);
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
var2 = L;
if CodeCategory == 1 and BasePrice < 50000 Then{
value1 = int(int(CurrentContracts*0.2)/10)*10;
value2 = int(int(CurrentContracts*0.3)/10)*10;
value3 = int(int(CurrentContracts*0.5)/10)*10;
}
Else{
value1 = int(CurrentContracts*0.2);
value2 = int(CurrentContracts*0.3);
value3 = int(CurrentContracts*0.5);
}
}
if L < var2 Then
var2 = L;
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 1 Then{
ExitLong("bx11",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx12",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx13",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx14",AtLimit,var2*1.09);
}
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 2 Then{
ExitLong("bx21",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx22",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx23",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx24",AtLimit,var2*1.09);
}
if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 3 Then{
ExitLong("bx31",AtLimit,var2*1.03,"",value1,1);
ExitLong("bx32",AtLimit,var2*1.05,"",value2,1);
ExitLong("bx33",AtLimit,var2*1.07,"",value3,1);
ExitLong("bx34",AtLimit,var2*1.09);
}
}