답변완료
수식 부탁드립니다
Input : Period(20), MultiD(2);
var : BBup(0),BBdn(0);
BBup = BollBandUp(Period,MultiD);
BBdn = BollBandDown(Period,MultiD);
1. 현재 가격이 BBdn 맞닿은후 3틱 상승시 매수.
2. 현재 가격이 BBdn 이격도 103 상승돌파시점 즉시매수.
3. 현재 가격이 BBup 이격도 97이상 103이하에서 고점대비 5틱 하락시 매수청산.
4. 현재 가격이 BBdn 맞닿은후 5% 하락시 stoploss.
5. 2번 매수진입에대하여 5틱 하락시 매수청산.
6. 청산시점
현재 가격이 BBdn 맞닿은후 3틱 상승한때 매수진입,
매수진입 시점의 BBup 가격기준으로 3틱 하락시 매수청산되도록
작성 부탁드립니다.
재진입 시점
매수진입 시점의 BBup 가격기준으로 3틱 하락시 매수청산된후
청산 시점에서 6틱 상승한경우 매수(재진입) 하도록
작성 부탁드립니다.
( data1, data2를 사용 하여 매매할경우)
7. data2 BBdn 맞닿은후 3틱 상승시 data1 현재가격으로 매수진입.
8. data2 BBdn 이격도100(data2 가격이 BBdn 맞닿은 경우) data1 현재가격으로 매수진입.
감사합니다.
2023-01-02
872
글번호 165020
시스템
답변완료
부탁 드립니다
도움에 감사 드립니다.
80149에서 질문 답을 그대로 옮겨 온 것입니다.
월요일이 화요일이 공휴일이면 그 다음날에 수직선을 긋고 싶은데요....
수식은 기억나지 않지만.....예전에..답변중에 데이터가 없으면
!!가 2개 들어가는 식으로 해결 한것을 어렴풋이 기억 합니다.
그런 방법으로 안되는지요?
안녕하세요
예스스탁입니다.
문의하신 내용은 가능하지 않습니다.
차트에 적용되는 모든 수식은 봉기준으로 출력이 됩니다.
공휴일이라 봉이 없으면 출력할 수 없습니다.
즐거운 하루되세요
> yes 님이 쓴 글입니다.
> 제목 : 부탁 드립니다
> 도움에 감사 드립니다.
주간 즉 월요일이(26일)시작되는일이 공휴일인 경우에도
수직선이 그어질수 있는지요?
var:tl51(0);
if DayOfWeek(bdate) == 1 and bdate != bdate[1] Then{
tl51=TL_New(sdate[5],stime[5],9999999,sdate[5],stime[5],0);
TL_SetColor(tl51,white);
TL_SetSize(tl51,1);}
2023-01-02
721
글번호 165019
지표
답변완료
수식 부탁드립니다
var1 = ma(C,20);
if MarketPosition == 0 and CrossUp(c,var1) Then
Buy("b",OnClose,DEf,1);
if MarketPosition == 1 Then
{
ExitLong("Bp",AtLimit,EntryPrice+PriceScale*30);
Sell("bs",AtStop,EntryPrice-PriceScale*30,MaxContracts*2);
}
if MarketPosition == -1 Then
{
ExitShort("Sp",AtLimit,EntryPrice-PriceScale*30);
Buy("sb",AtStop,EntryPrice+PriceScale*30,MaxContracts*2);
}
안녕하세요
이평선 넘어가면 30틱 이익나면 끝내고 30틱 손실나면 계속 늘리는
식인데 진입후 바로 이익 손실이나면 다음 봉에서 실행되는 데
해결 방법 없을까요?
2023-01-02
856
글번호 165018
시스템
답변완료
수정부탁드립니다
수정ㅂ부탁드립니다. 표시가안되네요
input: ATRLength9(100), ATRMult9(0.5);
vars: ATR9(0), avg9(0), dn9(0), up9(0), trend9(1), flag9(0), flagh9(0), qqq9(0),trTx(0);
ATR9 = ATR(ATRLength9) * ATRMult9;
avg9 = (highest(H,1)+lowest(L,1))/2;
up9 = avg9 + ATR9;
dn9 = avg9 - ATR9;
if close > up9[1] then trend9 = 1;
else if close < dn9[1] then trend9 = -1;
if trend9 < 0 and trend9[1] > 0 then flag9 = 1; else flag9 = 0;
if trend9 > 0 and trend9[1] < 0 then flagh9 = 1; else flagh9 = 0;
if trend9 > 0 and dn9 < dn9[1] then dn9 = dn9[1];
if trend9 < 0 and up9 > up9[1] then up9 = up9[1];
if flag9 == 1 then up9 = avg9 + ATR9;
if flagh9 == 1 then dn9 = avg9 - ATR9;
if trend9 == 1 then qqq9 = up9;
{
Text_Delete(trtx);
trTx = Text_New(sDate,sTime,var1-PriceScale*2," ▲");
Text_SetColor(trTx,Red);
Text_SetStyle(trTx,2,0);
Text_SetSize(trTx,20);
}
if trend9 == -1 then qqq9 = dn9;
{
Text_Delete(trtx);
trTx = Text_New(sDate,sTime,var1+PriceScale*2," ▼");
Text_SetColor(trTx,Blue);
Text_SetStyle(trTx,2,1);
Text_SetSize(trTx,20);
}
2023-01-02
948
글번호 164999
지표
답변완료
수정부탁드립니다
input: ATRLength9(100), ATRMult9(10);
vars: ATR9(0), avg9(0), dn9(0), up9(0), trend9(1), flag9(0), flagh9(0), qqq9(0),trTx(0);
ATR9 = ATR(ATRLength9) * ATRMult9;
avg9 = (highest(H,1)+lowest(L,1))/2;
up9 = avg9 + ATR9;
dn9 = avg9 - ATR9;
if close > up9[1] then trend9 = 1;
else if close < dn9[1] then trend9 = -1;
if trend9 < 0 and trend9[1] > 0 then flag9 = 1; else flag9 = 0;
if trend9 > 0 and trend9[1] < 0 then flagh9 = 1; else flagh9 = 0;
if trend9 > 0 and dn9 < dn9[1] then dn9 = dn9[1];
if trend9 < 0 and up9 > up9[1] then up9 = up9[1];
if flag9 == 1 then up9 = avg9 + ATR9;
if flagh9 == 1 then dn9 = avg9 - ATR9;
if trend9 == 1 then qqq9 = up9;
{
Text_Delete(trtx);
trTx = Text_New(sDate,sTime,var1-PriceScale*2," ▲");
Text_SetColor(trTx,Red);
Text_SetStyle(trTx,2,0);
Text_SetSize(trTx,20);
}
if trend9 == -1 then qqq9 = dn9;
{
Text_Delete(trtx);
trTx = Text_New(sDate,sTime,var1+PriceScale*2," ▼");
Text_SetColor(trTx,Blue);
Text_SetStyle(trTx,2,1);
Text_SetSize(trTx,20);
}
2023-01-02
1161
글번호 164998
지표
답변완료
수식 문의
.일전에 도움 주신 수식을 다음과 같이 수정하고 싶습니다.
아래의 수식은
진입 시그널이 발생한 캔들의 기준,
N봉의 고/저가에 +_n틱을 더해 레인지를 설정하고
해당 레인지 안에 들어오는 추가 진입 시그널을 걸러내고
손실보는 방향으로 벗어나면 손절대신 햇지로 반대시그널를 추가하는 로직입니다.
위와 같이, 진입 시그널과 / 헷지 시그널을 구분하여 볼 때,
수정 요청 :
ㄱ. 해당 레인지 안에서 반대포지션의 '진입시그널'은 허용합니다.
(ex : 매수시그널로 만들어진 레인지 안에서 추가 매수 시그널은 걸러내되 매도 진입 시그널은 발생시킴)
ㄴ. 매수진입 후 - 햇지매도 시그널이 발생한 상태라면 매도진입 시그널은 걸러내지 않고 발생시킵니다.
그 반대도 마찬가지.
(이렇게 되면 레인지 안에서 등락하여 매수-헷지-매도-헷지가 반복되더라도
해당 레인지 안에서의 총 진입 횟수는 4회를 넘지 않을 것입니다)
ㄷ. 청산로직 추가 :
현재 포지션이 '진입시그널'일 때 -
설정된 레인지값 * 1 이상 수익나면 모두 청산합니다.
현재 포지션이 '헷지 시그널' 일 때 -
설정된 레인지 값 * 1.5 이상 수익 나면 모두 청산합니다.
끝.
지표나 차트의 조건값이 아닌
포지션 변화에 따라 시그널을 구분해서 조건을 다르게 하는게 꽤 어렵네요.
부탁 좀 드리겠습니다.
새해 복많이 받으시고,
되시는 일 항상 잘 되시기 바랍니다.
감사합니다.
======= 아래 ===========
Input : Vector(9), Period(14), 매수선(40), 매도선(60);
input : 저가봉(5),고가봉(5),저가폭(10),고가폭(10);
Input : shortPeriod(12), longPeriod(26);
Var : rsi_(0), rsi_signal(0) ;
var : ll(0),hh(0),eh(0),el(0),BuyEntry(False),SellEntry(False);
Var : MACDv(0), MACDsig(0), macdosc(0);
rsi_ = RSI(Period);
rsi_signal = MA(RSI(Period), Vector);
MACDv = Data2(MACD(shortPeriod, longPeriod));
//MACDsig = Data2(ema(MACDv,Period));
MACDsig = Data2(ema(Data2(MACD(shortPeriod, longPeriod)),Period));
//macdosc = Data2(MACDv-ema(MACDv,Period));
macdosc = Data2(Data2(MACD(shortPeriod, longPeriod))-ema(Data2(MACD(shortPeriod, longPeriod)),Period));
ll = lowest(l,저가봉);
hh = highest(h,고가봉);
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*저가폭 and C < HH[BarsSinceEntry(1)]+PriceScale*고가폭) Then
BuyEntry = False;
if MarketPosition(1) == -1 and (C > ll[BarsSinceEntry(1)]-PriceScale*저가폭 and C < HH[BarsSinceEntry(1)]+PriceScale*고가폭) Then
SellEntry = False;
}
else
{
if MarketPosition == 1 and C > el-PriceScale*저가폭 and C < eh+PriceScale*고가폭 Then
BuyEntry = false;
if MarketPosition == -1 and C > el-PriceScale*저가폭 and C < eh+PriceScale*고가폭 Then
SellEntry = false;
}
if macdosc > 0 && rsi_signal < 매수선 && rsi_ > rsi_signal && rsi_[1] < rsi_signal[1] Then
{
if BuyEntry == true Then
Buy("B");
}
if macdosc > 0 && rsi_signal < 매수선 && rsi_[1] < 30 && rsi_ > 30 Then
{
Buy("1");
}
else if macdosc < 0 && rsi_signal > 매도선 && rsi_[1] > 70 && rsi_ < 70 Then
{
Sell("2");
}
if macdosc < 0 && rsi_signal > 매도선 && rsi_ < rsi_signal && rsi_[1] > rsi_signal[1] Then
{
if SellEntry == true Then
Sell("S");
}
if MarketPosition == 1 Then
Sell("bx",AtStop,ll[BarsSinceEntry]-PriceScale*저가폭);
if MarketPosition == -1 Then
BUY("sx",AtStop,hh[BarsSinceEntry]+PriceScale*고가폭);
2023-01-02
882
글번호 164988
시스템