답변완료
질문 드립니다.
//매수 : 상승추세 전환(고가가 전고점 돌파) 후 2번의 되돌림 후 전고점(스윙고점) 상향돌파 시
//매수청산 : 전저점 하향이탈 시
//매도 : 하락추세 전환(저가가 전저점 돌파) 후 2번의 되돌림 후 전저점(스윙저점) 하향이탈 시
//매도청산 : 전고점 상향돌파 시
input:swingPeriod(5);
Var:신고가(False), 신저가(False), j(0),jj(0),최종꼭지점(""),추세구간(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL1(0);
var : HighStop(0), LowStop(0), TrendV(0);
# 추세 판정
신고가 = Highest(H,swingPeriod) == H ;
신저가 = Lowest (L,swingPeriod) == L ;
If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생
If 최종꼭지점 == "저점" Then {
If 저[1,1] > L Then
추세구간 = -1;
Else
추세구간 = 1;
}
Else If 최종꼭지점 == "고점" Then {
If 고[1,1] < H Then
추세구간 = 1;
Else
추세구간 = -1;
}
}
Else If 신고가 == True Then //신고가 발생
추세구간 = 1;
Else If 신저가 == True Then //신저가 발생
추세구간 = -1;
# 상승추세 구간
If 추세구간 == 1 Then {
If 최종꼭지점 == "저점" Then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 고[1,1] < H Then { // 1번 고점보다 높은 고가 출현
고[1,1] = H;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
# 하락추세 구간
If 추세구간 == -1 Then {
If 최종꼭지점 == "고점" then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 저[1,1] > L then {
저[1,1] = L;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
# 직전 스윙고가, 스윙저가
if 추세구간 == 1 Then
HighStop = 고[2,1];
Else
HighStop = 고[1,1];
if 추세구간 == -1 Then
LowStop = 저[2,1];
Else
LowStop = 저[1,1];
if H >= HighStop Then
TrendV = 1;
if L <= LowStop Then
TrendV = -1;
# 매매식
var : retraceScnt(0), retraceBcnt(0);
if TrendV == 1 Then {
retraceScnt = 0;
if 추세구간[1] == 1 and 추세구간 == -1 Then
retraceBcnt = retraceBcnt + 1;
}
if TrendV == -1 Then {
retraceBcnt = 0;
if 추세구간[1] == -1 and 추세구간 == 1 Then
retraceScnt = retraceScnt + 1;
}
if retraceBcnt == 2 and C>HighStop Then
Buy("B", AtMarket);
if MarketPosition == 1 and C<Lowstop Then
ExitLong("EL", AtMarket);
if retraceScnt == 2 and C<Lowstop Then
Sell("S", AtMarket);
if MarketPosition == -1 and C>HighStop Then
ExitShort("ES", AtMarket);
위의 식을 활용하되 data2에 적용시켜 마켓타이밍을 결정하여
메인 종목을 매수,매도하고 싶은데
식을 만들 수 있을까요?
항상 감사드립니다.
2024-09-19
643
글번호 183543
시스템
답변완료
전환추세 피보나치
Input : 전환(0.8);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""), TL(0),TX(0),TX2(0);
Array:고[10,4](0),저[10,4](0);
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1]+전환 <= HH and hiBar == 0;
Condition2 = 고[1,1]-전환 >= LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,Red);
Text_SetSize(tx,25);
Text_SetColor(tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
if abs(고[1,1][1]-저[1,1][1]) < 1 Then
Text_Delete(tx);
TX = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1]-저[1,1],2));
Text_SetSize(tx,25);
Text_SetColor(tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
}
Else If 고[1,1] < HH[hiBar] Then
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]);
Text_SetString(TX,NumToStr(고[1,1]-저[1,1],2));
Text_SetLocation(TX,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
Plot1(고[1,1]);
NoPlot(2);
}
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL,1);
TL_SetColor(TL,Green);
Text_SetSize(tx,25);
Text_SetColor(tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
if abs(고[1,1][1]-저[1,1][1]) < 1 Then
Text_Delete(tx);
TX = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(고[1,1]-저[1,1],2));
Text_SetSize(tx,25);
Text_SetColor(tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,저[1,3],저[1,4],저[1,1]);
Text_SetString(TX,NumToStr(고[1,1]-저[1,1],2));
Text_SetLocation(TX,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
Plot2(저[1,1]);
NoPlot(1);
}
1.당일 고점보다 낮은 하락추세선이 생기면,
낮은 추세선의 상단을 당일 고점으로부터 50%라고 가정하고 0% 되는 지점에 네모 표시.
38.2%라고 가정하고 0% 되는 지점에 네모 표시.
당일 저점보다 높은 상승추세선이 생기면, 반대.
추세선의 크기가 1보다 작으면 생략.1보다 큰것만 표시.
2. 1번 수식의 네모 표시를 수평선으로 변경.(크기가 1 이상시 표시)
하락추세선이 생기면 네모 표시된 부분부터(0%) 그 하락추세선이 끝날 때까지 수평선 표시.
상승은 반대. 감사합니다.
2024-09-20
593
글번호 183542
지표
답변완료
서식 부탁드립니다.
본 서식에서 추가 서식 부탁드립니다.
# KOSPI 선물 10분봉
input: tt(150000);
var: chkP(3), reChkP(20), stopChk(10);
var: HH(0), LL(0), BS(0), SS(0);
var: dayChk(0);
if BarIndex == 0 then ClearDebug();
if dayindex == chkP then {
HH = Highest(Max(C,O), chkP+1);
LL = Lowest(Min(C,O), chkP+1);
#if date == 20240612 then messageLog("--HH %.2f, LL: %.2f", HH, LL);
}
#if High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then messageLog("HH %.2f, High: %.2f", HH, High);
if DayIndex >= chkP
# and Time < 95000
and sDate == NextBarSdate
and EntryDate(0) < Date
and EntryDate(1) < Date
Then {
Buy("B1", AtStop, HH);
Sell("S1", AtStop, LL);
}
//if dayChk == 0 and High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then {
// messageLog("HH %.2f, High: %.2f", HH, High);
// dayChk = 1;
//}
if ExitDate(1) == Date
and Time < 150000
// and LatestEntryName(1) != "B2"
// and LatestEntryName(1) != "S2"
// and LatestEntryName(0) != "B2"
// and LatestEntryName(0) != "S2"
Then {
if DayIndex < reChkP Then {
HH = Highest(Max(C,O), DayIndex+1);
LL = Lowest(Min(C,O), DayIndex+1);
}
Else {
HH = Highest(Max(C,O), reChkP);
LL = Lowest(Min(C,O), reChkP);
}
Buy("B2", AtStop, HH);
Sell("S2", AtStop, LL);
}
if (MarketPosition == 1) Then {
if DayIndex < stopChk Then {
BS = Lowest(Min(C,O), DayIndex+1);
}
Else {
BS = Lowest(Min(C,O), stopChk);
}
ExitLong("EL", AtStop, BS);
}
if (MarketPosition == -1) Then {
if DayIndex < stopChk Then {
SS = Highest(Max(C,O), DayIndex+1);
}
Else {
SS = Highest(Max(C,O), stopChk);
}
#messageLog(" SS %.2f", SS);
ExitShort("ES", AtStop, SS);
}
SetStopEndofday(1530);
1. 하루에 한번만 진입
2. 오전 12시까지만 진입
3. 전날 종가대비 3pt 이상 갭 상승(하락)시 진입 금지
*각 공히 당일 청산입니다.
위의 3가지 경우의 서식을 각각 부탁드립니다.
바쁘시더라도 부탁드리겠습니다.
감사합니다.
2024-09-19
654
글번호 183538
시스템
답변완료
한가지 여쭤보겠습니다
안녕하세요 명절 잘 보내셨는지요
한 가지 여쭤보고 싶습니다
수식에서
For cnt = Index-var1 to Index-var2
{
if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then
Var5 = h[cnt];
}
이렇게 작성한 부분과
뒤에서 마지막 문단에
If VAR5 > 0 Then
{
PLOT35(VAR5,"INTER TL HH",Tomato);
plot35 로 연결이 되는데요
만약에 cnt = index-var1 to index-var2 가 3개 미만인 구간은 무시하고 var5 를 plot 하고 싶습니다
그리고 다른 경우로 cnt 가 3개 미만일때는 magenta 로 표현하는 방법도 알고 싶습니다
아래는 수식 전체입니다
input : n(20);
var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0);
var : txx(0),TXper1(0);
var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0);
var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(0),TLH5(0), TLL(0),TLL1(0),TLL2(0),TLL3(0),TLL4(0),TLL5(0);
if CountIf(H >= L*1.08,n) >= 2 Then
{
hh = 0;
hb = 0;
ll = 0;
lb = 0;
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
}
if (hB < lB AND ll *1.13 <H and (hh != Var3 and ll != Var4) ) OR
(hB > lB AND LL>H*0.70 and (hh != Var3 and ll != Var4) ) Then
{
hd = sDate[hb];
ht = sTime[hb];
hv = hh;
hd1 = hd[1];
ht1 = ht[1];
hv1 = hv[1];
if hv1 > 0 Then
{
TLH1 = TLH[1];
TLH2 = TLH1[1];
TLH3 = TLH2[1];
TLH4 = TLH3[1];
TLH5= TLH4[1];
TL_SetExtRight(TLH5,False);
TLH = TL_new(hd1,ht1,hv1,hd,ht,hv);
TL_SetExtRight(TLH,True);
IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN
TL_SetColoR(TLH,LightGreen);
}
LD = sDatE[LB];
LT = sTimE[LB];
LV = LL;
LD1 = LD[1];
LT1 = LT[1];
LV1 = LV[1];
IF LV1 > 0 TheN
{
TLL1 = TLL[1];
TLL2 = TLL1[1];
TLL3 = TLL2[1];
TLL4 = TLL3[1];
TLL5= TLL4[1];
TL_SetExtRighT(TLL5,FalsE);
TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV);
TL_SetExtRighT(TLL,TRUE);
TL_SetColoR(TLL,Yellow);
}
VAR3 = hh;
VAR4 = ll;
VAR1 = Index[lb];
VAR2 = VAR1[1];
if VAR2 > 0 Then
{
VAR5 = 0;
For cnt = Index-var1 to Index-var2
{
if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then
Var5 = h[cnt];
}
}
if var1 >= Var2 Then
{
TL = TL_New(sDate[lb],sTime[lb],ll,sDate[hb],sTime[hb],hh);
TL_SetDrawMode(tl,1); TL_SetColoR(TL,Cyan);
TXper= text_new(sDate[lb],sTime[lb],ll,"★");
Text_SetStyle(txper,2,0);
Text_SetSizE(TXPER,18);
Text_SetColor(txper,MagentA);
TXpaa= text_new(sDate[HB],sTime[HB],HH,"★");
Text_SetStyle(TXPAA,2,0);
Text_SetSizE(TXPAA,15);
Text_SetColor(tXPAA,LightGreen);
}
}
}
if lb > hb Then
{
TL_SetColor(TL,LIGHTReD);
TL_SetStyle(tl,2);
TL_SetDrawMode(tl,1);
}
Else
{
TL_SetColor(TL,LightBlue);
TL_SetStyle(tl,2);
}
if (abs(hb-lb) <= 9) Then
{
TL_SetColor(tl,LightGreen);
TL_SetStyle(tl,3);
}
If VAR5 > 0 Then
{
PLOT35(VAR5,"INTER TL HH",Tomato);
IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN);
}
2024-09-19
709
글번호 183534
지표
답변완료
두가지 조건에 만족하는 조건검색식 부탁드립니다. 항상 수고에 감사드립니다.
1
VAR : A(0),A1(False),A2(False),A3(0),PL(False);
PL=
L[5] < L[9] &&
L[5] < L[8] &&
L[5] < L[7] &&
L[5] < L[6] &&
L[5] < L[4] &&
L[5] < L[3] &&
L[5] < L[2] &&
L[5] < L[1] &&
L[5] < L[0];
IF PL==TRUE TheN A=L[5];
A1=A[1]<A;
A2=MA(c,224)<C;
IF A1=TRUE && A2==TRUE TheN A3=A;
IF CROSSUP(C, A3) TheN
Find(1);
=======================================
2
INPUT : period(20),기간1(12),기간2(5),기간3(5);
VAR : A(0),B(0),GB(0),GS(0),SS(0),AA(0);
A=(C - lowest(C, period))/C*100;
GB=max(A, 0);
B=(highest(C, period) -C)/C*100;
GS=max(B, 0);
SS=AccumN(C-lowest(L,기간1),기간2)
/AccumN((highest(H,기간1)-lowest(L,기간1)),기간2)* 100; //스토케스틱 슬로우 본선
AA=EmA(SS, 기간3); //스토케스틱 시그널선
IF CROSSUP(GB, GS) && C>O && SS[1]<=20 && (CROSSUP(SS,AA) OR CROSSUP(SS,20)) TheN
Find(1);
2024-09-19
583
글번호 183533
종목검색