커뮤니티

수식 문의

프로필 이미지
부똘이
2022-12-27 13:39:24
1453
글번호 164881
답변완료
항상 친절한 답변에 감사드립니다. 아래의 수식에 조건을 추가하고 싶은데요, 조건 1 : 매수 신호가 나온 캔들을 기준으로 직전 n개봉 중 최저가를 찾고, 그 최저가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매수 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매수신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. 매도 신호는 그 반대로, 조건 1 : 매도 신호가 나온 캔들을 기준으로 직전 n개봉 중 최고가를 찾고, 그 최고가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매도 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매도신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. Input : Vector(14), Period(9), 매수선(50), 매도선(50); Var : rsi_(0), rsi_signal(0) ; rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { Buy(); } else if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { Sell(); }
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2022-12-27 15:34:51

안녕하세요 예스스탁입니다. Input : Vector(14), Period(9), 매수선(50), 매도선(50); input : n(10),n1(10); Var : rsi_(0), rsi_signal(0) ; var : ll(0),hh(0),eh(0),el(0),BuyEntry(False),SellEntry(False); rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); ll = lowest(l,n); hh = highest(h,n); if MarketPosition != 0 Then { if MarketPosition != MarketPosition[1] or CurrentContracts > CurrentContracts[1] Then { eh = hh; el = ll; } } BuyEntry = true; SellEntry = true; if MarketPosition == 0 Then { if MarketPosition(1) == 1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then BuyEntry = False; if MarketPosition(1) == -1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then SellEntry = False; } else { if MarketPosition == 1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then BuyEntry = false; if MarketPosition == -1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then SellEntry = false; } if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { if BuyEntry == true Then Buy(); } if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { if SellEntry == true Then Sell(); } if MarketPosition == 1 Then ExitLong("bx",AtStop,ll[BarsSinceEntry]-PriceScale*N1); if MarketPosition == -1 Then ExitShort("sx",AtStop,hh[BarsSinceEntry]+PriceScale*N1); 즐거운 하루되세요
프로필 이미지

부똘이

2022-12-27 15:28:16

확인 부탁드립니다. 항상 친절한 답변 감사드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 문의 > 안녕하세요 예스스탁입니다. r[0]~ r[6]은 올리신 식에서는 사용하지 않는 부분입니다. 불필요한 변수등은 모두 삭제했습니다. input : Period(120),선두께(0.05),N(30); Var:상승색(Magenta), 하락색(Cyan); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0); var : TL(0),TL1(0),tl2(0),tl3(0),TX(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0); Plot1(0); For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; } LoVal[0] = L; LoBar[0] = 0; date11 = date[HiBar[0]+N]; time11 = stime[HiBar[0]+N]; Value11 = HiVal[0]; date12 = date[LoBar[0]+N]; time12 = stime[LoBar[0]+N]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); TL_Delete(TL2); TL_Delete(TL3); TL2 = TL_New(date11,time11,Value11-1.0,NextBarSdate,NextBarStime,Value11-1.0); TL3 = TL_New(date11,time11,Value11-1.5,NextBarSdate,NextBarStime,Value11-1.5); date21 = date[HiBar[0]+N]; time21 = stime[HiBar[0]+N]; date22 = date[0]; time22 = stime[0]; Text_SetSize(tx,25); Text_SetColor(Tx,Red); Text_SetStyle(tx,1,1); Text_SetBold(tx,1); if abs(value12[1]-value11[1]) < 0.65 Then Text_Delete(tx); tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2)); Text_SetColor(Tx,Blue); Text_SetStyle(tx,1,1); Text_SetSize(tx,35); Text_SetBold(tx,1); } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; date12 = date[LoBar[0]+N]; time12 = stime[LoBar[0]+N]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); TL_SetBegin(Tl2,date11,time11,Value11-1.0); TL_SetBegin(Tl3,date11,time11,Value11-1.5); date22 = date[0]; time22 = stime[0]; Text_SetString(tx,NumToStr(value12-value11,2)); Text_SetLocation(tx,sDate,sTime,value12); } TL_SetEnd(TL2, NextBarSdate,NextBarStime,Value11-1.0); TL_SetEnd(TL3, NextBarSdate,NextBarStime,Value11-1.5); } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; } HiVal[0] = H; HiBar[0] = 0; date11 = date[LoBar[0]+N]; time11 = stime[LoBar[0]+N]; Value11 = LoVal[0]; date12 = date[HiBar[0]+N]; time12 = stime[HiBar[0]+N]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); TL_Delete(TL2); TL_Delete(TL3); TL2 = TL_New(date11,time11,Value11+1.0,NextBarSdate,NextBarStime,Value11+1.0); TL3 = TL_New(date11,time11,Value11+1.5,NextBarSdate,NextBarStime,Value11+1.5); date31 = date[LoBar[0]+N]; time31 = stime[LoBar[0]+N]; date32 = date[0]; time32 = stime[0]; Text_SetSize(tx,25); Text_SetColor(Tx,Blue); Text_SetStyle(tx,1,0); Text_SetBold(tx,1); if abs(value12[1]-value11[1]) < 0.65 Then Text_Delete(tx); tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2)); Text_SetColor(Tx,Red); Text_SetStyle(tx,1,1); Text_SetSize(tx,35); Text_SetBold(tx,1); } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; date12 = date[HiBar[0]+N]; time12 = stime[HiBar[0]+N]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); TL_SetBegin(Tl2,date11,time11,Value11+1.0); TL_SetBegin(Tl3,date11,time11,Value11+1.5); date32 = date[0]; time32 = stime[0]; Text_SetString(tx,NumToStr(value12-value11,2)); Text_SetLocation(tx,sDate,sTime,value12); } TL_SetEnd(TL2, NextBarSdate,NextBarStime,Value11+1.0); TL_SetEnd(TL3, NextBarSdate,NextBarStime,Value11+1.5); } TL_SetSize(TL1,선두께); 즐거운 하루되세요 > 부똘이 님이 쓴 글입니다. > 제목 : 수식 문의 > 항상 친절한 답변에 감사드립니다. 아래의 수식에 조건을 추가하고 싶은데요, 조건 1 : 매수 신호가 나온 캔들을 기준으로 직전 n개봉 중 최저가를 찾고, 그 최저가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매수 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매수신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. 매도 신호는 그 반대로, 조건 1 : 매도 신호가 나온 캔들을 기준으로 직전 n개봉 중 최고가를 찾고, 그 최고가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매도 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매도신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. Input : Vector(14), Period(9), 매수선(50), 매도선(50); Var : rsi_(0), rsi_signal(0) ; rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { Buy(); } else if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { Sell(); }
프로필 이미지

예스스탁 예스스탁 답변

2022-12-27 15:45:27

안녕하세요 예스스탁입니다. 죄송합니다. 복사가 잘못되었습니다. 아래식 참고하시기 바랍니다. Input : Vector(14), Period(9), 매수선(50), 매도선(50); input : n(10),n1(10); Var : rsi_(0), rsi_signal(0) ; var : ll(0),hh(0),eh(0),el(0),BuyEntry(False),SellEntry(False); rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); ll = lowest(l,n); hh = highest(h,n); if MarketPosition != 0 Then { if MarketPosition != MarketPosition[1] or CurrentContracts > CurrentContracts[1] Then { eh = hh; el = ll; } } BuyEntry = true; SellEntry = true; if MarketPosition == 0 Then { if MarketPosition(1) == 1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then BuyEntry = False; if MarketPosition(1) == -1 and (C > ll[BarsSinceEntry(1)]-PriceScale*n1 and C < HH[BarsSinceEntry(1)]+PriceScale*n1) Then SellEntry = False; } else { if MarketPosition == 1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then BuyEntry = false; if MarketPosition == -1 and C > el-PriceScale*n1 and C < eh+PriceScale*n1 Then SellEntry = false; } if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { if BuyEntry == true Then Buy(); } if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { if SellEntry == true Then Sell(); } if MarketPosition == 1 Then ExitLong("bx",AtStop,ll[BarsSinceEntry]-PriceScale*N1); if MarketPosition == -1 Then ExitShort("sx",AtStop,hh[BarsSinceEntry]+PriceScale*N1); 즐거운 하루되세요 > 부똘이 님이 쓴 글입니다. > 제목 : 전혀 다른 수식을 주셨습니다. > 확인 부탁드립니다. 항상 친절한 답변 감사드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 문의 > 안녕하세요 예스스탁입니다. r[0]~ r[6]은 올리신 식에서는 사용하지 않는 부분입니다. 불필요한 변수등은 모두 삭제했습니다. input : Period(120),선두께(0.05),N(30); Var:상승색(Magenta), 하락색(Cyan); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0); var : TL(0),TL1(0),tl2(0),tl3(0),TX(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0); Plot1(0); For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; } LoVal[0] = L; LoBar[0] = 0; date11 = date[HiBar[0]+N]; time11 = stime[HiBar[0]+N]; Value11 = HiVal[0]; date12 = date[LoBar[0]+N]; time12 = stime[LoBar[0]+N]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); TL_Delete(TL2); TL_Delete(TL3); TL2 = TL_New(date11,time11,Value11-1.0,NextBarSdate,NextBarStime,Value11-1.0); TL3 = TL_New(date11,time11,Value11-1.5,NextBarSdate,NextBarStime,Value11-1.5); date21 = date[HiBar[0]+N]; time21 = stime[HiBar[0]+N]; date22 = date[0]; time22 = stime[0]; Text_SetSize(tx,25); Text_SetColor(Tx,Red); Text_SetStyle(tx,1,1); Text_SetBold(tx,1); if abs(value12[1]-value11[1]) < 0.65 Then Text_Delete(tx); tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2)); Text_SetColor(Tx,Blue); Text_SetStyle(tx,1,1); Text_SetSize(tx,35); Text_SetBold(tx,1); } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; date12 = date[LoBar[0]+N]; time12 = stime[LoBar[0]+N]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); TL_SetBegin(Tl2,date11,time11,Value11-1.0); TL_SetBegin(Tl3,date11,time11,Value11-1.5); date22 = date[0]; time22 = stime[0]; Text_SetString(tx,NumToStr(value12-value11,2)); Text_SetLocation(tx,sDate,sTime,value12); } TL_SetEnd(TL2, NextBarSdate,NextBarStime,Value11-1.0); TL_SetEnd(TL3, NextBarSdate,NextBarStime,Value11-1.5); } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; } HiVal[0] = H; HiBar[0] = 0; date11 = date[LoBar[0]+N]; time11 = stime[LoBar[0]+N]; Value11 = LoVal[0]; date12 = date[HiBar[0]+N]; time12 = stime[HiBar[0]+N]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); TL_Delete(TL2); TL_Delete(TL3); TL2 = TL_New(date11,time11,Value11+1.0,NextBarSdate,NextBarStime,Value11+1.0); TL3 = TL_New(date11,time11,Value11+1.5,NextBarSdate,NextBarStime,Value11+1.5); date31 = date[LoBar[0]+N]; time31 = stime[LoBar[0]+N]; date32 = date[0]; time32 = stime[0]; Text_SetSize(tx,25); Text_SetColor(Tx,Blue); Text_SetStyle(tx,1,0); Text_SetBold(tx,1); if abs(value12[1]-value11[1]) < 0.65 Then Text_Delete(tx); tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2)); Text_SetColor(Tx,Red); Text_SetStyle(tx,1,1); Text_SetSize(tx,35); Text_SetBold(tx,1); } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; date12 = date[HiBar[0]+N]; time12 = stime[HiBar[0]+N]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); TL_SetBegin(Tl2,date11,time11,Value11+1.0); TL_SetBegin(Tl3,date11,time11,Value11+1.5); date32 = date[0]; time32 = stime[0]; Text_SetString(tx,NumToStr(value12-value11,2)); Text_SetLocation(tx,sDate,sTime,value12); } TL_SetEnd(TL2, NextBarSdate,NextBarStime,Value11+1.0); TL_SetEnd(TL3, NextBarSdate,NextBarStime,Value11+1.5); } TL_SetSize(TL1,선두께); 즐거운 하루되세요 > 부똘이 님이 쓴 글입니다. > 제목 : 수식 문의 > 항상 친절한 답변에 감사드립니다. 아래의 수식에 조건을 추가하고 싶은데요, 조건 1 : 매수 신호가 나온 캔들을 기준으로 직전 n개봉 중 최저가를 찾고, 그 최저가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매수 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매수신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. 매도 신호는 그 반대로, 조건 1 : 매도 신호가 나온 캔들을 기준으로 직전 n개봉 중 최고가를 찾고, 그 최고가에서 -n1틱이 빠지면 손절합니다. 조건 2 : 연속된 추가 매도 신호가 발생시, (직전 손절한 신호도 포함) 그 값이 직전 매도신호가 나온 캔들을 기준으로 (직전 n개봉 중 최저가 - n1틱) 보다 높거나 (직전 n개봉 중 최고가 + n1틱) 보다 낮으면, 그 신호는 무시 합니다. Input : Vector(14), Period(9), 매수선(50), 매도선(50); Var : rsi_(0), rsi_signal(0) ; rsi_ = RSI(Period); rsi_signal = MA(RSI(Period), Vector); if rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then { Buy(); } else if rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then { Sell(); }