커뮤니티

문의드립니다

프로필 이미지
ceri21
2017-01-19 10:17:15
105
글번호 106077
답변완료
시스템이 다운되는 현상이 나타납니다. 그래서 생각한건데요~ 제가 만든 수식이 너무 복잡하거나, 단순화하지 못해서 발생되는거라면 간단히 만들고 싶습니다. 부탁드립니다. 좀더 부연설명을 드리면 맨위의 신호와 맨 아랫쪽 신호를 추가하고 시스템다운 현상이 발생 합니다. If ((sTime > 90000 and sTime < 90459)) and C > DayOpen and C > Var7 and Bids - Asks > 1000 and C>=O Then Buy("시수1", OnClose); If ((sTime > 90000 and sTime < 90459)) and C < DayOpen and C < Var7 and Asks - Bids > 1000 and C<=O Then Sell("시도1", OnClose ); If (Abs(var11-var19)<=0.8*PriceScale) and (Var11>Var19 or var11-var1>=6*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b0",OnClose); If (Abs(var11-var19)<=0.8*PriceScale) and (Var11<Var19 or var1-var11>=6*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s0",OnClose); If (Abs(var11-var19)>0.8*PriceScale and Abs(var11-var19)<=1.5*PriceScale) and (Var11>Var19 or var11-var1>=4*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b1",OnClose); If (Abs(var11-var19)>0.8*PriceScale and Abs(var11-var19)<=1.5*PriceScale) and (Var11<Var19 or var1-var11>=4*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s1",OnClose); If (Abs(var11-var19)>1.5*PriceScale and Abs(var11-var19)<=3.0*PriceScale) and C>=Var1 and Var11>Var19 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B2",OnClose); If (Abs(var11-var19)>1.5*PriceScale and Abs(var11-var19)<=3.0*PriceScale) and C<=Var1 and Var11<Var19 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S2",OnClose); If (Abs(var11-var19)>3.0*PriceScale and Abs(var11-var19)<=6.0*PriceScale) and C>=Var1 and L<=Var1+4*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B3",OnClose); If (Abs(var11-var19)>3.0*PriceScale and Abs(var11-var19)<=6.0*PriceScale) and C<=Var1 and H>=Var1-4*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S3",OnClose); If (Abs(var11-var19)>6.0*PriceScale) and C>=Var1 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B4",OnClose); If (Abs(var11-var19)>6.0*PriceScale) and C<=Var1 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S4",OnClose); If O<C and (CrossUp(H,Var3[2]) or (C>Var3[2] and Var3[3]>=Var3[2])) and C>=(Var3[2]+PriceScale) and (var11-var19)>0.8*PriceScale and abs(Var2)>=0.25 Then Buy("BT",OnClose); If O>C and (CrossDown(L,Var4[2]) or (C<Var4[2] and Var4[3]<=Var4[2])) and C<=(Var4[2]-PriceScale) and (var19-var11)>0.8*PriceScale and abs(Var2)>=0.25 Then Sell("BD",OnClose); if H[7]>Var45[8] and C[4]>Var45[5] and Var45[2]<Var45[1] and (Var1-C)>=5*PriceScale and CrossUp(C,Var5[1]) Then buy("TB"); if L[7]<Var45[8] and C[4]<Var45[5] and Var45[2]>Var45[1] and (C-Var1)>=5*PriceScale and CrossDown(C,Var6[1]) Then Sell("TS");
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-01-19 11:35:37

안녕하세요 예스스탁입니다. 1 현재 올려주신 수식에는 따로 간단히 할만한 내용은 없습니다. Abs(var11-var19)가 반복적으로 사용되므로 diff변수로 처리했습니다. 수식은 계산의 횟수를 줄여야 하므로 수식에서 반복적으로 사용되는 계산식이 있으면 아래 diff와 같이 변수로 처리해서 한번 계산후 해당 계산값을 가져가 처리하게 하시면 됩니다. 프로그램은 32비트 체계이므로 수식 적용후 약 1.4기가 이상의 메모리를 사용하면 윈도우에서 프로그램을 다운시키게 됩니다. 수식상 반복 계산을 줄여보시고 차트의 조회 봉갯수도 줄여보셔야 합니다. 2 var : diff(0); diff = Abs(var11-var19); If ((sTime > 90000 and sTime < 90459)) and C > DayOpen and C > Var7 and Bids - Asks > 1000 and C>=O Then Buy("시수1", OnClose); If ((sTime > 90000 and sTime < 90459)) and C < DayOpen and C < Var7 and Asks - Bids > 1000 and C<=O Then Sell("시도1", OnClose ); If (diff<=0.8*PriceScale) and (Var11>Var19 or var11-var1>=6*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b0",OnClose); If (diff<=0.8*PriceScale) and (Var11<Var19 or var1-var11>=6*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s0",OnClose); If (diff>0.8*PriceScale and diff<=1.5*PriceScale) and (Var11>Var19 or var11-var1>=4*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b1",OnClose); If (diff>0.8*PriceScale and diff<=1.5*PriceScale) and (Var11<Var19 or var1-var11>=4*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s1",OnClose); If (diff>1.5*PriceScale and diff<=3.0*PriceScale) and C>=Var1 and Var11>Var19 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B2",OnClose); If (diff>1.5*PriceScale and diff<=3.0*PriceScale) and C<=Var1 and Var11<Var19 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S2",OnClose); If (diff>3.0*PriceScale and diff<=6.0*PriceScale) and C>=Var1 and L<=Var1+4*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B3",OnClose); If (diff>3.0*PriceScale and diff<=6.0*PriceScale) and C<=Var1 and H>=Var1-4*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S3",OnClose); If (diff>6.0*PriceScale) and C>=Var1 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B4",OnClose); If (diff>6.0*PriceScale) and C<=Var1 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S4",OnClose); If O<C and (CrossUp(H,Var3[2]) or (C>Var3[2] and Var3[3]>=Var3[2])) and C>=(Var3[2]+PriceScale) and (var11-var19)>0.8*PriceScale and abs(Var2)>=0.25 Then Buy("BT",OnClose); If O>C and (CrossDown(L,Var4[2]) or (C<Var4[2] and Var4[3]<=Var4[2])) and C<=(Var4[2]-PriceScale) and (var19-var11)>0.8*PriceScale and abs(Var2)>=0.25 Then Sell("BD",OnClose); if H[7]>Var45[8] and C[4]>Var45[5] and Var45[2]<Var45[1] and (Var1-C)>=5*PriceScale and CrossUp(C,Var5[1]) Then buy("TB"); if L[7]<Var45[8] and C[4]<Var45[5] and Var45[2]>Var45[1] and (C-Var1)>=5*PriceScale and CrossDown(C,Var6[1]) Then Sell("TS"); 즐거운 하루되세요 > ceri21 님이 쓴 글입니다. > 제목 : 문의드립니다 > 시스템이 다운되는 현상이 나타납니다. 그래서 생각한건데요~ 제가 만든 수식이 너무 복잡하거나, 단순화하지 못해서 발생되는거라면 간단히 만들고 싶습니다. 부탁드립니다. 좀더 부연설명을 드리면 맨위의 신호와 맨 아랫쪽 신호를 추가하고 시스템다운 현상이 발생 합니다. If ((sTime > 90000 and sTime < 90459)) and C > DayOpen and C > Var7 and Bids - Asks > 1000 and C>=O Then Buy("시수1", OnClose); If ((sTime > 90000 and sTime < 90459)) and C < DayOpen and C < Var7 and Asks - Bids > 1000 and C<=O Then Sell("시도1", OnClose ); If (Abs(var11-var19)<=0.8*PriceScale) and (Var11>Var19 or var11-var1>=6*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b0",OnClose); If (Abs(var11-var19)<=0.8*PriceScale) and (Var11<Var19 or var1-var11>=6*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s0",OnClose); If (Abs(var11-var19)>0.8*PriceScale and Abs(var11-var19)<=1.5*PriceScale) and (Var11>Var19 or var11-var1>=4*PriceScale) and C>=Var1 and L<=Var1+2*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("b1",OnClose); If (Abs(var11-var19)>0.8*PriceScale and Abs(var11-var19)<=1.5*PriceScale) and (Var11<Var19 or var1-var11>=4*PriceScale) and C<=Var1 and H>=Var1-2*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("s1",OnClose); If (Abs(var11-var19)>1.5*PriceScale and Abs(var11-var19)<=3.0*PriceScale) and C>=Var1 and Var11>Var19 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B2",OnClose); If (Abs(var11-var19)>1.5*PriceScale and Abs(var11-var19)<=3.0*PriceScale) and C<=Var1 and Var11<Var19 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S2",OnClose); If (Abs(var11-var19)>3.0*PriceScale and Abs(var11-var19)<=6.0*PriceScale) and C>=Var1 and L<=Var1+4*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B3",OnClose); If (Abs(var11-var19)>3.0*PriceScale and Abs(var11-var19)<=6.0*PriceScale) and C<=Var1 and H>=Var1-4*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S3",OnClose); If (Abs(var11-var19)>6.0*PriceScale) and C>=Var1 and L<=Var1+3*PriceScale and Var11>Var1 and Var12>Var1 Then Buy("B4",OnClose); If (Abs(var11-var19)>6.0*PriceScale) and C<=Var1 and H>=Var1-3*PriceScale and Var11<Var1 and Var12<Var1 Then Sell("S4",OnClose); If O<C and (CrossUp(H,Var3[2]) or (C>Var3[2] and Var3[3]>=Var3[2])) and C>=(Var3[2]+PriceScale) and (var11-var19)>0.8*PriceScale and abs(Var2)>=0.25 Then Buy("BT",OnClose); If O>C and (CrossDown(L,Var4[2]) or (C<Var4[2] and Var4[3]<=Var4[2])) and C<=(Var4[2]-PriceScale) and (var19-var11)>0.8*PriceScale and abs(Var2)>=0.25 Then Sell("BD",OnClose); if H[7]>Var45[8] and C[4]>Var45[5] and Var45[2]<Var45[1] and (Var1-C)>=5*PriceScale and CrossUp(C,Var5[1]) Then buy("TB"); if L[7]<Var45[8] and C[4]<Var45[5] and Var45[2]>Var45[1] and (C-Var1)>=5*PriceScale and CrossDown(C,Var6[1]) Then Sell("TS");