답변완료
당일 첫봉 진입 재질문 합니다!
알려주신 내용을 확인해보고 적용을 시켜봤는데 잘 안됩니다 ^^;; 알려주신 수식을 어디에 추가를 해야되나요? 아니면 알려주신 수식을 추가하지 않고 최초 진입 조건식을 수정하는 방법은 없을까요?
IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then {
IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1);
IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1);
}
# 매수 피라미딩
IF MarketPosition == 1 AND STIME <153000 and IsEntryName("L1")==True THEN {
if highest(h,BarsSinceEntry) <= L2 Then
buy("L2",ATSTOP,L2,LUNIT2);
if highest(h,BarsSinceEntry) <= L1 + LTR Then
buy("L3",ATSTOP, L3,LUNIT2);
}
# 매수청산
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LS",AtStop,LatestEntryPrice - LTR);
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
# 매도 피라미딩
IF MarketPosition == -1 AND STIME < 153000 AND IsEntryName("S1") == True THEN {
IF Lowest(L,BarsSinceEntry) >= S2 Then
SELL("S2",AtStop,S2,SUNIT2);
IF Lowest(L,BarsSinceEntry) >= S1 - STR Then
SELL("S3",AtStop,S3,SUNIT2);
}
# 매도청산
IF MarketPosition == -1 then {
IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR);
SetStopEndofday();
}
ELSE SetStopEndofday(0); #해제
# 재진입
IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then {
IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1);
IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1);
}
IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN {
IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2);
IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2);
}
IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then {
IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2);
IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2);
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 당일 첫봉에서 진입이 안됩니다, 그리고 계좌예수금에 따라 베팅사이즈를 조절
> 안녕하세요
예스스탁입니다.
1
작성하신 수식에는 첫봉에 신호가 발생할수 있는 내용이 없습니다.
각 진입에 NextBarSdate == sDate라는 조건이 있습니다.
다음봉 시가의 날짜와 완성봉의 날짜가 같다라는 조건으로
첫봉이 완성이 되어야 atstop으로 진입이 조건이 충족되고
가격을 셋팅하면 그 다음봉에 신호가 발생합니다.
그러므로 당일 두번째 봉부터 신호가 나올수 있습니다.
첫봉에 신호가 발생할수 있는 내용을 추가하셔야 합니다.
#오늘 마지막봉이 완성되면
#다음봉시가(다음날시가)+LTR 이상의 시세가 첫봉에서 발생하면 매수
#다음봉시가(다음날시가)-STR 이하의 시세가 첫봉에서 발생하면 매도
IF MarketPosition == 0 AND NextBarSdate != sdate Then
{
BUY("L11",ATSTOP,NextBarOpen+LTR,LUNIT1);
SELL("S11",ATSTOP,NExtBarOpen-STR,SUNIT1);
}
LTR,STR,LUNIT1,SUNIT1변수가 0값입니다.
계산식 추가하시기 바랍니다.
2
예수금 부분은 %값을 다르게 지정하셔야 합니다.
1.5%와 같이 외부변수 지정이 되지 않습니다.
0.015로 지정하시면 됩니다.
랭귀지에서 실제 잔고값을 사용시 유의하시기 바랍니다.
차트에 과거봉에는 값이 없습니다.
즐거운 하루되세요
> 엠씨용가 님이 쓴 글입니다.
> 제목 : 당일 첫봉에서 진입이 안됩니다, 그리고 계좌예수금에 따라 베팅사이즈를 조절
> 안녕하세요 ^^
1) 아래와 같은 수식을 사용할 경우 당일 첫봉에서 매수/매도 진입이 전혀 되지 않습니다. 어떻게 해야될까요?
2) 계좌 예수금에 따라 베팅사이즈를 조절하려면 아래와 같이 수식을 적으면 될까요? (모의투자)
input : n(3),risk(1.5%),rt(0.17),MUL(50000);
var : noise(0),sum(0),cnt(0),
RANGE(0),LTR(0),STR(0),
L1(0),L2(0),L3(0),S1(0), S2(0),S3(0),
NL1(0), NL2(0),NL3(0), NS1(0), NS2(0), NS3(0),
VL(0),Lunit(0),LUNIT1(0),LUNIT2(0),SUNIT(0), SUNIT1(0), SUNIT2(0),
Accoundnum(""),value(0);
accoundnum = GetAccount(0);
value = GetUnclearedDeposits(accoundnum);
VL = value / (dayclose(1) * MUL * rt);
LUNIT = INT((value * RISK) / (LTR * MUL));
SUNIT = INT((value * RISK) / (STR * MUL));
# ENTRY
L1 = DAYOPEN + LTR ;
L2 = L1 + (LTR * 0.5);
L3 = L1 + LTR;
S1 = DAYOPEN - STR;
S2 = S1 - (STR * 0.5);
S3 = S1 - STR;
NL1 = LatestExitPrice(1)+LTR;
NL2 = NL1 + LTR * 0.5;
NL3 = NL1 + LTR;
NS1 = LatestExitPrice(1)-STR;
NS2 = NS1 - STR * 0.5;
NS3 = NS1 - Str;
IF MarketPosition == 0 AND BDATE != EXITDATE(1) Then {
IF H <= L1 AND NEXTBARSDATE == SDATE Then BUY("L1",ATSTOP,L1,LUNIT1);
IF L >= S1 AND NextBarSdate == SDATE THEN SELL("S1",ATSTOP,S1,SUNIT1);
}
# 매수 피라미딩
IF MarketPosition == 1 AND STIME <153000 and IsEntryName("L1")==True THEN {
if highest(h,BarsSinceEntry) <= L2 Then
buy("L2",ATSTOP,L2,LUNIT2);
if highest(h,BarsSinceEntry) <= L1 + LTR Then
buy("L3",ATSTOP, L3,LUNIT2);
}
# 매수청산
IF MarketPosition == 1 then {
if NextBarSdate == SDATE Then
ExitLong("LS",AtStop,LatestEntryPrice - LTR);
IF NextBarSdate != SDATE Then
ExitLong("EL",ATMARKET);
}
# 매도 피라미딩
IF MarketPosition == -1 AND STIME < 153000 AND IsEntryName("S1") == True THEN {
IF Lowest(L,BarsSinceEntry) >= S2 Then
SELL("S2",AtStop,S2,SUNIT2);
IF Lowest(L,BarsSinceEntry) >= S1 - STR Then
SELL("S3",AtStop,S3,SUNIT2);
}
# 매도청산
IF MarketPosition == -1 then {
IF NextBarSdate == SDATE Then EXITSHORT("SS",AtStop,LatestEntryPrice + STR);
SetStopEndofday(1545);
}
ELSE SetStopEndofday(0); #해제
# 재진입
IF MarketPosition == 0 AND BDATE == EXITDATE(1) Then {
IF MarketPosition(1) == 1 AND H <= NL1 AND NextBarSdate == sDate AND IsExitName("LS",1) == TRUE THEN BUY("NL1",ATSTOP,NL1,LUNIT1);
IF MarketPosition(1) == -1 AND L >= NS1 AND NextBarSdate == SDATE THEN SELL("NS1",ATSTOP,NS1,SUNIT1);
}
IF BDATE == EXITDATE(1) AND MarketPosition == 1 AND IsEntryName("NL1") == TRUE THEN {
IF LatestEntryName == "NL1" AND Highest(H,BarsSinceEntry) <= NL2 THEN BUY("NL2",ATSTOP,NL2,LUNIT2);
IF LatestEntryName == "NL2" AND HIGHEST(H,BarsSinceEntry) <= NL3 THEN BUY("NL3",ATSTOP,NL3,LUNIT2);
}
IF BDATE == ExitDate(1) AND MarketPosition == -1 AND IsEntryName("NS1") == TRUE Then {
IF LatestEntryName == "NS1" AND Lowest(L,BarsSinceEntry) >= NS2 THEN SELL("NS2",ATSTOP,NS2,SUNIT2);
IF LatestEntryName == "NS2" AND Lowest(L,BarsSinceEntry) >= NS3 THEN SELL("NS3",ATSTOP,NS2,SUNIT2);
}
2020-06-08
2078
글번호 139658
시스템
답변완료
문의드립니다.
아래수식을 예스수식으로 부탁드립니다.
// INPUTS {
Range_Length = input(20, title="Range Length", minval=1)
Display_Bars = input(true, title="Show Bar Colors")
Display_ST = input(true, title="Show Trend")
Display_Channel = input(true, title="Show Channel")
// }
// SETTINGS {
Highest_H = Display_Channel ? highest(high, Range_Length) : na
Lowest_L = Display_Channel ? lowest(low, Range_Length) : na
Highest_C = highest(close, Range_Length)
Lowest_C = lowest(close, Range_Length)
Up = float(na), Up := close > Lowest_C ? min(Highest_C, Highest_C[1]) : na
Dn = float(na), Dn := close < Highest_C ? max(Lowest_C, Lowest_C[1]) : na
ST = float(na), ST := close > Up ? 1 : close < Dn ? -1 : nz(ST[1])
Super_Trend = ST == 1 ? Lowest_C : Highest_C
Bar_Color = Display_Bars ? (ST == 1 ? (close > open ? #4caf50 : #800080) : (close > open ? #2a2e39 : #b71c1c)) : na
// }
// PLOT {
plot(Display_ST ? Super_Trend : na, title="Super Trend",color=color.new(#000000, 0), linewidth=4)
Highest_High = plot(Highest_H, title="Highest High", color=color.new(#000000, 0), display=display.none, editable=false)
Highest_Close = plot(Highest_C, title="Highest Close", color=color.new(#000000, 0), display=display.none, editable=false)
Lowest_Close = plot(Lowest_C, title="Lowest Close", color=color.new(#000000, 0), display=display.none, editable=false)
Lowest_Low = plot(Lowest_L, title="Lowest Low", color=color.new(#000000, 0), display=display.none, editable=false)
fill(Highest_Close, Highest_High, title="Range High", color=color.new(#000000, 60))
fill(Lowest_Low, Lowest_Close, title="Range Low", color=color.new(#000000, 60))
fill(Highest_High, Lowest_Low, title="Full Range", color=color.new(#42a5f5, 90))
barcolor(Bar_Color, title="Bar Colors")
// }
2020-06-08
2306
글번호 139640
지표
답변완료
문의
항상 친절한 답변 감사드립니다.
아래식을 데이타2에 적용하게 부탁드립니다
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),
Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],
sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)
+NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],
sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)
+NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 2, 0);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,BLACK);
2020-06-08
2153
글번호 139630
지표