커뮤니티

문의드립니다.

프로필 이미지
베드로
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); } }