커뮤니티
시스템 작성 요청
2014-03-02 20:26:14
173
글번호 73095
국내선물의 최근 변폭은 2.5포 내외가 되고 있습니다. 따라서 이런 시장상황에 맞게 레인지 매매를 하고자 합니다. 이에 맞는 신호발생기와 시스템을 부탁드립니다.
오전 10시 이후- 오후 2시 사이에 발생되게 하되,
당일 저점으로부터 고점까지의 변폭이 2.5포인트 상승하면 "매도1차" 신호가 발생
당일 저점으로부터 고점까지의 변폭이 3.0포인트 상승하면 "매도2차" 신호가 발생,
단, 1차 변폭과 2차 변폭은 input 변수로 처리하도록 함.
매도신호도 위와 반대로 하면 됩니다.
청산의 변폭은 디폴트 1포로 해주시되, 역시 input 변수로 처리할 수 있도록 해주십시요.
2개가 진입된 경우 동시청산을 원칙으로 하되, 2차로 나눠서 할 수 있는 방법이 있으면 그것도 제시해주십시요.
지표의 경우, 첨부한 그림처럼 매수신호가 발생하는 순간 고점과 신호발생지점에 각각 수평선이 그어지게 하고, 동시에 고점에서 저점까지 청색 대각선이 그어지게끔(반대로 매도신호의 경우는 저점과 신호발생지점까지 적색 대각선, 2차신호들은 각각 녹색, 분홍색) 해주시면 감사하겠습니다.
- 1. 예스스탁_수식부탁용_차트_일간변폭매매2.PNG (0.02 MB)
답변 2
예스스탁 예스스탁 답변
2014-03-03 17:46:33
안녕하세요
예스스탁입니다.
피라미딩을 다른진입신호만 허용으로 설정하고 적용하시기 바랍니다.
input : N1(2.5),N2(3.0),X1(1),X2(2);
var : TL1(0),TL2(0),TL3(0);
if date != date[1] Then{
var1 = sdate;
var2 = stime;
}
if dayhigh == H Then{
var3 = sdate;
var4 = stime;
}
if daylow == L Then{
var5 = sdate;
var6 = stime;
}
if MarketPosition == 0 and stime < 150000 Then
buy("매수1차",Atlimit,dayhigh-N1);
if MarketPosition == 1 and MaxEntries == 1 and stime < 150000 Then
buy("매수2차",Atlimit,dayhigh[BarsSinceEntry]-N2);
if MarketPosition == 0 and stime < 150000 Then
Sell("매도1차",Atlimit,daylow+N1);
if MarketPosition == -1 and MaxEntries == 1 and stime < 150000 Then
Sell("매도2차",Atlimit,daylow[BarsSinceEntry]+N2);
if MarketPosition == 1 Then{
if MaxEntries == 1 Then
ExitLong("bx1",Atlimit,EntryPrice+X1);
if MaxEntries == 2 Then{
#두번재 진입대비 X1상승하면 청산
ExitLong("bx2",Atlimit,(dayhigh-N2)+X1);
#분할(두번째 진입가대비 X1수익나면 1계약청산,X2수익나면 1계약 청산)
if CurrentEntries == MaxEntries Then
ExitLong("bx3_1",Atlimit,(dayhigh[BarsSinceEntry]-N2)+X1,"",1,1);
if CurrentEntries < MaxEntries Then
ExitLong("bx3_2",Atlimit,(dayhigh[BarsSinceEntry]-N2)+X2,"",1,1);
}
}
if MarketPosition == -1 Then{
if MaxEntries == 1 Then
ExitShort("sx1",Atlimit,EntryPrice-X1);
if MaxEntries == 2 Then{
ExitShort("sx2",Atlimit,(DayLow+N2)-X1);
#분할(두번째 진입가대비 X1수익나면 1계약청산,X2수익나면 1계약 청산)
if CurrentEntries == MaxEntries Then
ExitShort("sx3_1",Atlimit,(DayLow[BarsSinceEntry]+N2)-X1,"",1,1);
if CurrentEntries < MaxEntries Then
ExitShort("sx3_2",Atlimit,(DayLow[BarsSinceEntry]+N2)-X2,"",1,1);
}
}
if MarketPosition == 1 Then{
TL_Delete(TL1);
TL1 = TL_New(var1,var2,dayhigh[BarsSinceEntry],sdate,stime,dayhigh[BarsSinceEntry]);
TL_SetExtRight(tL1,True);
if MaxEntries == 1 and CurrentContracts > CurrentContracts[1] Then{
TL_Delete(TL2);
TL_Delete(TL3);
TL2 = TL_New(var1,var2,EntryPrice,sdate,stime,EntryPrice);
TL3 = TL_New(var3,var4,DayHigh[BarsSinceEntry],sdate,stime,EntryPrice);
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,BLUE);
}
if MaxEntries == 2 and CurrentContracts > CurrentContracts[1] Then{
TL_Delete(TL2);
TL_Delete(TL3);
TL2 = TL_New(var1,var2,(dayhigh[BarsSinceEntry]-N2),sdate,stime,(dayhigh[BarsSinceEntry]-N2));
TL3 = TL_New(var3,var4,DayHigh,sdate,stime,(dayhigh-N2));
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,GREEN);
}
}
if MarketPosition == -1 Then{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL1 = TL_New(var1,var2,DayLow[BarsSinceEntry],sdate,stime,DayLow[BarsSinceEntry]);
TL_SetExtRight(tL1,True);
if MaxEntries == 1 and CurrentContracts > CurrentContracts[1] Then{
TL2 = TL_New(var1,var2,EntryPrice,sdate,stime,EntryPrice);
TL3 = TL_New(var3,var4,DayLow[BarsSinceEntry],sdate,stime,EntryPrice);
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,RED);
}
if MaxEntries == 2 and CurrentContracts > CurrentContracts[1] Then{
TL2 = TL_New(var1,var2,(DayLow+N2),sdate,stime,(DayLow+N2));
TL3 = TL_New(var3,var4,DayLow[BarsSinceEntry],sdate,stime,(DayLow+N2));
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,MAGENTA);
}
}
즐거운 하루되세요
> 황금의성 님이 쓴 글입니다.
> 제목 : 시스템 작성 요청
> 국내선물의 최근 변폭은 2.5포 내외가 되고 있습니다. 따라서 이런 시장상황에 맞게 레인지 매매를 하고자 합니다. 이에 맞는 신호발생기와 시스템을 부탁드립니다.
오전 10시 이후- 오후 2시 사이에 발생되게 하되,
당일 저점으로부터 고점까지의 변폭이 2.5포인트 상승하면 "매도1차" 신호가 발생
당일 저점으로부터 고점까지의 변폭이 3.0포인트 상승하면 "매도2차" 신호가 발생,
단, 1차 변폭과 2차 변폭은 input 변수로 처리하도록 함.
매도신호도 위와 반대로 하면 됩니다.
청산의 변폭은 디폴트 1포로 해주시되, 역시 input 변수로 처리할 수 있도록 해주십시요.
2개가 진입된 경우 동시청산을 원칙으로 하되, 2차로 나눠서 할 수 있는 방법이 있으면 그것도 제시해주십시요.
지표의 경우, 첨부한 그림처럼 매수신호가 발생하는 순간 고점과 신호발생지점에 각각 수평선이 그어지게 하고, 동시에 고점에서 저점까지 청색 대각선이 그어지게끔(반대로 매도신호의 경우는 저점과 신호발생지점까지 적색 대각선, 2차신호들은 각각 녹색, 분홍색) 해주시면 감사하겠습니다.
황금의성
2014-03-05 12:47:59
감사합니다. 제 생각보다는 훨씬 복잡한 수식이 되었네요. 이유가 뭘까요? 더 간소화 할 수도 있을 것 같은데요.....
하여간 좋은데요... 위의 그림에서 보는 것처럼, 문제점은
하루에 2-3번만 진입해야 하는데...무제한으로 들어간다는 점입니다.
특히 변수를 작게 주었을 경우에 그런 현상이 벌어집니다(위 그림에서는 변수를 1.5/3/0.4/2로 주었음).
따라서 하루 최대 진입횟수를 3회로 제한해주시고,
매수1차 진입이든 매수 2차 진입이든 단 1회로 제한해주십시요. 손절당하믄 더 이상 안들어가게 해주세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템 작성 요청
> 안녕하세요
예스스탁입니다.
피라미딩을 다른진입신호만 허용으로 설정하고 적용하시기 바랍니다.
input : N1(2.5),N2(3.0),X1(1),X2(2);
var : TL1(0),TL2(0),TL3(0);
if date != date[1] Then{
var1 = sdate;
var2 = stime;
}
if dayhigh == H Then{
var3 = sdate;
var4 = stime;
}
if daylow == L Then{
var5 = sdate;
var6 = stime;
}
if MarketPosition == 0 and stime < 150000 Then
buy("매수1차",Atlimit,dayhigh-N1);
if MarketPosition == 1 and MaxEntries == 1 and stime < 150000 Then
buy("매수2차",Atlimit,dayhigh[BarsSinceEntry]-N2);
if MarketPosition == 0 and stime < 150000 Then
Sell("매도1차",Atlimit,daylow+N1);
if MarketPosition == -1 and MaxEntries == 1 and stime < 150000 Then
Sell("매도2차",Atlimit,daylow[BarsSinceEntry]+N2);
if MarketPosition == 1 Then{
if MaxEntries == 1 Then
ExitLong("bx1",Atlimit,EntryPrice+X1);
if MaxEntries == 2 Then{
#두번재 진입대비 X1상승하면 청산
ExitLong("bx2",Atlimit,(dayhigh-N2)+X1);
#분할(두번째 진입가대비 X1수익나면 1계약청산,X2수익나면 1계약 청산)
if CurrentEntries == MaxEntries Then
ExitLong("bx3_1",Atlimit,(dayhigh[BarsSinceEntry]-N2)+X1,"",1,1);
if CurrentEntries < MaxEntries Then
ExitLong("bx3_2",Atlimit,(dayhigh[BarsSinceEntry]-N2)+X2,"",1,1);
}
}
if MarketPosition == -1 Then{
if MaxEntries == 1 Then
ExitShort("sx1",Atlimit,EntryPrice-X1);
if MaxEntries == 2 Then{
ExitShort("sx2",Atlimit,(DayLow+N2)-X1);
#분할(두번째 진입가대비 X1수익나면 1계약청산,X2수익나면 1계약 청산)
if CurrentEntries == MaxEntries Then
ExitShort("sx3_1",Atlimit,(DayLow[BarsSinceEntry]+N2)-X1,"",1,1);
if CurrentEntries < MaxEntries Then
ExitShort("sx3_2",Atlimit,(DayLow[BarsSinceEntry]+N2)-X2,"",1,1);
}
}
if MarketPosition == 1 Then{
TL_Delete(TL1);
TL1 = TL_New(var1,var2,dayhigh[BarsSinceEntry],sdate,stime,dayhigh[BarsSinceEntry]);
TL_SetExtRight(tL1,True);
if MaxEntries == 1 and CurrentContracts > CurrentContracts[1] Then{
TL_Delete(TL2);
TL_Delete(TL3);
TL2 = TL_New(var1,var2,EntryPrice,sdate,stime,EntryPrice);
TL3 = TL_New(var3,var4,DayHigh[BarsSinceEntry],sdate,stime,EntryPrice);
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,BLUE);
}
if MaxEntries == 2 and CurrentContracts > CurrentContracts[1] Then{
TL_Delete(TL2);
TL_Delete(TL3);
TL2 = TL_New(var1,var2,(dayhigh[BarsSinceEntry]-N2),sdate,stime,(dayhigh[BarsSinceEntry]-N2));
TL3 = TL_New(var3,var4,DayHigh,sdate,stime,(dayhigh-N2));
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,GREEN);
}
}
if MarketPosition == -1 Then{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL1 = TL_New(var1,var2,DayLow[BarsSinceEntry],sdate,stime,DayLow[BarsSinceEntry]);
TL_SetExtRight(tL1,True);
if MaxEntries == 1 and CurrentContracts > CurrentContracts[1] Then{
TL2 = TL_New(var1,var2,EntryPrice,sdate,stime,EntryPrice);
TL3 = TL_New(var3,var4,DayLow[BarsSinceEntry],sdate,stime,EntryPrice);
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,RED);
}
if MaxEntries == 2 and CurrentContracts > CurrentContracts[1] Then{
TL2 = TL_New(var1,var2,(DayLow+N2),sdate,stime,(DayLow+N2));
TL3 = TL_New(var3,var4,DayLow[BarsSinceEntry],sdate,stime,(DayLow+N2));
TL_SetExtRight(tL2,True);
TL_SetExtRight(tL3,True);
TL_SetColor(TL3,MAGENTA);
}
}
즐거운 하루되세요
> 황금의성 님이 쓴 글입니다.
> 제목 : 시스템 작성 요청
> 국내선물의 최근 변폭은 2.5포 내외가 되고 있습니다. 따라서 이런 시장상황에 맞게 레인지 매매를 하고자 합니다. 이에 맞는 신호발생기와 시스템을 부탁드립니다.
오전 10시 이후- 오후 2시 사이에 발생되게 하되,
당일 저점으로부터 고점까지의 변폭이 2.5포인트 상승하면 "매도1차" 신호가 발생
당일 저점으로부터 고점까지의 변폭이 3.0포인트 상승하면 "매도2차" 신호가 발생,
단, 1차 변폭과 2차 변폭은 input 변수로 처리하도록 함.
매도신호도 위와 반대로 하면 됩니다.
청산의 변폭은 디폴트 1포로 해주시되, 역시 input 변수로 처리할 수 있도록 해주십시요.
2개가 진입된 경우 동시청산을 원칙으로 하되, 2차로 나눠서 할 수 있는 방법이 있으면 그것도 제시해주십시요.
지표의 경우, 첨부한 그림처럼 매수신호가 발생하는 순간 고점과 신호발생지점에 각각 수평선이 그어지게 하고, 동시에 고점에서 저점까지 청색 대각선이 그어지게끔(반대로 매도신호의 경우는 저점과 신호발생지점까지 적색 대각선, 2차신호들은 각각 녹색, 분홍색) 해주시면 감사하겠습니다.
다음글
이전글