답변완료
수식어 부탁드립니다
var : entry(0);
input : StartTime(070000),EndTime(055000),xtime(055500);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
var : Tcond(false);
if sDate != sDate[1] then
SetStopEndofday(xtime);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
SetStopEndofday(0);
}
if bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and entry < 1 Then
buy("b",atlimit,dayhigh-PriceScale*120);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*60);
if MarketPosition >= 0 and entry < 1 Then
sell("s",atlimit,daylow+PriceScale*3500);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*120);
if sdate != sdate[1] Then
SetStopEndofday(55000);
if bdate != bdate[1] Then
SetStopEndofday(0);
---------------------------
기존의 하늘색 buy(-120) 청산( +60)에서 청산싯점인 (+60)은 최저점에서 (+60)으로 신호가 나옵니다 .
노란색 buy(=120)이후 바로 (+60) 청산이 되는 buy, sell수식어로 부탁드립니다.
2021-04-15
972
글번호 148040
시스템
답변완료
수식 수정 요청부탁드립니다.
안녕하세요. 어제 작성해주신 수식으로 시뮬레이션을 해봤는데 약간 제 생각과
다르게 되는것 같아서 수정 좀 부탁드립니다.
제가 원하는 것은 0.77260에 1계약 매수 들어가면 피라미딩식으로 0.77270에 매수가 되고,
또 0.77280에 매수가 되고 그 다음에 흐름이 바뀌어 0.77270이 되었을 때는 직전에 매수했던
1계약이 매수 청산 된 후에 다시 0.77280이 되면 다시 매수가 진행되는 시스템을 원하거든요.
근데 아래 식으로는 거래내역을 보니 좀 다르게 진행이 되는것 같더라구요.
요약하자면 추세를 따라가면서 1계약씩 늘려가다가 되돌림이 되면 1계약씩 줄여나가고, 최초
매수했던 수량까지 다 손절이 되면, 그 다음부터는 매도로 신규진입되면서 1계약씩 피라미딩
진행되는것을 원합니다.
장대양봉이나, 장대음봉이 나왔을 경우 수익을 극대화하고자 하는 방법을 원하거든요.
보시고, 수정 좀 부탁드립니다.
===============================================================
input : 최초진입(1);
var : LP(0);
if sDate != sDate[1] Then
SetStopEndofday(55500);
if Bdate != Bdate[1] Then
{
SetStopEndofday(0);
LP = 0;
if 최초진입 == 1 Then
Buy("b1",AtMarket,DEF,1);
if 최초진입 == -1 Then
Sell("s1",AtMarket,DEF,1);
}
Else
{
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
LP = LatestEntryPrice(0);
if CurrentContracts < CurrentContracts[1] Then
LP = LatestExitPrice(0);
Buy("bb",AtStop,LP+0.001,1);
ExitLong("bx",AtStop,LP-0.001,"",1,1);
}
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
LP = LatestEntryPrice(0);
if CurrentContracts < CurrentContracts[1] Then
LP = LatestExitPrice(0);
Sell("ss",AtStop,LP-0.001,1);
ExitShort("sx",AtStop,LP+0.001,"",1,1);
}
if MarketPosition == 0 and LP > 0 Then
{
Buy("b",AtStop,ExitPrice(1)+0.001,1);
Sell("s",AtStop,ExitPrice(1)-0.001,1);
}
}
즐거운 하루되세요
> 바다가좋아 님이 쓴 글입니다.
> 제목 : 수식 추가 수정 요청부탁드립니다.
> 안녕하세요. 어제 전량 청산 조건으로 수식 작성 부탁드렸는데 하나씩 청산하는
전략으로도 시뮬레이션을 해보고 싶어서요.
< 요청 사항 >
1. 피라미딩으로 수량 증가하면서 늘려가다가 그 반대방향으로 진행시에는 그 방향으로
하나씩 청산(손절) 되면서, 다 청산 되면 신규 매수 or 매도 진입이 되는 방식으로
만들었으면 합니다. 흐름을 따라가면서 계약수를 하나씩 증가시키거나, 감소시키고자
합니다.
2. 매매종목 : 해외선물(Australian Dollar) (5분봉 기준)
3. 매매 예시
1) 최초 시장가 1계약 매수 or 매도
2) 매수 or 매도와 동시에 손절(+- 0.001pt)만 설정
3) 최초 매수 or 매도한 가격 기준으로 수익 진행시 +0.001포인트마다 1계약씩
추가 매수 or 매도
ex) AUD 기준 0.76545 1계약 매수 -> 0.76645 추가 1계약 매수 ->
0.76745 추가 1계약 매수 -> 0.76845 추가 1계약 매수 -> 이후 가격이 0.76745로
되돌림 되었을 때는 먼저 0.76845에서 매수했던 1계약만 매수 청산(손절) ->
0.76745 에서 1계약 매수청산(손절) -> 0.76645 1계약 매수 청산(손절)
-> 0.76545 1계약 매수청산(손절) -> 이후 가격이 0.76445까지 내려가면 0.76445
1계약 매도 진입 -> 0.76345 1계약 매도 -> 0.76245 추가 1계약 매도 -> (반복)
4) 각 추가매수 or 추가매도한 계약별로 진입할 때마다 손절(-0.001포인트) 설정
5) 청산은 장 종료시에 시장가로 일괄 청산 설정(익일 05:55분)
6) 아~ 그리고 처음에 매수로 진행하지 않고, 시장 상태에 따라 제가 매수 or 매도를
한 후에 위의 방법대로 설정되어 시스템이 움직일 수 있도록 만들었으면 합니다.
항상 감사드립니다. 그럼 수고하세요.
2021-04-15
911
글번호 148039
시스템
답변완료
늘 감사합니다
5계약 진입
1 . 이평선 5 10 20 30 40
2 . 주가가 이평선 30 40 돌파 이탈 한 마지막 자리 고점 저점 기억
매번기억하고 이전 기억값은 삭재
3 . 이평선 20 선 과 주가 (현재가격) 이격도 관계
hts 처음 접속하고 시스템 적용하면 직전 2번 조건 기억하기
(2번 조건을 기억할수 없다면 변수에 손으로 적어준다 )
손절1 20틱 5계약
손절2 5 이평선이 20 이평선 이탈시 5계약 (매도금지)
현 조건에서 5 이평선이 20 이평선을 돌파하면 -- 추가 매수3
청산3 20 이평선과 주가 이격이 100 이상이면 1계약
청산4 20 이평선과 주가 이격이 90 이상나왔고 10 이평선이 양에서 음으로 변하면 1계약
현 포지션에서 청산 3 4 나올때 마다 차트에 표시
예)- 한번 청산 나오면 "청산1"
두번째 청산 나오면 "청산2"
세번재 청산 나오면 "청산3"매수 -- 5 이평선이 30 40 이평선을 돌파하면 -- 매수1
매수1 진입해서 손절이 나오면
마지막 (기억한 가격) 가격을 돌파하면(즉 매수1 에 고정) -- 매수2
네번째 청산 나오면 "청산4"
다섯번째 청산 나오면 "완청"
이런 형식으로요 Condition11 = true;
T3 = Text_New(sdate,stime,H," 청산1");
Text_SetColor(T3, 255);
Text_SetStyle(T3,2,1);
매도 -- 5 이평선이 30 40 이평선을 이탈하면 -- 매도1
매도1 진입해서 손절이 나오면
마지막 (기억한 가격) 가격을 돌파하면(즉 매도1 에 저정) -- 매도2
손절1 20틱
손절2 5 이평선이 20 이평선 돌파시 5계약 (매수금지)
현 조건에서 5 이평선이 20 이평선을 이탈하면 -- 추가 매도3
청산3 20 이평선과 주가 이격이 100 이상이면 1계약
청산4 20 이평선과 주가 이격이 90 이상나왔고 10 이평선이 음에서 양으로 변하면 1계약
현 포지션에서 청산 3 4 나올때 마다 차트에 표시
예)- 한번 청산 나오면 "청산1"
두번째 청산 나오면 "청산2"
세번재 청산 나오면 "청산3"
네번째 청산 나오면 "청산4"
다섯번째 청산 나오면 "완청"
이런 형식으로요 Condition11 = true;
T3 = Text_New(sdate,stime,H," 청산1");
Text_SetColor(T3, 255);
Text_SetStyle(T3,2,1);
2021-04-15
1045
글번호 148038
시스템
답변완료
[재문의]어제 문의한 수식이 잘 작동하지 않아요
안녕하세요
자꾸 수정해서 죄송합니다
아래 숫자가 표현되는 위치만 수정해주신다면 정말 감사드리겠습니다
1.LL과 HH지점에 숫자가 표현되어야 하는데 조건식 완성봉에서 숫자나옵니다
(예를 들어 'L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2]' 조건이 완성되는 봉에 '+1'이 나옵니다. 제 의도는 L[2]에 숫자가 표현되는 것입니다)
노고에 감사합니다
------
#변경된수식
var : LL(0),HH(0),tx1(0),tx2(0);
if var2 == 0 and (LL == 0 or (LL > 0 and L > LL)) and L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2] Then
{
var1 = var1+1;
LL = L[2];
tx1 = Text_New(sDate,sTime,H,"+"+NumToStr(var1,0));
Text_SetStyle(tx1,2,1);
PlotPaintBar(H,L,"강조",black);
}
else
{
if L < LL Then
{
var1 = 0;
ll = 0;
}
}
if var1 == 0 and (HH == 0 or (HH > 0 and H < HH)) and H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2] Then
{
var2 = var2+1;
HH = H[2];
tx2 = Text_New(sDate,sTime,L,"-"+NumToStr(var2,0));
Text_SetStyle(tx2,2,0);
PlotPaintBar(H,L,"강조",gray);
}
Else
{
if H > HH Then
{
var2 = 0;
hh=0;
}
}
2021-04-15
1013
글번호 148037
강조
답변완료
볼린저 밴드 수식 점검 문의드립니다.
아래의 수식을 적용해 보았습니다.
말씀하신대로 시간제한 수식은 정상작동을 합니다.
그러나 당일누적손실 제한 수식은 정해진 틱수보다 항상 많이 나오는 것으로 보아서
적용이 안되고 있는거 같습니다.
한번만 더 봐주실수 있을런지요?? 부탁드립니다.
- 아 래 -
Inputs: Length(9), StdDev(2), Bars(2);
Variables: BBTop(0),BBBot(0);
Input : 당일누적수익틱수(500),당일누적손실틱수(50);
input : starttime(100000),endtime(200000);
VARS: Tcond(false),N1(0),dayPl(0),당일누적수익(0),당일누적손실(0),Xcond(false),stok(0),stod(0);
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("매수청산");
if MarketPosition == -1 Then
ExitShort("매도청산");
}
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Xcond = false;
N1 = NetProfit;
Tcond = true;
}
당일누적수익 = PriceScale*당일누적수익틱수;
당일누적손실 = PriceScale*당일누적손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일누적수익 or daypl <= -당일누적손실 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
}
if MarketPosition == 1 then{
ExitLong("매수수익",atlimit,EntryPrice+((당일누적수익-daypl)/CurrentContracts));
ExitLong("매수손실",AtStop,EntryPrice-((당일누적손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then{
ExitShort("매도수익",atlimit,EntryPrice-((당일누적수익-daypl)/CurrentContracts));
ExitShort("매도손실",AtStop,EntryPrice+((당일누적손실+daypl)/CurrentContracts));
}
BBTop = BollBandup(Length, StdDev);
BBBot = BollBanddown(Length, StdDev);
If Tcond == true and Xcond == False and CountIF(Close < BBBot, Bars) == Bars Then
Buy("매수", AtStop, BBBot);
If Tcond == true and Xcond == False and CountIF(Close > BBTop, Bars) == Bars Then
Sell("매도", AtStop, BBTop);
2021-04-14
800
글번호 148034
시스템