커뮤니티

시스템수식 수정 재부탁드립니다

프로필 이미지
미완
2019-07-25 00:32:49
177
글번호 130616
답변완료
아래 수식에서 추세에 따른 매수, 매도 진입이 함수로 횟수 제한을 두고 싶은데 수식 변경 부탁드립니다. 예를 들어 추세에 따른 진입을 한번으로 정했을때 매수 신호가 나오고 진입하고 청산 후 추세가 매수로 계속가고 매수 진입 신호가 나왔을때 진입이 안되고 매도추세로 바뀌고 매도 진입 신호가 나왔을때 매도도 한번만 되도록 수식 부탁드립니다. input: b_time1(000000),e_time1(240000); input: stoK_p11(700),stoK_p12(14),stoK_p13(6),상단(99),하단(1); input: stoK_p21(550),stoK_p22(15),stoK_p23(6),상단1(99),하단1(1),익절틱수(40); input: stoK_p31(1500),stoK_p32(20),stoK_p33(6); input: stoK_p41(1500),stoK_p42(6),stoK_p43(6),상단2(99),하단2(1); input : 당일수익틱수(200); input : 당일목표손실(100); Input : short(50), long(100), signal(1000); Input : short1(1400), long1(3400), signal1(5000); Var : MACDv(0), MACDs(0),macdo(0) ; Var : MACDv1(0), MACDs1(0),macdo1(0) ; MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; MACDv1 = MACD(short1, long1); MACDs1 = ema(MACDv1,signal1); macdo1 = MACDv1-MACDs1; Var : stoK1(0),stoD1(0),stoK2(0),stoD2(0),stoK3(0),stoD3(0),stoK4(0),stoD4(0),T1(0),T2(0),T3(0),T4(0); var : Tcond(false); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일수익종료",1) == true or IsExitName("금일손실종료1",1) == true or IsExitName("금일수익종료2",1) == true or IsExitName("금일손실종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } If b_time1<=sTime and sTime<= e_time1 Then { stoK1 = StochasticsK(stoK_p11,stoK_p12); stoD1 = StochasticsD(stoK_p11,stoK_p12,stoK_p13); If stoK1>=(99) Then { T1 = 1; } If stoK1<=(1) Then { T1 = -1; } stoK2 = StochasticsK(stoK_p21,stoK_p22); stoD2 = StochasticsD(stoK_p21,stoK_p22,stoK_p23); If stoK2>=(99) Then { T2 = 2; } If stoK2<=(1) Then { T2 = -2; } stoK3 = StochasticsK(stoK_p31,stoK_p32); stoD3 = StochasticsD(stoK_p31,stoK_p32,stoK_p33); If stoK3>=(99) Then { T3 = 3; } If stoK3<=(1) Then { T3 = -3; } stoK4 = StochasticsK(stoK_p41,stoK_p42); stoD4 = StochasticsD(stoK_p41,stoK_p42,stoK_p43); If stoK4>=(99) Then { T4 = 4; } If stoK4<=(1) Then { T4 = -4; } } if Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == -1 and T1 != T1[1] Then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일수익종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일손실종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if T2==2 then ExitShort("매도청산2",AtMarket); } if Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == 1 and T1 != T1[1] Then buy("매수",AtMarket); if MarketPosition == 1 Then { Exitlong("금일수익종료2",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); Exitlong("금일손실종료3",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); if T2==-2 then Exitlong("매수청산2",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-25 15:33:27

안녕하세요 예스스탁입니다. 매수진입과 매도진입 각각 횟수제한을 할수 있게 수정해 드립니다. input: b_time1(000000),e_time1(240000); input: stoK_p11(700),stoK_p12(14),stoK_p13(6),상단(99),하단(1); input: stoK_p21(550),stoK_p22(15),stoK_p23(6),상단1(99),하단1(1),익절틱수(40); input: stoK_p31(1500),stoK_p32(20),stoK_p33(6); input: stoK_p41(1500),stoK_p42(6),stoK_p43(6),상단2(99),하단2(1); input : 당일수익틱수(200); input : 당일목표손실(100); Input : short(50), long(100), signal(1000); Input : short1(1400), long1(3400), signal1(5000); input : 매수진입횟수(1),매도진입횟수(1); Var : MACDv(0), MACDs(0),macdo(0) ; Var : MACDv1(0), MACDs1(0),macdo1(0),Bcount(0),Scount(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; MACDv1 = MACD(short1, long1); MACDs1 = ema(MACDv1,signal1); macdo1 = MACDv1-MACDs1; Var : stoK1(0),stoD1(0),stoK2(0),stoD2(0),stoK3(0),stoD3(0),stoK4(0),stoD4(0),T1(0),T2(0),T3(0),T4(0); var : Tcond(false); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; Bcount = 0; Scount = 0; } if MarketPosition(0) == 1 and MarketPosition(0) != MarketPosition(0)[1] Then Bcount = Bcount+1; if MarketPosition(0) == -1 and MarketPosition(0) != MarketPosition(0)[1] Then Scount = Scount+1; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일수익종료",1) == true or IsExitName("금일손실종료1",1) == true or IsExitName("금일수익종료2",1) == true or IsExitName("금일손실종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } If b_time1<=sTime and sTime<= e_time1 Then { stoK1 = StochasticsK(stoK_p11,stoK_p12); stoD1 = StochasticsD(stoK_p11,stoK_p12,stoK_p13); If stoK1>=(99) Then { T1 = 1; } If stoK1<=(1) Then { T1 = -1; } stoK2 = StochasticsK(stoK_p21,stoK_p22); stoD2 = StochasticsD(stoK_p21,stoK_p22,stoK_p23); If stoK2>=(99) Then { T2 = 2; } If stoK2<=(1) Then { T2 = -2; } stoK3 = StochasticsK(stoK_p31,stoK_p32); stoD3 = StochasticsD(stoK_p31,stoK_p32,stoK_p33); If stoK3>=(99) Then { T3 = 3; } If stoK3<=(1) Then { T3 = -3; } stoK4 = StochasticsK(stoK_p41,stoK_p42); stoD4 = StochasticsD(stoK_p41,stoK_p42,stoK_p43); If stoK4>=(99) Then { T4 = 4; } If stoK4<=(1) Then { T4 = -4; } } if Scount < 매도진입횟수 and Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == -1 and T1 != T1[1] Then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일수익종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일손실종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if T2==2 then ExitShort("매도청산2",AtMarket); } if Bcount < 매수진입횟수 and Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == 1 and T1 != T1[1] Then buy("매수",AtMarket); if MarketPosition == 1 Then { Exitlong("금일수익종료2",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); Exitlong("금일손실종료3",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); if T2==-2 then Exitlong("매수청산2",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop); 즐거운 하루되세요 > 미완 님이 쓴 글입니다. > 제목 : 시스템수식 수정 재부탁드립니다 > 아래 수식에서 추세에 따른 매수, 매도 진입이 함수로 횟수 제한을 두고 싶은데 수식 변경 부탁드립니다. 예를 들어 추세에 따른 진입을 한번으로 정했을때 매수 신호가 나오고 진입하고 청산 후 추세가 매수로 계속가고 매수 진입 신호가 나왔을때 진입이 안되고 매도추세로 바뀌고 매도 진입 신호가 나왔을때 매도도 한번만 되도록 수식 부탁드립니다. input: b_time1(000000),e_time1(240000); input: stoK_p11(700),stoK_p12(14),stoK_p13(6),상단(99),하단(1); input: stoK_p21(550),stoK_p22(15),stoK_p23(6),상단1(99),하단1(1),익절틱수(40); input: stoK_p31(1500),stoK_p32(20),stoK_p33(6); input: stoK_p41(1500),stoK_p42(6),stoK_p43(6),상단2(99),하단2(1); input : 당일수익틱수(200); input : 당일목표손실(100); Input : short(50), long(100), signal(1000); Input : short1(1400), long1(3400), signal1(5000); Var : MACDv(0), MACDs(0),macdo(0) ; Var : MACDv1(0), MACDs1(0),macdo1(0) ; MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; MACDv1 = MACD(short1, long1); MACDs1 = ema(MACDv1,signal1); macdo1 = MACDv1-MACDs1; Var : stoK1(0),stoD1(0),stoK2(0),stoD2(0),stoK3(0),stoD3(0),stoK4(0),stoD4(0),T1(0),T2(0),T3(0),T4(0); var : Tcond(false); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일수익종료",1) == true or IsExitName("금일손실종료1",1) == true or IsExitName("금일수익종료2",1) == true or IsExitName("금일손실종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } If b_time1<=sTime and sTime<= e_time1 Then { stoK1 = StochasticsK(stoK_p11,stoK_p12); stoD1 = StochasticsD(stoK_p11,stoK_p12,stoK_p13); If stoK1>=(99) Then { T1 = 1; } If stoK1<=(1) Then { T1 = -1; } stoK2 = StochasticsK(stoK_p21,stoK_p22); stoD2 = StochasticsD(stoK_p21,stoK_p22,stoK_p23); If stoK2>=(99) Then { T2 = 2; } If stoK2<=(1) Then { T2 = -2; } stoK3 = StochasticsK(stoK_p31,stoK_p32); stoD3 = StochasticsD(stoK_p31,stoK_p32,stoK_p33); If stoK3>=(99) Then { T3 = 3; } If stoK3<=(1) Then { T3 = -3; } stoK4 = StochasticsK(stoK_p41,stoK_p42); stoD4 = StochasticsD(stoK_p41,stoK_p42,stoK_p43); If stoK4>=(99) Then { T4 = 4; } If stoK4<=(1) Then { T4 = -4; } } if Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == -1 and T1 != T1[1] Then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일수익종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일손실종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if T2==2 then ExitShort("매도청산2",AtMarket); } if Xcond == false and MarketPosition == 0 and b_time1<=sTime and sTime<= e_time1 and T1 == 1 and T1 != T1[1] Then buy("매수",AtMarket); if MarketPosition == 1 Then { Exitlong("금일수익종료2",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); Exitlong("금일손실종료3",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); if T2==-2 then Exitlong("매수청산2",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop);