커뮤니티

재문의 드립니다.

프로필 이미지
gaintoga
2013-09-26 23:55:07
105
글번호 67905
답변완료
32610번 글에 아래처럼 문의 드렸는데요. 빠른 답변 감사드립니다. 그런데 수식에 추가사항 요청 및 오류가 있는 듯 하여 재문의 드립니다. 추가사항은 모든 수식에 당일 매매중단 카운트에 손절 뿐 아니라 청산까지 카운트 되게해주시길 부탁드립니다. 제가 원하는 부분을 다시 말씀드리면, ●1수식 1. 마틴게일 식으로 손절이나 청산을 하면 배수로 계약수를 늘려주세요. ( 1 - 2 - 4 - 8 ...) 2. 당일(하루에) 연속해서 손절이나 청산을 모두 합쳐 5번(input변수를 이용해서 수치를 쉽게 변경할 수 있게 해주세요) 하게 되면 일중 매매 중단. 다음날 다시 카운트 시작. 3. 당일 목표수익이 나오면 일중 매매 중단. -------------------------------------------------------------------------------- ●2수식 1. 마틴게일 식으로 손절이나 청산을 하면 배수로~ 2. 첫 신호가 나온 날부터 연속해서 손절이나 청산을 모두 합쳐 10번(input변수를 이용해서 수치를 쉽게 변경할 수 있게 해주세요) 하게 되면 손절이나 청산이 10번째 되는 날 매매 중단. 다음날부터 다시 카운트 시작. 3. 당일 목표수익이 나오면 목표수익이 나온 날은 매매 중단. 이렇게 두가지로 수식 요청드립니다. 오류부분은 답변 주신 수식으로 실행해보니 두가지식 모두 손절카운트 만큼 세어지면 다음날 부터 진입 신호가 발생하지 않네요. (10번 카운트를 설정하면, 10번 손절한 그 지점부터 신호 발생이 안됩니다.) 다음날다시 신호가 나와서 카운트되게 해주세요. 바쁘실텐데 번거롭게해드려 죄송하고, 답변 주셔서 너무나 감사드립니다. 좋은 하루 보내세요~ ======================================================================== Input : ma1(5), ma2(60), ma3(200), shortPeriod(12), longPeriod(36), Period(12), LossCut(60), StopCut(20); Var : MACDv(0), MACDsig(0),macdosc(0) ; var1 = ema(C,ma1); var2 = ema(C,ma2); var3 = ema(C,ma3); MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ma(MACDv,Period); If MarketPosition == 0 Then { if crossup(macdosc,0) and var1 > var2 and var2 >= var3 Then buy("B1",AtMarket); if CrossDown(macdosc,0) and var1 < var2 and var2 <= var3 Then sell("S1",AtMarket); } If MarketPosition == 1 Then { if CrossDown(macdosc,0) Then ExitLong("ExL1", AtMarket); ExitLong("콜손절", AtStop, EntryPrice-(Losscut*PriceScale)); #SetStopLoss(StopCut*PriceScale,PointStop); Exitlong("콜목표이익", AtLimit, EntryPrice+(StopCut*PriceScale)); } If MarketPosition == -1 Then { if CrossUp(macdosc,0) Then ExitShort("ExS1", AtMarket); ExitShort("풋손절", AtStop, EntryPrice+(Losscut*PriceScale)); #SetStopLoss(StopCut*PriceScale,PointStop); ExitShort("풋목표이익", AtLimit, EntryPrice-(StopCut*PriceScale));
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-09-27 15:26:16

안녕하세요 예스탁입니다. 수정한 식입니다. 1. Input : ma1(5), ma2(60), ma3(200), shortPeriod(12), longPeriod(36), Period(12),LossCut(60), StopCut(20),losscntcount(5); Var : MACDv(0), MACDsig(0),macdosc(0) ; var : cnt(0),count(0),losscount(0),Xcond1(false),Xcond2(false); var1 = ema(C,ma1); var2 = ema(C,ma2); var3 = ema(C,ma3); MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ma(MACDv,Period); count = 0; losscount = 0; for cnt = 0 to 20{ if sdate ==EntryDate(cnt) Then{ count = count+1; if cnt >= 1 and (IsExitName("콜목표이익",cnt) == false and IsExitName("풋목표이익",cnt) == false) Then losscount = losscount+1; } } XCond1 = ExitDate(1) == sdate and (IsExitName("콜목표이익",1) == true or IsExitName("풋목표이익",1) == true); If MarketPosition == 0 and losscount < losscntcount and Xcond1 == false Then { if crossup(macdosc,0) and var1 > var2 and var2 >= var3 Then { if count == 0 Then buy("B1",AtMarket,def,1); if count >= 1 Then buy("B2",AtMarket,def,CurrentContracts[BarsSinceExit(1)+1]*2); } if CrossDown(macdosc,0) and var1 < var2 and var2 <= var3 Then { if count == 0 Then Sell("S1",AtMarket,def,1); if count >= 1 Then Sell("S2",AtMarket,def,CurrentContracts[BarsSinceExit(1)+1]*2); } } If MarketPosition == 1 Then { if CrossDown(macdosc,0) Then ExitLong("ExL1", AtMarket); ExitLong("콜손절", AtStop, EntryPrice-(Losscut*PriceScale)); Exitlong("콜목표이익", AtLimit, EntryPrice+(StopCut*PriceScale)); } If MarketPosition == -1 Then { if CrossUp(macdosc,0) Then ExitShort("ExS1", AtMarket); ExitShort("풋손절", AtStop, EntryPrice+(Losscut*PriceScale)); ExitShort("풋목표이익", AtLimit, EntryPrice-(StopCut*PriceScale)); } 2. Input : ma1(5), ma2(60), ma3(200), shortPeriod(12), longPeriod(36), Period(12),LossCut(60), StopCut(20),losscntcount(10); Var : MACDv(0), MACDsig(0),macdosc(0) ; var : cnt(0),count(0),losscount(0),Xcond1(false),Xcond2(false); var1 = ema(C,ma1); var2 = ema(C,ma2); var3 = ema(C,ma3); MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ma(MACDv,Period); if BarsSinceExit(1) == 1 Then{ if (IsExitName("콜목표이익",1) == false and IsExitName("풋목표이익",1) == false) Then losscount = losscount+1; Else losscount = 0; } if date != date[1] Then Xcond2 = false; if losscount == losscntcount Then{ Xcond2 = true; Losscount = 0; } XCond1 = ExitDate(1) == sdate and (IsExitName("콜목표이익",1) == true or IsExitName("풋목표이익",1) == true); If MarketPosition == 0 and Xcond2 == false and Xcond1 == false Then { if crossup(macdosc,0) and var1 > var2 and var2 >= var3 Then { if count == 0 Then buy("B1",AtMarket,def,1); if count >= 1 Then buy("B2",AtMarket,def,CurrentContracts[BarsSinceExit(1)+1]*2); } if CrossDown(macdosc,0) and var1 < var2 and var2 <= var3 Then { if count == 0 Then Sell("S1",AtMarket,def,1); if count >= 1 Then Sell("S2",AtMarket,def,CurrentContracts[BarsSinceExit(1)+1]*2); } } If MarketPosition == 1 Then { if CrossDown(macdosc,0) Then ExitLong("ExL1", AtMarket); ExitLong("콜손절", AtStop, EntryPrice-(Losscut*PriceScale)); Exitlong("콜목표이익", AtLimit, EntryPrice+(StopCut*PriceScale)); } If MarketPosition == -1 Then { if CrossUp(macdosc,0) Then ExitShort("ExS1", AtMarket); ExitShort("풋손절", AtStop, EntryPrice+(Losscut*PriceScale)); ExitShort("풋목표이익", AtLimit, EntryPrice-(StopCut*PriceScale)); } 즐거운 하루되세요 > gaintoga 님이 쓴 글입니다. > 제목 : 재문의 드립니다. > 32610번 글에 아래처럼 문의 드렸는데요. 빠른 답변 감사드립니다. 그런데 수식에 추가사항 요청 및 오류가 있는 듯 하여 재문의 드립니다. 추가사항은 모든 수식에 당일 매매중단 카운트에 손절 뿐 아니라 청산까지 카운트 되게해주시길 부탁드립니다. 제가 원하는 부분을 다시 말씀드리면, ●1수식 1. 마틴게일 식으로 손절이나 청산을 하면 배수로 계약수를 늘려주세요. ( 1 - 2 - 4 - 8 ...) 2. 당일(하루에) 연속해서 손절이나 청산을 모두 합쳐 5번(input변수를 이용해서 수치를 쉽게 변경할 수 있게 해주세요) 하게 되면 일중 매매 중단. 다음날 다시 카운트 시작. 3. 당일 목표수익이 나오면 일중 매매 중단. -------------------------------------------------------------------------------- ●2수식 1. 마틴게일 식으로 손절이나 청산을 하면 배수로~ 2. 첫 신호가 나온 날부터 연속해서 손절이나 청산을 모두 합쳐 10번(input변수를 이용해서 수치를 쉽게 변경할 수 있게 해주세요) 하게 되면 손절이나 청산이 10번째 되는 날 매매 중단. 다음날부터 다시 카운트 시작. 3. 당일 목표수익이 나오면 목표수익이 나온 날은 매매 중단. 이렇게 두가지로 수식 요청드립니다. 오류부분은 답변 주신 수식으로 실행해보니 두가지식 모두 손절카운트 만큼 세어지면 다음날 부터 진입 신호가 발생하지 않네요. (10번 카운트를 설정하면, 10번 손절한 그 지점부터 신호 발생이 안됩니다.) 다음날다시 신호가 나와서 카운트되게 해주세요. 바쁘실텐데 번거롭게해드려 죄송하고, 답변 주셔서 너무나 감사드립니다. 좋은 하루 보내세요~ ======================================================================== Input : ma1(5), ma2(60), ma3(200), shortPeriod(12), longPeriod(36), Period(12), LossCut(60), StopCut(20); Var : MACDv(0), MACDsig(0),macdosc(0) ; var1 = ema(C,ma1); var2 = ema(C,ma2); var3 = ema(C,ma3); MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ma(MACDv,Period); If MarketPosition == 0 Then { if crossup(macdosc,0) and var1 > var2 and var2 >= var3 Then buy("B1",AtMarket); if CrossDown(macdosc,0) and var1 < var2 and var2 <= var3 Then sell("S1",AtMarket); } If MarketPosition == 1 Then { if CrossDown(macdosc,0) Then ExitLong("ExL1", AtMarket); ExitLong("콜손절", AtStop, EntryPrice-(Losscut*PriceScale)); #SetStopLoss(StopCut*PriceScale,PointStop); Exitlong("콜목표이익", AtLimit, EntryPrice+(StopCut*PriceScale)); } If MarketPosition == -1 Then { if CrossUp(macdosc,0) Then ExitShort("ExS1", AtMarket); ExitShort("풋손절", AtStop, EntryPrice+(Losscut*PriceScale)); #SetStopLoss(StopCut*PriceScale,PointStop); ExitShort("풋목표이익", AtLimit, EntryPrice-(StopCut*PriceScale));