커뮤니티
문의드립니다.
2015-07-16 09:47:34
111
글번호 88485
안녕하세요.
다음식을 해외선물(crude oil)용으로 전환 부탁드립니다.
추가로 역매매전략 전환포함
그리고 매매횟수를 (기존수식과 역매매구분)외부변수로처리로부탁드립니다
아래와 같이 지표작성하여 식을 적용하여보니 신호위치오류가발생합니다
현식에서 어떤부분이 매매횟수를 제어하나요?
감사합니다
===================================================
input : len(3.2), n(20),method(2);
var: cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0),CC[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
CC[0] = C;
for cnt = 1 to 9{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] then
HH[0] = H;
if L < LL[0] then
LL[0] = L;
if C < CC[0] then
CC[0] = C;
if method == 1 then {
var1 = (HH[1]+LL[1]+CC[1])/3; //피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
Else {
var1 = (HH[1]+LL[1]+CC[1]+OO[1])/4; //당일시가추가피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
##1번
if var4 > OO[0] and OO[0] > var5 then { //시초가가 1차지지와 2차지지 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> entrydate(1) Then { //당일 진입한 적이 없으면
buy("매수1", atstop, var4); //1차 지지선 상향도달시 매수
sell("매도1",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##2번
if var1 > OO[0] and OO[0] >= var4 then { //시초가가 피봇보다 작고 1차지지보다 클 경우
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수2", atstop, var1); //피봇선 상향 도달시 매수
sell("매도2",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##3번
if var2 > OO[0] and OO[0] >= var1 then { //시초가가 1차저항과 피봇 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수3", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도3",atstop, var1); //피봇선 하향도달시 매도
}
}
##4번
if var3 > OO[0] and OO[0] >= var2 then { //시초가가 2차저항과 1차저항 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수4", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도4",atstop, var2); //1차 저항선 하향도달시 매도
}
}
##5번
if OO[0] >= var3 then { //시초가가 2차 저항선 위에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수5", atstop, OO[0]+(var3-var2)); //시초가+(2차저항-1차저항)의 폭을 상향도달시 매수
sell("매도5",atstop, var3); //2차 저항선 하향도달시 매도
}
}
##6번
if OO[0] <= var5 then {//시초가가 2차 지지선 아래에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수6", atstop, var5); //2차 지지선 상향 도달시 매수
sell("매도6",atstop, OO[0]-(var5-var4)); //시초가-(1차지지-2차지지)의 폭을 하향도달시 매도
}
}
if MarketPosition <> 0 then { //ATR Trailing stop
exitlong("매수청산", atstop, highest(H,BarsSinceEntry+1)-atr(n)*len);
exitshort("매도청산", atstop, lowest(L,BarsSinceEntry+1)+atr(n)*len);
}
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
아래역매매수식추가하여주세요
if date<>date[1] Then
var50 = CurrentEntryNum;
if MarketPosition == 0 Then
CurrentEntryNum = TotalTrades;
Else
CurrentEntryNum = TotalTrades+1;
If currententrynum-var50 == 1 Then { //당일 매매가 한번 이루어진 경우
If isentryname("매수2") Or isentryname("매수3") Then { //진입명칭이 매수2, 매수3인 경우
If dayHigh>var12 And low>var11 Then //장중최고가가 2차저항보다 크고, 저가가 1차저항보다 크면
sell("역매도", Atstop, Var11); //1차저항선을 하향도달시 매도
}
If isentryname("매도2") Or isentryname("매도3") Then { //진입명칭이 매도2, 매도3인 경우
If dayLow<var8 And high<var9 Then
buy("역매수", Atstop, Var9);
}
}
답변 1
예스스탁 예스스탁 답변
2015-07-16 11:19:10
안녕하세요
예스스탁입니다.
기본전략에서 date <> entrydate(1)
부분이 당일 진입횟수를 1회로 제어하는 표현입니다.
국내 선물에서 사용되는 표현입니다.
수정한 식입니다.
역매매전략에 변수값에 대한 내용이 없어
기본전략의 지지/저항변수로 대체했습니다.
input : len(3.2), n(20),method(2),매매횟수(1),역매매횟수(1);
var: cnt(0),entry(0),reEntry(0);
Array : OO[10](0),HH[10](0),LL[10](0),CC[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
CC[0] = C;
for cnt = 1 to 9{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
entry = 0;
reEntry = 0;
}
#당일 진입회수 카운트
if MarketPosition != 0 and MarketPosition != MarketPosition[1] and IsExitName("역매수") == false and IsEntryName("역매도") == false Then
entry = entry+1;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] and (IsExitName("역매수") == true or IsEntryName("역매도") == true) Then
reEntry = reEntry+1;
if H > HH[0] then
HH[0] = H;
if L < LL[0] then
LL[0] = L;
if C < CC[0] then
CC[0] = C;
if method == 1 then {
var1 = (HH[1]+LL[1]+CC[1])/3; //피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
Else {
var1 = (HH[1]+LL[1]+CC[1]+OO[1])/4; //당일시가추가피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
##1번
if var4 > OO[0] and OO[0] > var5 then { //시초가가 1차지지와 2차지지 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 Then { //당일 진입한 적이 없으면
buy("매수1", atstop, var4); //1차 지지선 상향도달시 매수
sell("매도1",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##2번
if var1 > OO[0] and OO[0] >= var4 then { //시초가가 피봇보다 작고 1차지지보다 클 경우
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 then { //당일 진입한 적이 없으면
buy("매수2", atstop, var1); //피봇선 상향 도달시 매수
sell("매도2",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##3번
if var2 > OO[0] and OO[0] >= var1 then { //시초가가 1차저항과 피봇 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 then { //당일 진입한 적이 없으면
buy("매수3", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도3",atstop, var1); //피봇선 하향도달시 매도
}
}
##4번
if var3 > OO[0] and OO[0] >= var2 then { //시초가가 2차저항과 1차저항 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 then { //당일 진입한 적이 없으면
buy("매수4", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도4",atstop, var2); //1차 저항선 하향도달시 매도
}
}
##5번
if OO[0] >= var3 then { //시초가가 2차 저항선 위에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 then { //당일 진입한 적이 없으면
buy("매수5", atstop, OO[0]+(var3-var2)); //시초가+(2차저항-1차저항)의 폭을 상향도달시 매수
sell("매도5",atstop, var3); //2차 저항선 하향도달시 매도
}
}
##6번
if OO[0] <= var5 then {//시초가가 2차 지지선 아래에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and entry < 매매횟수 then { //당일 진입한 적이 없으면
buy("매수6", atstop, var5); //2차 지지선 상향 도달시 매수
sell("매도6",atstop, OO[0]-(var5-var4)); //시초가-(1차지지-2차지지)의 폭을 하향도달시 매도
}
}
if MarketPosition <> 0 then { //ATR Trailing stop
exitlong("매수청산", atstop, highest(H,BarsSinceEntry+1)-atr(n)*len);
exitshort("매도청산", atstop, lowest(L,BarsSinceEntry+1)+atr(n)*len);
}
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}
If entry >= 1 and reEntry < 역매매횟수 Then { //당일 매매가 한번 이루어진 경우
If MarketPosition == 1 and (isentryname("매수2") Or isentryname("매수3")) Then { //진입명칭이 매수2, 매수3인 경우
If dayHigh>var3 And low>var2 Then //장중최고가가 2차저항보다 크고, 저가가 1차저항보다 크면
sell("역매도", Atstop, var2); //1차저항선을 하향도달시 매도
}
If MarketPosition == -1 and(isentryname("매도2") Or isentryname("매도3")) Then { //진입명칭이 매도2, 매도3인 경우
If dayLow<var5 And high<var4 Then
buy("역매수", Atstop, var4);
}
}
즐거운 하루되세요
> 베드로 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
다음식을 해외선물(crude oil)용으로 전환 부탁드립니다.
추가로 역매매전략 전환포함
그리고 매매횟수를 (기존수식과 역매매구분)외부변수로처리로부탁드립니다
아래와 같이 지표작성하여 식을 적용하여보니 신호위치오류가발생합니다
현식에서 어떤부분이 매매횟수를 제어하나요?
감사합니다
===================================================
input : len(3.2), n(20),method(2);
var: cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0),CC[10](0);
if Bdate != Bdate[1] Then{
OO[0] = O;
HH[0] = H;
LL[0] = L;
CC[0] = C;
for cnt = 1 to 9{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] then
HH[0] = H;
if L < LL[0] then
LL[0] = L;
if C < CC[0] then
CC[0] = C;
if method == 1 then {
var1 = (HH[1]+LL[1]+CC[1])/3; //피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
Else {
var1 = (HH[1]+LL[1]+CC[1]+OO[1])/4; //당일시가추가피봇
var2 = var1*2-LL[1]; //1차저항
var3 = var1+HH[1]-LL[1]; //2차저항
var4 = var1*2-HH[1]; //1차지지
var5 = var1 - HH[1]+LL[1]; //2차지지
}
##1번
if var4 > OO[0] and OO[0] > var5 then { //시초가가 1차지지와 2차지지 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> entrydate(1) Then { //당일 진입한 적이 없으면
buy("매수1", atstop, var4); //1차 지지선 상향도달시 매수
sell("매도1",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##2번
if var1 > OO[0] and OO[0] >= var4 then { //시초가가 피봇보다 작고 1차지지보다 클 경우
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수2", atstop, var1); //피봇선 상향 도달시 매수
sell("매도2",atstop, var5); //2차 지지선 하향도달시 매도
}
}
##3번
if var2 > OO[0] and OO[0] >= var1 then { //시초가가 1차저항과 피봇 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수3", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도3",atstop, var1); //피봇선 하향도달시 매도
}
}
##4번
if var3 > OO[0] and OO[0] >= var2 then { //시초가가 2차저항과 1차저항 사이에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수4", atstop, var3); //2차 저항선 상향 도달시 매수
sell("매도4",atstop, var2); //1차 저항선 하향도달시 매도
}
}
##5번
if OO[0] >= var3 then { //시초가가 2차 저항선 위에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수5", atstop, OO[0]+(var3-var2)); //시초가+(2차저항-1차저항)의 폭을 상향도달시 매수
sell("매도5",atstop, var3); //2차 저항선 하향도달시 매도
}
}
##6번
if OO[0] <= var5 then {//시초가가 2차 지지선 아래에서 형성
if stime >= 170000 or stime < 160000 Then
if MarketPosition == 0 and date <> EntryDate(1) then { //당일 진입한 적이 없으면
buy("매수6", atstop, var5); //2차 지지선 상향 도달시 매수
sell("매도6",atstop, OO[0]-(var5-var4)); //시초가-(1차지지-2차지지)의 폭을 하향도달시 매도
}
}
if MarketPosition <> 0 then { //ATR Trailing stop
exitlong("매수청산", atstop, highest(H,BarsSinceEntry+1)-atr(n)*len);
exitshort("매도청산", atstop, lowest(L,BarsSinceEntry+1)+atr(n)*len);
}
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
exitlong();
ExitShort();
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
아래역매매수식추가하여주세요
if date<>date[1] Then
var50 = CurrentEntryNum;
if MarketPosition == 0 Then
CurrentEntryNum = TotalTrades;
Else
CurrentEntryNum = TotalTrades+1;
If currententrynum-var50 == 1 Then { //당일 매매가 한번 이루어진 경우
If isentryname("매수2") Or isentryname("매수3") Then { //진입명칭이 매수2, 매수3인 경우
If dayHigh>var12 And low>var11 Then //장중최고가가 2차저항보다 크고, 저가가 1차저항보다 크면
sell("역매도", Atstop, Var11); //1차저항선을 하향도달시 매도
}
If isentryname("매도2") Or isentryname("매도3") Then { //진입명칭이 매도2, 매도3인 경우
If dayLow<var8 And high<var9 Then
buy("역매수", Atstop, Var9);
}
}
다음글
이전글