예스스탁
예스스탁 답변
2023-03-30 14:11:57
안녕하세요
예스스탁입니다.
1
불타기/물타기 다시 올려드립니다.
식이 혼재되서 있었습니다.
1-1 물타기
var : 이평(0),간격(0),매수가격(0);
이평 = ma(C,20) ;
간격 = PriceScale*10;
if marketposition == 0 and C > 이평 then
{
buy("b1",OnClose,Def,1) ;
매수가격 = C;
buy("b2.",atlimit,매수가격-간격*1,1) ;
buy("b3.",atlimit,매수가격-간격*2,1) ;
buy("b4.",atlimit,매수가격-간격*3,1) ;
buy("b5.",atlimit,매수가격-간격*4,1) ;
buy("b6.",atlimit,매수가격-간격*5,1) ;
}
if marketposition == 1 then
{
if lowest(L,BarsSinceEntry) > 매수가격-간격*1 Then
buy("b2",atlimit,매수가격-간격*1,1) ;
if lowest(L,BarsSinceEntry) > 매수가격-간격*2 Then
buy("b3",atlimit,매수가격-간격*2,1) ;
if lowest(L,BarsSinceEntry) > 매수가격-간격*3 Then
buy("b4",atlimit,매수가격-간격*3,1) ;
if lowest(L,BarsSinceEntry) > 매수가격-간격*4 Then
buy("b5",atlimit,매수가격-간격*4,1) ;
if lowest(L,BarsSinceEntry) > 매수가격-간격*5 Then
buy("b6",atlimit,매수가격-간격*5,1) ;
if CurrentContracts < 3 Then
SetStopProfittarget(PriceScale*10,PointStop);
Else
{
SetStopProfittarget(0);
ExitLong("bx",AtLimit,AvgEntryPrice+PriceScale*10);
}
}
Else
SetStopProfittarget(0);
1-2 불타기
var : 이평(0),간격(0),매수가격(0);
이평 = ma(C,20) ;
간격 = PriceScale*10;
if marketposition == 0 and C > 이평 then
{
buy("b1",OnClose,Def,1) ;
매수가격 = C;
buy("b2.",AtStop,매수가격+간격*1,1) ;
buy("b3.",AtStop,매수가격+간격*2,1) ;
buy("b4.",AtStop,매수가격+간격*3,1) ;
buy("b5.",AtStop,매수가격+간격*4,1) ;
buy("b6.",AtStop,매수가격+간격*5,1) ;
}
if marketposition == 1 then
{
if Highest(H,BarsSinceEntry) < 매수가격+간격*1 Then
buy("b2",AtStop,매수가격+간격*1,1) ;
if Highest(H,BarsSinceEntry) < 매수가격+간격*2 Then
buy("b3",AtStop,매수가격+간격*2,1) ;
if Highest(H,BarsSinceEntry) < 매수가격+간격*3 Then
buy("b4",AtStop,매수가격+간격*3,1) ;
if Highest(H,BarsSinceEntry) < 매수가격+간격*4 Then
buy("b5",AtStop,매수가격+간격*4,1) ;
if Highest(H,BarsSinceEntry) < 매수가격+간격*5 Then
buy("b6",AtStop,매수가격+간격*5,1) ;
if CurrentContracts < 3 Then
SetStopProfittarget(PriceScale*10,PointStop);
Else
{
SetStopProfittarget(0);
ExitLong("bx",AtLimit,AvgEntryPrice+PriceScale*10);
}
}
Else
SetStopProfittarget(0);
3
평단가로 변경해 드립니다.
4
강제청산은 한번셋팅이 되면 계속 유지가 됩니다.
조건에 따라 셋팅 및 해제가 반복되어야 하므로
2번진입후 포지션이 종료되면 해제되게 추가한 내용입니다.
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
금일 답변해 주셨는데 추가 질문사항이 있어서 재질문 드립니다.
var : 이평(0),간격(0),매수가격(0);
이평 = ma(C,20) ;
간격 = PriceScale*10;
if marketposition == 0 and C > 이평 then
{
buy("b1",OnClose,Def,1) ;
매수가격 = C;
buy("b2.",atlimit,매수가격+간격*1,1) ;
buy("b3.",atlimit,매수가격+간격*2,1) ;
buy("b4.",atlimit,매수가격+간격*3,1) ;
buy("b5.",atlimit,매수가격+간격*4,1) ;
buy("b6.",atlimit,매수가격+간격*5,1) ;
}
if marketposition == 1 then
{
if lowest(L,BarsSinceEntry) > 매수가격+간격*1 Then
buy("b2",atlimit,매수가격+간격*1,1) ;
if lowest(L,BarsSinceEntry) > 매수가격+간격*2 Then
buy("b3",atlimit,매수가격+간격*2,1) ;
if lowest(L,BarsSinceEntry) > 매수가격+간격*3 Then
buy("b4",atlimit,매수가격+간격*3,1) ;
if lowest(L,BarsSinceEntry) > 매수가격+간격*4 Then
buy("b5",atlimit,매수가격+간격*4,1) ;
if lowest(L,BarsSinceEntry) > 매수가격+간격*5 Then
buy("b6",atlimit,매수가격+간격*5,1) ;
if CurrentContracts < 3 Then
SetStopProfittarget(PriceScale*10,PointStop);
Else
{
SetStopProfittarget(0);
ExitLong("bx",AtLimit,EntryPrice+PriceScale*10);
}
}
Else
SetStopProfittarget(0);
위와 같이 코딩해 주셨는데요.
질문사항 1 :
위의 시스템식을 적용해보면
b1.
b2.
b3.
b4.
b5.
b6.
진입가격이 모두 동일합니다.
왜 그런건가요?
질문사항2 :
if marketposition == 0 and C > 이평 then
{
buy("b1",OnClose,Def,1) ;
매수가격 = C;
buy("b2.",atlimit,매수가격+간격*1,1) ;
buy("b3.",atlimit,매수가격+간격*2,1) ;
buy("b4.",atlimit,매수가격+간격*3,1) ;
buy("b5.",atlimit,매수가격+간격*4,1) ;
buy("b6.",atlimit,매수가격+간격*5,1) ;
}
위의 경우 처음 매수하면 marketposition == 0 이 아닌데
왜 b2. b3 b4. b5. b6. 모두 같은 가격으로 매수가 되는건가요?
질문사항 3.
if CurrentContracts < 3 Then
SetStopProfittarget(PriceScale*10,PointStop);
Else
{
SetStopProfittarget(0);
ExitLong("bx",AtLimit,EntryPrice+PriceScale*10);
}
위 코딩에서 3계약 이내는 개별청산을 하고
나머지 계약은 일괄 청산하려면
남아있는 계약의 평균 진입가격 대비 10틱 위에서 청산해야 하는거 아닌가요?
즉
ExitLong("bx",AtLimit,EntryPrice+PriceScale*10);
아니라
ExitLong("bx",AtLimit,avgEntryPrice+PriceScale*10);
이게 맞는게 아닌가요?
질문사항 4.
SetStopProfittarget(0);
위 함수를 2번 해제 하셨는데
위에서 조건문으로 해제 했는데
왜 마지막에 또 해제 하는건가요?
질문사항 5.
위에 코딩은 가격이 상승한 경우
즉 매수 불타기 코딩인거죠?
물타기 코딩을 하려면
아래와 같이 (-) 마이너스 하면 되는 건가요?
buy("b2.",atlimit,매수가격-간격*1,1) ;
질문사항 6.
위 시스템식을 차트에 적용해보면
marketposition == 0 일때만 6계약 모두 매수가 되고
marketposition == 1 일때는 매수가 하나도 안됩니다.
왜 그런거죠?
가격이 하락해서 물타기 하는 경우
marketposition == 0 일때는 1계약만 들어가고
나머지 계약은 marketposition == 1 일때만 들어가야 하는거 아닌가요?
죄송하지만 코딩의 내용이 이해가 안됩니다.
설명좀 부탁드립니다.
그리고 마지막으로 수고스럽겠지만
첫 진입이후 가격이 상승하면 10틱 단위로 매수 불타기 하고
첫 진입이후 가격이 하락하면 10틱 단위로 매수 물타기 하고
그리고
총 계약이 3틱 이내에는 10틱 수익이 발생하면 개별 청산하고
총 계약이 3틱 이상일 경우에는 총 진입계약의 평균가격보다 10틱 이상
수익 발생시 모두 일괄청산하는 시스템식 부탁드립니다.
마지막으로 포지션 진입은 marketposition == 0 일 경우에만
매수, 매도 하고 싶습니다.
감사합니다.