예스스탁
예스스탁 답변
2023-06-19 15:09:57
안녕하세요
예스스탁입니다.
var : cnt(0),Hv(0),hh(0),ll(0),Trade(False);
var : BLv1(0),BLx1(0);
var : BLv2(0),BLx2(0);
var : BLv3(0),BLx3(0);
var : SLv1(0),SLx1(0);
var : SLv2(0),SLx2(0);
var : SLv3(0),SLx3(0);
if Bdate != Bdate[1] Then
{
Trade = true;
}
if TotalTrades > TotalTrades[1] and
(LatestExitName(1) == "bx3" or LatestExitName(1) == "sx3" ) Then
Trade = False;
if Trade == true Then
{
if MarketPosition <= 0 and h < DayOpen+PriceScale*20 Then
Buy("B1",AtStop,DayOpen+PriceScale*20);
if MarketPosition >= 0 and l > DayOpen-PriceScale*20 Then
Sell("S1",AtStop,DayOpen-PriceScale*20);
if MarketPosition == 1 Then
{
if highest(H,BarsSinceEntry) < DayOpen+PriceScale*50 Then
Buy("B2",AtStop,DayOpen+PriceScale*50);
if highest(H,BarsSinceEntry) < DayOpen+PriceScale*80 Then
Buy("B3",AtStop,DayOpen+PriceScale*80);
if CurrentContracts > CurrentContracts[1] Then
{
hv = 0;
For cnt = 1 to 25
{
if v[cnt] > hv Then
{
hv = v[cnt];
hh = h[cnt];
ll = l[cnt];
}
}
if LatestEntryName(0) == "B1" Then
{
BLv1 = (hh+ll)/2;
BLx1 = 0;
}
if LatestEntryName(0) == "B2" Then
{
BLv2 = (hh+ll)/2;
BLx2 = 0;
}
if LatestEntryName(0) == "B3" Then
{
BLv3 = (hh+ll)/2;
BLx3 = 0;
}
}
if BLv1 > 0 and C < BLv1 Then
{
BLv1 = c;
BLx1 = BLx1+1;
if BLx1 == 2 Then
ExitLong("bx1",OnClose,Def,"B1");
}
if BLv2 > 0 and C < BLv2 Then
{
BLv2 = c;
BLx2 = BLx2+1;
if BLx2 == 2 Then
ExitLong("bx2",OnClose,Def,"B2");
}
if BLv3 > 0 and C < BLv3 Then
{
BLv3 = c;
BLx3 = BLx3+1;
if BLx3 == 2 Then
ExitLong("bx3",OnClose,Def,"B3");
}
}
Else
{
BLv1 = 0;
BLx1 = 0;
BLv2 = 0;
BLx2 = 0;
BLv3 = 0;
BLx3 = 0;
}
if MarketPosition == -1 Then
{
if Lowest(L,BarsSinceEntry) > DayOpen-PriceScale*50 Then
Sell("S2",AtStop,DayOpen-PriceScale*50);
if Lowest(L,BarsSinceEntry) > DayOpen-PriceScale*80 Then
Sell("S3",AtStop,DayOpen-PriceScale*80);
if CurrentContracts > CurrentContracts[1] Then
{
hv = 0;
For cnt = 1 to 25
{
if v[cnt] > hv Then
{
hv = v[cnt];
hh = h[cnt];
ll = l[cnt];
}
}
if LatestEntryName(0) == "S1" Then
{
SLv1 = (hh+ll)/2;
SLx1 = 0;
}
if LatestEntryName(0) == "S2" Then
{
SLv2 = (hh+ll)/2;
SLx2 = 0;
}
if LatestEntryName(0) == "S3" Then
{
SLv3 = (hh+ll)/2;
SLx3 = 0;
}
}
if SLv1 > 0 and C > SLv1 Then
{
SLv1 = c;
SLx1 = SLx1+1;
if SLx1 == 2 Then
ExitShort("sx1",OnClose,Def,"S1");
}
if SLv2 > 0 and C > SLv2 Then
{
SLv2 = c;
SLx2 = SLx2+1;
if SLx2 == 2 Then
ExitShort("sx2",OnClose,Def,"S2");
}
if SLv3 > 0 and C > SLv3 Then
{
SLv3 = c;
SLx3 = SLx3+1;
if SLx3 == 2 Then
ExitShort("sx3",OnClose,Def,"S3");
}
}
Else
{
SLv1 = 0;
SLx1 = 0;
SLv2 = 0;
SLx2 = 0;
SLv3 = 0;
SLx3 = 0;
}
}
즐거운 하루되세요
> 카르마다 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 시가대비 20틱, 50틱, 80틱 위, 아래로 갈 때 차례로 진입하는 B1, B2, B3 또는 S1, S2, S3로 3계약 매매를 함에 있어서
직전 25봉 동안에 최고 거래량이 나온 봉의 고가와 저가의 1/2 을 선으로 연결한 후
"매수"진입한 후 이 1/2선이 진입당시 가격을 기준으로 2번 낮아지면 바로 손절
"매도"진입한 후 이 1/2선이 진입당시 가격을 기준으로 2번 높아지면 바로 손절
하는 손절청산식을 원합니다. (전량청산이 아닌 해당 매수, 매도 신호 각각에 적용)
예를들어, 15350에 B1 매수가 되었는데 이때 직전 25봉 동안의 최고거래량이 나온 봉의 고가, 저가 1/2 가격이 15320이라고 했을때 진입후 15290, 15265 이렇게 2번 낮아지면 해당 신호를 손절하고자 합니다.
★ 이때 2~3계약이 진입되었는데 B1 또는 B1, B2가 위의 조건에 따라 손절되었다해도 B2, B3 또는 B3까지 최종 청산되기전에는 다시 진입조건이 만족해도 재진입 안되게 하고 싶습니다. 반대로도 마찬가지입니다.
★ 번거로우시겠지만 하나 더 부탁드리자면 마지막 진입인 "B3나 S3"가 위의 청산조건으로 손절되었을 경우는 당일 매매는 종료하게 하고 싶습니다.
노고에 미리 감사드립니다~