예스스탁
예스스탁 답변
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);
즐거운 하루되세요
확인 부탁드립니다.
항상 친절한 답변 감사드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : 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();
}