예스스탁
예스스탁 답변
2023-09-21 13:56:30
안녕하세요
예스스탁입니다.
var : b(0),s(0);
var1 = ma(c,100);
if Bdate != Bdate[1] Then
{
b = 0;
s = 0;
value1 = var1;
}
if DayIndex < 7 Then
{
Var2 = DayHigh;
Var3 = DayLow;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
b = b+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
s = s+1;
if DayOpen < DayClose(1) and value1 > DayOpen Then
{
if MarketPosition >= 0 and s < 1 and DayIndex >= 7 and CrossDown(C,Var3) Then
Sell("s1",AtMarket);
if MarketPosition <= 0 and b < 1 and s == 1 and CrossUp(C,Var2) Then
Buy("b2",AtMarket);
if MarketPosition == 1 and CrossDown(c,var1)and var1 < Var3 Then
ExitLong("Cx",AtMarket);
}
if DayOpen > DayClose(1) and value1 < DayOpen Then
{
if MarketPosition <= 0 and b < 1 and DayIndex >= 7 and CrossUp(C,Var2) Then
Buy("b1",AtMarket);
if MarketPosition >= 0 and s < 1 and b == 1 and CrossDown(C,Var3) Then
Sell("s2",AtMarket);
if MarketPosition == -1 and CrossUp(c,var1) and var1 > Var2 Then
ExitShort("Px",AtMarket);
}
SetStopEndofday(151900);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 83866번 재질문드립니다.
스크립트 검증 부탁드립니다.
작성주신 스크립트를 국내선물 1분봉에 적용해보면
9월 19일은, [1]은 나오나 [2]가 나오지 않습니다. 따라서 [3]으로도 연결이 안됩니다.
해당일은 DayOpen < DayClose(1) and value1 > DayOpen 이고
Var2 = DayHigh = 343.25, Var3 = DayLow = 342.70 입니다.
[1] 09:06에 CrossDown(c=342.65,var3=342.70)을 만족하므로 익봉 시가인 09:07에 342.60으로 "s1" 신호가 생성되어야 합니다.
[2] 그리고 09:27 완성봉 종가가 343.30이므로 CrossUp(c=343.30,var2=343.25)이 되어 익봉 시가인 09:28에 343.30으로 "b2" 신호가 나와야 합니다.
[3] 그리고 11:20에는 CrossDown(c=341.80, var1=341.86)이면서 (var1=341.86) < (var3 =342.70)을 만족하므로 익봉 시가인 11:21에 341.75로 "Cx" 신호가 나와야 합니다.
[4] 아울러 매수, 매도 신호가 최대 1번씩 총 2번이 나와서 당일 추가 신호는 없어야 합니다.
////////////글번호 83866번에서 작성주신 스크립트////////////
var : b(0),s(0);
var1 = ma(c,100);
if Bdate != Bdate[1] Then
{
b = 0;
s = 0;
value1 = var1;
}
if DayIndex < 7 Then
{
Var2 = DayHigh;
Var3 = DayLow;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
b = b+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
s = s+1;
if MarketPosition >= 0 and DayOpen < DayClose(1) and value1 > DayOpen Then
{
if s < 1 and DayIndex >= 7 and CrossDown(C,Var3) Then
Sell("s1",AtMarket);
if b < 1 and s == 1 and CrossUp(C,Var2) Then
Buy("b2",AtMarket);
if CrossDown(c,var1)and var1 < Var3 Then
ExitLong("Cx",AtMarket);
}
if MarketPosition <= 0 and DayOpen > DayClose(1) and value1 < DayOpen Then
{
if b < 1 and DayIndex >= 7 and CrossUp(C,Var2) Then
Buy("b1",AtMarket);
if s < 1 and b == 1 and CrossDown(C,Var3) Then
Sell("s2",AtMarket);
if CrossUp(c,var1) and var1 > Var2 Then
ExitShort("Px",AtMarket);
}
SetStopEndofday(151900);
////////////스크립트로 작성하고자는 전략////////////
1번 신호는 2번 신호보다 우선하여 나오게 하고 싶습니다.
즉 s1은 b2에 우선합니다. b1은 s2에 우선합니다.
s1이 발생하지 않았는데 b2가 먼저 나오게 하지 않게 하고자 합니다.
s1이 발생된 후에는 b2가 나올 수 있습니다.
b1이 발생하지 않았는데 s2가 먼저 나오게 하지 않게 하고자 합니다.
b1이 발생된 후에는 s2가 나올 수 있습니다.
당일 매수는 최대 1번, 매도도 1번, 도합 2번까지 진입이 가능하게 하고자 합니다.
1 .당일 시초가가 전일 종가대비 하락 출발하되 시초가 당시의 100ma > 시초가일 때
가) 당일 개장 후 7개봉의 고점과 저점을 잡고 저점 이탈시 익봉 시가에 매도(s1) 진입
나) 당일 개장 후 7개봉의 고점과 저점을 잡고 s1인 상태에서 고점 돌파시 익봉 시가에 매수(b2) 진입
다) 분봉의 종가가 100ma를 하향 이탈하되 당시 100ma가 당일 개장 후 7개봉 저점보다 작은 상태이면 b2 청산
2. 당일 시초가가 전일 종가대비 상승 출발하되 시초가 당시의 100ma < 시초가일 때
가) 당일 개장 후 7개봉의 고점과 저점을 잡고 고점 돌파시 익봉 시가에 매수(b1) 진입
나) 당일 개장 후 7개봉의 고점과 저점을 잡고 b1인 상태에서 저점 이탈시 익봉 시가에 매도(s2) 진입
다) 분봉의 종가가 100ma를 상향 돌파하되 당시 100ma가 당일 개장 후 7개봉 고점보다 큰 상태이면 s2 청산
3. 15시 19분 강제청산
*1번 신호는 2번 신호보다 우선하여 나오게 하고 싶습니다.
즉 s1은 b2에 우선합니다. b1은 s2에 우선합니다.
s1이 발생하지 않았는데 b2가 먼저 나오게 하지 않게 하고자 합니다.
s1이 발생된 후에는 b2가 나올 수 있습니다.
b1이 발생하지 않았는데 s2가 먼저 나오게 하지 않게 하고자 합니다.
b1이 발생된 후에는 s2가 나올 수 있습니다.
당일 매수는 최대 1번, 매도도 1번, 도합 2번까지 진입이 가능하게 하고자 합니다.