커뮤니티

재문의

프로필 이미지
구다이전설
2019-06-25 16:06:06
286
글번호 129744
답변완료
청산한후 추세를 따라하지 못해서 익절이던 손절이던 청산 값보다 10틱이상 크면 아직도 오실레이터 값이 만족한다면 재진입 하는 식을 추가 부탁 합니다 그리고 0 교차 보다 시그널 교차로 만들려면 If CrossUp(ZzOsc,0) Then Buy("B",AtMarket); If CrossDown(ZzOsc,0) Then sell("S",AtMarket); value1 = ma( C, Zzosc( )); ???? 어떻게 만드나요 Input:ChgRate(3); Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False), LastStat(0),WorkBit(0); Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0); Var:ZzOsc(0); Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime LoZZ[10,4](0); #==========================================# HA_C = (O+H+L+C)/4; If IsNaN(HA_O[1]) Then HA_O = O; Else HA_O = (HA_O[1]+HA_C[1])/2; HA_H = max(H,HA_O,HA_C); HA_L = min(L,HA_O,HA_C); If Index == 1 Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = 0; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; LoZZ[1,1] = HA_L; LoZZ[1,2] = 0; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; } If Index > 0 Then { hiBar = hiBar + 1; loBar = loBar + 1; } If HA_H[hiBar] < HA_H Then hiBar = 0; If HA_L[loBar] > HA_L Then loBar = 0; HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0; LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0; WorkBit = 0; If HiCond and LoCond Then { If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then { If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then WorkBit = 1; Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then WorkBit = -1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If LoZZ[1,1] > HA_L Then WorkBit = -1; Else If HiZZ[1,1] < HA_H Then WorkBit = 1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If HiCond Then WorkBit = 1; Else If LoCond Then WorkBit = -1; #==========================================# If WorkBit == 1 Then { If LastStat == -1 Then { For Row = 10 DownTo 2 { For Col = 1 To 4 { HiZZ[Row,Col] = HiZZ[Row-1,Col]; } } HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If HiZZ[1,1] < HA_H Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = 1; } #==========================================# If WorkBit == -1 Then { If LastStat == 1 then { For Row = 10 DownTo 2 { For Col = 1 To 4 { LoZZ[Row,Col] = LoZZ[Row-1,Col]; } } LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If LoZZ[1,1] > HA_L then { LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = -1; } ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]); If CrossUp(ZzOsc,0) Then Buy("B",AtMarket); If CrossDown(ZzOsc,0) Then sell("S",AtMarket); Input : BuyATRP(46),SellATRP(6),BuyATRS1(2.5),BuyATRS2(4.0),BuyATRS3(4.0),SellATRS1(3.5),SellATRS2(6.0),SellATRS3(6.0); Input : BuyStoploss(12), SellStoploss(6), BuyTrailing(5), BuyFloor(20), SellTrailing(5),SellFloor(8.5); Input:break(1.9),level(0.3),big(8),sbreak(1.9),slevel(0.3),sbig(8); var:진입후최고가(0),진입후최저가(0); If MarketPosition == 1 Then { 진입후최고가 = Highest(H,BarsSinceEntry + 1); ExitLong("매수추적",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS1); ExitLong("매수변동성",AtStop,C - ATR(BuyATRP) * BuyATRS2); If 진입후최고가 >= Entryprice + ATR(BuyATRP) * break Then { ExitLong("매수손익분기",AtStop,Entryprice + ATR(BuyATRP) * level); ExitLong("매수추적1",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS3); } If 진입후최고가 >= Entryprice + ATR(BuyATRP) * big Then { ExitLong("매수초과수익",AtStop,Lowest(L,3)); } SetStopLoss(BuyStoploss, PointStop); SetStopTrailing(BuyTrailing,BuyFloor,PointStop); } If MarketPosition == -1 Then { 진입후최저가 = Lowest(L,BarsSinceEntry + 1); ExitShort("매도추적",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS1); ExitShort("매도변동성",AtStop,C + ATR(SellATRP) * SellATRS2); If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbreak Then { ExitShort("매도손익분기",AtStop,Entryprice - ATR(SellATRP) * slevel); ExitShort("매도추적1",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS3); } If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbig Then { ExitShort("매도초과수익",AtStop,Highest(H,3)); } SetStopLoss(SellStoploss, PointStop); SetStopTrailing(SellTrailing,SellFloor,PointStop); } If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김 SetStopLoss(0, PointStop); SetStopTrailing(0, 0, PointStop); } If MarketPosition == 1 Then ExitLong("스파이크청산-1", AtLimit, C + ATR(20) * 7); // 상승돌파 시 매수청산 If MarketPosition == -1 Then Exitshort("스파이크청산+1", AtLimit, C - ATR(20) * 7); // 상승돌파 시 매도청산 Var:SpikeHigh(0), spikelow(0); If MarketPosition == 1 Then // 매수포지션일 때 { if MarketPosition != MarketPosition[1] Then { SpikeHigh = 10; // 초기화 Condition1 = false; } If Condition1 == false and // 스파이크 미발생 H > C[1] + ATR(20) * 7 Then // 전봉 종가보다 7 * ATR 이상 상승 { SpikeHigh = H; // 스파이크 고점 설정 Condition1 = true; // 스파이크 발생 } If Condition1 Then // 스파이크 발생 후 { If SpikeHigh < H then SpikeHigh = H; // 신규 고점 나오면 갱신 ExitLong("스파이크청산-2", AtStop, SpikeHigh - ATR(20) * 2); //추적청산처럼 꼭지 찍고 내려올 때 } } If MarketPosition == -1 Then { if MarketPosition != MarketPosition[1] Then { Spikelow = 10; // 초기화 Condition2 = false; } If Condition2 == false and L < C[1] - ATR(20) * 7 Then { Spikelow = H; Condition2 = true; } If Condition2 Then { If Spikelow > L then Spikelow = L; // 신규 고점 나오면 갱신 ExitShort("스파이크low청산-2", AtStop, Spikelow + ATR(20) * 2); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-06-26 09:25:42

안녕하세요 예스스탁입니다. 1 Input:ChgRate(3); Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False), LastStat(0),WorkBit(0); Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0); Var:ZzOsc(0); Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime LoZZ[10,4](0); #==========================================# HA_C = (O+H+L+C)/4; If IsNaN(HA_O[1]) Then HA_O = O; Else HA_O = (HA_O[1]+HA_C[1])/2; HA_H = max(H,HA_O,HA_C); HA_L = min(L,HA_O,HA_C); If Index == 1 Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = 0; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; LoZZ[1,1] = HA_L; LoZZ[1,2] = 0; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; } If Index > 0 Then { hiBar = hiBar + 1; loBar = loBar + 1; } If HA_H[hiBar] < HA_H Then hiBar = 0; If HA_L[loBar] > HA_L Then loBar = 0; HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0; LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0; WorkBit = 0; If HiCond and LoCond Then { If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then { If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then WorkBit = 1; Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then WorkBit = -1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If LoZZ[1,1] > HA_L Then WorkBit = -1; Else If HiZZ[1,1] < HA_H Then WorkBit = 1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If HiCond Then WorkBit = 1; Else If LoCond Then WorkBit = -1; #==========================================# If WorkBit == 1 Then { If LastStat == -1 Then { For Row = 10 DownTo 2 { For Col = 1 To 4 { HiZZ[Row,Col] = HiZZ[Row-1,Col]; } } HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If HiZZ[1,1] < HA_H Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = 1; } #==========================================# If WorkBit == -1 Then { If LastStat == 1 then { For Row = 10 DownTo 2 { For Col = 1 To 4 { LoZZ[Row,Col] = LoZZ[Row-1,Col]; } } LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If LoZZ[1,1] > HA_L then { LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = -1; } ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]); If CrossUp(ZzOsc,0) Then Buy("B",AtMarket); If CrossDown(ZzOsc,0) Then sell("S",AtMarket); Input : BuyATRP(46),SellATRP(6),BuyATRS1(2.5),BuyATRS2(4.0),BuyATRS3(4.0),SellATRS1(3.5),SellATRS2(6.0),SellATRS3(6.0); Input : BuyStoploss(12), SellStoploss(6), BuyTrailing(5), BuyFloor(20), SellTrailing(5),SellFloor(8.5); Input:break(1.9),level(0.3),big(8),sbreak(1.9),slevel(0.3),sbig(8); var:진입후최고가(0),진입후최저가(0); If MarketPosition == 1 Then { 진입후최고가 = Highest(H,BarsSinceEntry + 1); ExitLong("매수추적",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS1); ExitLong("매수변동성",AtStop,C - ATR(BuyATRP) * BuyATRS2); If 진입후최고가 >= Entryprice + ATR(BuyATRP) * break Then { ExitLong("매수손익분기",AtStop,Entryprice + ATR(BuyATRP) * level); ExitLong("매수추적1",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS3); } If 진입후최고가 >= Entryprice + ATR(BuyATRP) * big Then { ExitLong("매수초과수익",AtStop,Lowest(L,3)); } SetStopLoss(BuyStoploss, PointStop); SetStopTrailing(BuyTrailing,BuyFloor,PointStop); } If MarketPosition == -1 Then { 진입후최저가 = Lowest(L,BarsSinceEntry + 1); ExitShort("매도추적",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS1); ExitShort("매도변동성",AtStop,C + ATR(SellATRP) * SellATRS2); If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbreak Then { ExitShort("매도손익분기",AtStop,Entryprice - ATR(SellATRP) * slevel); ExitShort("매도추적1",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS3); } If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbig Then { ExitShort("매도초과수익",AtStop,Highest(H,3)); } SetStopLoss(SellStoploss, PointStop); SetStopTrailing(SellTrailing,SellFloor,PointStop); } If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김 SetStopLoss(0, PointStop); SetStopTrailing(0, 0, PointStop); } If MarketPosition == 1 Then ExitLong("스파이크청산-1", AtLimit, C + ATR(20) * 7); // 상승돌파 시 매수청산 If MarketPosition == -1 Then Exitshort("스파이크청산+1", AtLimit, C - ATR(20) * 7); // 상승돌파 시 매도청산 Var:SpikeHigh(0), spikelow(0); If MarketPosition == 1 Then // 매수포지션일 때 { if MarketPosition != MarketPosition[1] Then { SpikeHigh = 10; // 초기화 Condition1 = false; } If Condition1 == false and // 스파이크 미발생 H > C[1] + ATR(20) * 7 Then // 전봉 종가보다 7 * ATR 이상 상승 { SpikeHigh = H; // 스파이크 고점 설정 Condition1 = true; // 스파이크 발생 } If Condition1 Then // 스파이크 발생 후 { If SpikeHigh < H then SpikeHigh = H; // 신규 고점 나오면 갱신 ExitLong("스파이크청산-2", AtStop, SpikeHigh - ATR(20) * 2); //추적청산처럼 꼭지 찍고 내려올 때 } } If MarketPosition == -1 Then { if MarketPosition != MarketPosition[1] Then { Spikelow = 10; // 초기화 Condition2 = false; } If Condition2 == false and L < C[1] - ATR(20) * 7 Then { Spikelow = H; Condition2 = true; } If Condition2 Then { If Spikelow > L then Spikelow = L; // 신규 고점 나오면 갱신 ExitShort("스파이크low청산-2", AtStop, Spikelow + ATR(20) * 2); } } if MarketPosition == 0 and MarketPosition(1) == 1 and C >= ExitPrice(1)+PriceScale*10 and ZzOsc > 0 Then buy("재매수"); if MarketPosition == 0 and MarketPosition(1) == -1 and C <= ExitPrice(1)-PriceScale*10 and ZzOsc < 0 Then sell("재매도"); 2 ma(값,봉수) ma는 위와 같이 값지정하시면 됩니다. Zzosc에 대해 n개봉 이평한 값을 만드시고자 하시면 ma(Zzosc,봉수)로 작성해 사용하시면 됩니다. 즐거운 하루되세요 > 구다이전설 님이 쓴 글입니다. > 제목 : 재문의 > 청산한후 추세를 따라하지 못해서 익절이던 손절이던 청산 값보다 10틱이상 크면 아직도 오실레이터 값이 만족한다면 재진입 하는 식을 추가 부탁 합니다 그리고 0 교차 보다 시그널 교차로 만들려면 If CrossUp(ZzOsc,0) Then Buy("B",AtMarket); If CrossDown(ZzOsc,0) Then sell("S",AtMarket); value1 = ma( C, Zzosc( )); ???? 어떻게 만드나요 Input:ChgRate(3); Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False), LastStat(0),WorkBit(0); Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0); Var:ZzOsc(0); Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime LoZZ[10,4](0); #==========================================# HA_C = (O+H+L+C)/4; If IsNaN(HA_O[1]) Then HA_O = O; Else HA_O = (HA_O[1]+HA_C[1])/2; HA_H = max(H,HA_O,HA_C); HA_L = min(L,HA_O,HA_C); If Index == 1 Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = 0; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; LoZZ[1,1] = HA_L; LoZZ[1,2] = 0; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; } If Index > 0 Then { hiBar = hiBar + 1; loBar = loBar + 1; } If HA_H[hiBar] < HA_H Then hiBar = 0; If HA_L[loBar] > HA_L Then loBar = 0; HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0; LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0; WorkBit = 0; If HiCond and LoCond Then { If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then { If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then WorkBit = 1; Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then WorkBit = -1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If LoZZ[1,1] > HA_L Then WorkBit = -1; Else If HiZZ[1,1] < HA_H Then WorkBit = 1; Else If LastStat == -1 Then WorkBit = 1; Else WorkBit = -1; } Else If HiCond Then WorkBit = 1; Else If LoCond Then WorkBit = -1; #==========================================# If WorkBit == 1 Then { If LastStat == -1 Then { For Row = 10 DownTo 2 { For Col = 1 To 4 { HiZZ[Row,Col] = HiZZ[Row-1,Col]; } } HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If HiZZ[1,1] < HA_H Then { HiZZ[1,1] = HA_H; HiZZ[1,2] = Index; HiZZ[1,3] = sDate; HiZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = 1; } #==========================================# If WorkBit == -1 Then { If LastStat == 1 then { For Row = 10 DownTo 2 { For Col = 1 To 4 { LoZZ[Row,Col] = LoZZ[Row-1,Col]; } } LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } Else If LoZZ[1,1] > HA_L then { LoZZ[1,1] = HA_L; LoZZ[1,2] = Index; LoZZ[1,3] = sDate; LoZZ[1,4] = sTime; hiBar = -1; loBar = -1; } LastStat = -1; } ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]); If CrossUp(ZzOsc,0) Then Buy("B",AtMarket); If CrossDown(ZzOsc,0) Then sell("S",AtMarket); Input : BuyATRP(46),SellATRP(6),BuyATRS1(2.5),BuyATRS2(4.0),BuyATRS3(4.0),SellATRS1(3.5),SellATRS2(6.0),SellATRS3(6.0); Input : BuyStoploss(12), SellStoploss(6), BuyTrailing(5), BuyFloor(20), SellTrailing(5),SellFloor(8.5); Input:break(1.9),level(0.3),big(8),sbreak(1.9),slevel(0.3),sbig(8); var:진입후최고가(0),진입후최저가(0); If MarketPosition == 1 Then { 진입후최고가 = Highest(H,BarsSinceEntry + 1); ExitLong("매수추적",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS1); ExitLong("매수변동성",AtStop,C - ATR(BuyATRP) * BuyATRS2); If 진입후최고가 >= Entryprice + ATR(BuyATRP) * break Then { ExitLong("매수손익분기",AtStop,Entryprice + ATR(BuyATRP) * level); ExitLong("매수추적1",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS3); } If 진입후최고가 >= Entryprice + ATR(BuyATRP) * big Then { ExitLong("매수초과수익",AtStop,Lowest(L,3)); } SetStopLoss(BuyStoploss, PointStop); SetStopTrailing(BuyTrailing,BuyFloor,PointStop); } If MarketPosition == -1 Then { 진입후최저가 = Lowest(L,BarsSinceEntry + 1); ExitShort("매도추적",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS1); ExitShort("매도변동성",AtStop,C + ATR(SellATRP) * SellATRS2); If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbreak Then { ExitShort("매도손익분기",AtStop,Entryprice - ATR(SellATRP) * slevel); ExitShort("매도추적1",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS3); } If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbig Then { ExitShort("매도초과수익",AtStop,Highest(H,3)); } SetStopLoss(SellStoploss, PointStop); SetStopTrailing(SellTrailing,SellFloor,PointStop); } If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김 SetStopLoss(0, PointStop); SetStopTrailing(0, 0, PointStop); } If MarketPosition == 1 Then ExitLong("스파이크청산-1", AtLimit, C + ATR(20) * 7); // 상승돌파 시 매수청산 If MarketPosition == -1 Then Exitshort("스파이크청산+1", AtLimit, C - ATR(20) * 7); // 상승돌파 시 매도청산 Var:SpikeHigh(0), spikelow(0); If MarketPosition == 1 Then // 매수포지션일 때 { if MarketPosition != MarketPosition[1] Then { SpikeHigh = 10; // 초기화 Condition1 = false; } If Condition1 == false and // 스파이크 미발생 H > C[1] + ATR(20) * 7 Then // 전봉 종가보다 7 * ATR 이상 상승 { SpikeHigh = H; // 스파이크 고점 설정 Condition1 = true; // 스파이크 발생 } If Condition1 Then // 스파이크 발생 후 { If SpikeHigh < H then SpikeHigh = H; // 신규 고점 나오면 갱신 ExitLong("스파이크청산-2", AtStop, SpikeHigh - ATR(20) * 2); //추적청산처럼 꼭지 찍고 내려올 때 } } If MarketPosition == -1 Then { if MarketPosition != MarketPosition[1] Then { Spikelow = 10; // 초기화 Condition2 = false; } If Condition2 == false and L < C[1] - ATR(20) * 7 Then { Spikelow = H; Condition2 = true; } If Condition2 Then { If Spikelow > L then Spikelow = L; // 신규 고점 나오면 갱신 ExitShort("스파이크low청산-2", AtStop, Spikelow + ATR(20) * 2); } }