커뮤니티

수식수정부탁드립니다.

프로필 이미지
yosong
2022-09-26 14:06:27
1146
글번호 162519
답변완료
안녕하세요 수식수정부탁드립니다. data12-코스피200 data1-코스피200연결선물 data2,4,5,6,7 콜 data3,8,9,10,11 풋 이렇게 설정되어있을때 등가에 맞는 콜,풋 값을 구하고 있습니다. 다른 글을 보고 수정해 보았는데 값이 빠질때도 많고 잘 안맞는거 같아 도움요청드립니다. 그럼 수고하세요~ var : ATM(0),sum10(0),cnt(0),sum20(0),cnt2(0),sum11(0),sum12(0),sum21(0),sum22(0),VV1(0); Array : VV[6](0),CC[6](0), VV2[6](0),CC2[6](0); if (data1(Bdate != Bdate[1])) then { ATM = data12(Floor(data12(c)/2.5)*2.5); VV[2]= iff(StrToNum(RightStr(Data2(SymbolCode),1)) == 5,StrToNum(RightStr(Data2(SymbolCode),3)),StrToNum(RightStr(Data2(SymbolCode),3))+0.5); CC[2] = Data2(c); VV[3] = iff(StrToNum(RightStr(Data4(SymbolCode),1)) == 5,StrToNum(RightStr(Data4(SymbolCode),3)),StrToNum(RightStr(Data4(SymbolCode),3))+0.5); CC[3] = Data4(c); VV[4] = iff(StrToNum(RightStr(Data5(SymbolCode),1)) == 5,StrToNum(RightStr(Data5(SymbolCode),3)),StrToNum(RightStr(Data5(SymbolCode),3))+0.5); CC[4] = Data5(c); VV[5] = iff(StrToNum(RightStr(Data6(SymbolCode),1)) == 5,StrToNum(RightStr(Data6(SymbolCode),3)),StrToNum(RightStr(Data6(SymbolCode),3))+0.5); CC[5] = Data6(c); VV[6] = iff(StrToNum(RightStr(Data7(SymbolCode),1)) == 5,StrToNum(RightStr(Data7(SymbolCode),3)),StrToNum(RightStr(Data7(SymbolCode),3))+0.5); CC[6] = Data7(c); sum10 = 0; sum11 = 0; sum12 = 0; For cnt = 2 to 6 { if VV[cnt] == ATM Then { sum10 = CC[cnt];} if VV[cnt] == ATM+2.5 Then { sum11 = CC[cnt];} if VV[cnt] == ATM-2.5 Then { sum12 = CC[cnt];} } ATM = data12(Floor(data12(c)/2.5)*2.5); VV2[2] = iff(StrToNum(RightStr(Data3(SymbolCode),1)) == 5,StrToNum(RightStr(Data3(SymbolCode),3)),StrToNum(RightStr(Data3(SymbolCode),3))+0.5); CC2[2] = Data3(c); VV2[3] = iff(StrToNum(RightStr(Data8(SymbolCode),1)) == 5,StrToNum(RightStr(Data8(SymbolCode),3)),StrToNum(RightStr(Data8(SymbolCode),3))+0.5); CC2[3] = Data8(c); VV2[4] = iff(StrToNum(RightStr(Data9(SymbolCode),1)) == 5,StrToNum(RightStr(Data9(SymbolCode),3)),StrToNum(RightStr(Data9(SymbolCode),3))+0.5); CC2[4] = Data9(c); VV2[5] = iff(StrToNum(RightStr(Data10(SymbolCode),1)) == 5,StrToNum(RightStr(Data10(SymbolCode),3)),StrToNum(RightStr(Data10(SymbolCode),3))+0.5); CC2[5] = Data10(c); VV2[6] = iff(StrToNum(RightStr(Data11(SymbolCode),1)) == 5,StrToNum(RightStr(Data11(SymbolCode),3)),StrToNum(RightStr(Data11(SymbolCode),3))+0.5); CC2[6] = Data11(c); sum20 = 0; sum21 = 0; sum22 = 0; For cnt2 = 2 to 6 { if VV2[cnt2] == ATM Then { sum20 = CC2[cnt2];} if VV2[cnt2] == ATM+2.5 Then { sum21 =CC2[cnt2];} if VV2[cnt2] == ATM-2.5 Then {sum22 = CC2[cnt2];} } }
지표
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2022-09-26 15:53:19

안녕하세요 예스스탁입니다. 식을 수정했습니다. 작성하신 수식이 첫봉 종가기준입니다. if data1(Bdate != Bdate[1]) then 조건 제거하시면 봉마다 새로 계산합니다. var : V1(0,Data1),V2(0,Data1),ATM(0,Data1); var : cnt(0,Data1); var : Ci(0,Data1),Pi(0,Data1); Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0); if data1(Bdate != Bdate[1]) then { V1 = Data12(c); V2 = data12(Floor(c/2.5)*2.5); if V1-V2 > 2.5/2 Then ATM = V2+2.5; else ATM = V2; #콜행사가 CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[4]= data5(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[5]= data6(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[6]= data7(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #콜종가 CC[2] = Data2(c); CC[3] = Data4(c); CC[4] = Data5(c); CC[5] = Data6(c); CC[6] = Data7(c); #풋행사가 PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[4]= data9(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[5]= data10(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[6]= data11(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #풋가격 PP[2] = Data3(c); PP[3] = Data8(c); PP[4] = Data9(c); PP[5] = Data10(c); PP[6] = Data11(c); var1 = 0; Var2 = 0; Var3 = 0; For cnt = 2 to 6 { if CS[cnt] == ATM Then var1 = CC[cnt]; if CS[cnt] == ATM+2.5 Then Var2 = CC[cnt]; if CS[cnt] == ATM-2.5 Then Var3 = CC[cnt]; if PS[cnt] == ATM Then value1 = PP[cnt]; if PS[cnt] == ATM+2.5 Then Value2 = PP[cnt]; if PS[cnt] == ATM-2.5 Then Value3 = PP[cnt]; } } if var1 > 0 Then Plot1(var1); if Var2 > 0 Then Plot2(Var2); if Var3 > 0 Then Plot3(Var3); if value1 > 0 then plot4(value1); if value2 > 0 then plot5(value2); if value3 > 0 then plot6(value3); 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : 수식수정부탁드립니다. > 안녕하세요 수식수정부탁드립니다. data12-코스피200 data1-코스피200연결선물 data2,4,5,6,7 콜 data3,8,9,10,11 풋 이렇게 설정되어있을때 등가에 맞는 콜,풋 값을 구하고 있습니다. 다른 글을 보고 수정해 보았는데 값이 빠질때도 많고 잘 안맞는거 같아 도움요청드립니다. 그럼 수고하세요~ var : ATM(0),sum10(0),cnt(0),sum20(0),cnt2(0),sum11(0),sum12(0),sum21(0),sum22(0),VV1(0); Array : VV[6](0),CC[6](0), VV2[6](0),CC2[6](0); if (data1(Bdate != Bdate[1])) then { ATM = data12(Floor(data12(c)/2.5)*2.5); VV[2]= iff(StrToNum(RightStr(Data2(SymbolCode),1)) == 5,StrToNum(RightStr(Data2(SymbolCode),3)),StrToNum(RightStr(Data2(SymbolCode),3))+0.5); CC[2] = Data2(c); VV[3] = iff(StrToNum(RightStr(Data4(SymbolCode),1)) == 5,StrToNum(RightStr(Data4(SymbolCode),3)),StrToNum(RightStr(Data4(SymbolCode),3))+0.5); CC[3] = Data4(c); VV[4] = iff(StrToNum(RightStr(Data5(SymbolCode),1)) == 5,StrToNum(RightStr(Data5(SymbolCode),3)),StrToNum(RightStr(Data5(SymbolCode),3))+0.5); CC[4] = Data5(c); VV[5] = iff(StrToNum(RightStr(Data6(SymbolCode),1)) == 5,StrToNum(RightStr(Data6(SymbolCode),3)),StrToNum(RightStr(Data6(SymbolCode),3))+0.5); CC[5] = Data6(c); VV[6] = iff(StrToNum(RightStr(Data7(SymbolCode),1)) == 5,StrToNum(RightStr(Data7(SymbolCode),3)),StrToNum(RightStr(Data7(SymbolCode),3))+0.5); CC[6] = Data7(c); sum10 = 0; sum11 = 0; sum12 = 0; For cnt = 2 to 6 { if VV[cnt] == ATM Then { sum10 = CC[cnt];} if VV[cnt] == ATM+2.5 Then { sum11 = CC[cnt];} if VV[cnt] == ATM-2.5 Then { sum12 = CC[cnt];} } ATM = data12(Floor(data12(c)/2.5)*2.5); VV2[2] = iff(StrToNum(RightStr(Data3(SymbolCode),1)) == 5,StrToNum(RightStr(Data3(SymbolCode),3)),StrToNum(RightStr(Data3(SymbolCode),3))+0.5); CC2[2] = Data3(c); VV2[3] = iff(StrToNum(RightStr(Data8(SymbolCode),1)) == 5,StrToNum(RightStr(Data8(SymbolCode),3)),StrToNum(RightStr(Data8(SymbolCode),3))+0.5); CC2[3] = Data8(c); VV2[4] = iff(StrToNum(RightStr(Data9(SymbolCode),1)) == 5,StrToNum(RightStr(Data9(SymbolCode),3)),StrToNum(RightStr(Data9(SymbolCode),3))+0.5); CC2[4] = Data9(c); VV2[5] = iff(StrToNum(RightStr(Data10(SymbolCode),1)) == 5,StrToNum(RightStr(Data10(SymbolCode),3)),StrToNum(RightStr(Data10(SymbolCode),3))+0.5); CC2[5] = Data10(c); VV2[6] = iff(StrToNum(RightStr(Data11(SymbolCode),1)) == 5,StrToNum(RightStr(Data11(SymbolCode),3)),StrToNum(RightStr(Data11(SymbolCode),3))+0.5); CC2[6] = Data11(c); sum20 = 0; sum21 = 0; sum22 = 0; For cnt2 = 2 to 6 { if VV2[cnt2] == ATM Then { sum20 = CC2[cnt2];} if VV2[cnt2] == ATM+2.5 Then { sum21 =CC2[cnt2];} if VV2[cnt2] == ATM-2.5 Then {sum22 = CC2[cnt2];} } }
프로필 이미지

yosong

2022-09-26 17:50:33

안녕하세요. 답변주신 내용은 잘 보았습니다. 그런데 등가가 변경될때 지표가 너무 왔다갔다해서 처음 수식처럼 첫봉기준으로 한번만 등가를 구하고 나머지는 구해진 등가로 값을 받아오고 싶은데 첫봉에 구해진 콜,풋 값만 유지가 되거나 값이 나오지 않아 다시 한번 도움 요청드립니다. 그럼 수고하세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식수정부탁드립니다. > 안녕하세요 예스스탁입니다. 식을 수정했습니다. 작성하신 수식이 첫봉 종가기준입니다. if data1(Bdate != Bdate[1]) then 조건 제거하시면 봉마다 새로 계산합니다. var : V1(0,Data1),V2(0,Data1),ATM(0,Data1); var : cnt(0,Data1); var : Ci(0,Data1),Pi(0,Data1); Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0); if data1(Bdate != Bdate[1]) then { V1 = Data12(c); V2 = data12(Floor(c/2.5)*2.5); if V1-V2 > 2.5/2 Then ATM = V2+2.5; else ATM = V2; #콜행사가 CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[4]= data5(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[5]= data6(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[6]= data7(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #콜종가 CC[2] = Data2(c); CC[3] = Data4(c); CC[4] = Data5(c); CC[5] = Data6(c); CC[6] = Data7(c); #풋행사가 PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[4]= data9(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[5]= data10(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[6]= data11(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #풋가격 PP[2] = Data3(c); PP[3] = Data8(c); PP[4] = Data9(c); PP[5] = Data10(c); PP[6] = Data11(c); var1 = 0; Var2 = 0; Var3 = 0; For cnt = 2 to 6 { if CS[cnt] == ATM Then var1 = CC[cnt]; if CS[cnt] == ATM+2.5 Then Var2 = CC[cnt]; if CS[cnt] == ATM-2.5 Then Var3 = CC[cnt]; if PS[cnt] == ATM Then value1 = PP[cnt]; if PS[cnt] == ATM+2.5 Then Value2 = PP[cnt]; if PS[cnt] == ATM-2.5 Then Value3 = PP[cnt]; } } if var1 > 0 Then Plot1(var1); if Var2 > 0 Then Plot2(Var2); if Var3 > 0 Then Plot3(Var3); if value1 > 0 then plot4(value1); if value2 > 0 then plot5(value2); if value3 > 0 then plot6(value3); 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : 수식수정부탁드립니다. > 안녕하세요 수식수정부탁드립니다. data12-코스피200 data1-코스피200연결선물 data2,4,5,6,7 콜 data3,8,9,10,11 풋 이렇게 설정되어있을때 등가에 맞는 콜,풋 값을 구하고 있습니다. 다른 글을 보고 수정해 보았는데 값이 빠질때도 많고 잘 안맞는거 같아 도움요청드립니다. 그럼 수고하세요~ var : ATM(0),sum10(0),cnt(0),sum20(0),cnt2(0),sum11(0),sum12(0),sum21(0),sum22(0),VV1(0); Array : VV[6](0),CC[6](0), VV2[6](0),CC2[6](0); if (data1(Bdate != Bdate[1])) then { ATM = data12(Floor(data12(c)/2.5)*2.5); VV[2]= iff(StrToNum(RightStr(Data2(SymbolCode),1)) == 5,StrToNum(RightStr(Data2(SymbolCode),3)),StrToNum(RightStr(Data2(SymbolCode),3))+0.5); CC[2] = Data2(c); VV[3] = iff(StrToNum(RightStr(Data4(SymbolCode),1)) == 5,StrToNum(RightStr(Data4(SymbolCode),3)),StrToNum(RightStr(Data4(SymbolCode),3))+0.5); CC[3] = Data4(c); VV[4] = iff(StrToNum(RightStr(Data5(SymbolCode),1)) == 5,StrToNum(RightStr(Data5(SymbolCode),3)),StrToNum(RightStr(Data5(SymbolCode),3))+0.5); CC[4] = Data5(c); VV[5] = iff(StrToNum(RightStr(Data6(SymbolCode),1)) == 5,StrToNum(RightStr(Data6(SymbolCode),3)),StrToNum(RightStr(Data6(SymbolCode),3))+0.5); CC[5] = Data6(c); VV[6] = iff(StrToNum(RightStr(Data7(SymbolCode),1)) == 5,StrToNum(RightStr(Data7(SymbolCode),3)),StrToNum(RightStr(Data7(SymbolCode),3))+0.5); CC[6] = Data7(c); sum10 = 0; sum11 = 0; sum12 = 0; For cnt = 2 to 6 { if VV[cnt] == ATM Then { sum10 = CC[cnt];} if VV[cnt] == ATM+2.5 Then { sum11 = CC[cnt];} if VV[cnt] == ATM-2.5 Then { sum12 = CC[cnt];} } ATM = data12(Floor(data12(c)/2.5)*2.5); VV2[2] = iff(StrToNum(RightStr(Data3(SymbolCode),1)) == 5,StrToNum(RightStr(Data3(SymbolCode),3)),StrToNum(RightStr(Data3(SymbolCode),3))+0.5); CC2[2] = Data3(c); VV2[3] = iff(StrToNum(RightStr(Data8(SymbolCode),1)) == 5,StrToNum(RightStr(Data8(SymbolCode),3)),StrToNum(RightStr(Data8(SymbolCode),3))+0.5); CC2[3] = Data8(c); VV2[4] = iff(StrToNum(RightStr(Data9(SymbolCode),1)) == 5,StrToNum(RightStr(Data9(SymbolCode),3)),StrToNum(RightStr(Data9(SymbolCode),3))+0.5); CC2[4] = Data9(c); VV2[5] = iff(StrToNum(RightStr(Data10(SymbolCode),1)) == 5,StrToNum(RightStr(Data10(SymbolCode),3)),StrToNum(RightStr(Data10(SymbolCode),3))+0.5); CC2[5] = Data10(c); VV2[6] = iff(StrToNum(RightStr(Data11(SymbolCode),1)) == 5,StrToNum(RightStr(Data11(SymbolCode),3)),StrToNum(RightStr(Data11(SymbolCode),3))+0.5); CC2[6] = Data11(c); sum20 = 0; sum21 = 0; sum22 = 0; For cnt2 = 2 to 6 { if VV2[cnt2] == ATM Then { sum20 = CC2[cnt2];} if VV2[cnt2] == ATM+2.5 Then { sum21 =CC2[cnt2];} if VV2[cnt2] == ATM-2.5 Then {sum22 = CC2[cnt2];} } }
프로필 이미지

예스스탁 예스스탁 답변

2022-09-27 08:39:24

안녕하세요 예스스탁입니다. 콜풋종목은 첫봉기준으로 구하고 이후에는 해당 콜풋의 종가를 그리게 수정했습니다. var : V1(0,Data1),V2(0,Data1),ATM(0,Data1); var : cnt(0,Data1); var : Ci(0,Data1),Pi(0,Data1); Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0); #콜종가 CC[2] = Data2(c); CC[3] = Data4(c); CC[4] = Data5(c); CC[5] = Data6(c); CC[6] = Data7(c); #풋가격 PP[2] = Data3(c); PP[3] = Data8(c); PP[4] = Data9(c); PP[5] = Data10(c); PP[6] = Data11(c); if data1(Bdate != Bdate[1]) then { V1 = Data12(c); V2 = data12(Floor(c/2.5)*2.5); if V1-V2 > 2.5/2 Then ATM = V2+2.5; else ATM = V2; #콜행사가 CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[4]= data5(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[5]= data6(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[6]= data7(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #풋행사가 PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[4]= data9(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[5]= data10(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[6]= data11(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); var1 = 0; Var2 = 0; Var3 = 0; For cnt = 2 to 6 { if CS[cnt] == ATM Then var1 = cnt; if CS[cnt] == ATM+2.5 Then Var2 = cnt; if CS[cnt] == ATM-2.5 Then Var3 = cnt; if PS[cnt] == ATM Then value1 = cnt; if PS[cnt] == ATM+2.5 Then Value2 = cnt; if PS[cnt] == ATM-2.5 Then Value3 = cnt; } } if var1 > 0 Then Plot1(CC[var1]); if Var2 > 0 Then Plot2(CC[Var2]); if Var3 > 0 Then Plot3(CC[Var3]); if value1 > 0 then plot4(PP[value1]); if value2 > 0 then plot5(PP[value2]); if value3 > 0 then plot6(PP[value3]); 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : Re : Re : 수식수정부탁드립니다. > 안녕하세요. 답변주신 내용은 잘 보았습니다. 그런데 등가가 변경될때 지표가 너무 왔다갔다해서 처음 수식처럼 첫봉기준으로 한번만 등가를 구하고 나머지는 구해진 등가로 값을 받아오고 싶은데 첫봉에 구해진 콜,풋 값만 유지가 되거나 값이 나오지 않아 다시 한번 도움 요청드립니다. 그럼 수고하세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식수정부탁드립니다. > 안녕하세요 예스스탁입니다. 식을 수정했습니다. 작성하신 수식이 첫봉 종가기준입니다. if data1(Bdate != Bdate[1]) then 조건 제거하시면 봉마다 새로 계산합니다. var : V1(0,Data1),V2(0,Data1),ATM(0,Data1); var : cnt(0,Data1); var : Ci(0,Data1),Pi(0,Data1); Array : CS[7](0),CC[7](0),PS[7](0),PP[7](0); if data1(Bdate != Bdate[1]) then { V1 = Data12(c); V2 = data12(Floor(c/2.5)*2.5); if V1-V2 > 2.5/2 Then ATM = V2+2.5; else ATM = V2; #콜행사가 CS[2]= data2(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[3]= data4(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[4]= data5(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[5]= data6(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); CS[6]= data7(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #콜종가 CC[2] = Data2(c); CC[3] = Data4(c); CC[4] = Data5(c); CC[5] = Data6(c); CC[6] = Data7(c); #풋행사가 PS[2]= data3(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[3]= data8(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[4]= data9(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[5]= data10(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); PS[6]= data11(iff(StrToNum(RightStr(SymbolCode,1)) == 5 or StrToNum(RightStr(SymbolCode,1)) == 0, StrToNum(RightStr(SymbolCode,3)), StrToNum(RightStr(SymbolCode,3))+0.5)); #풋가격 PP[2] = Data3(c); PP[3] = Data8(c); PP[4] = Data9(c); PP[5] = Data10(c); PP[6] = Data11(c); var1 = 0; Var2 = 0; Var3 = 0; For cnt = 2 to 6 { if CS[cnt] == ATM Then var1 = CC[cnt]; if CS[cnt] == ATM+2.5 Then Var2 = CC[cnt]; if CS[cnt] == ATM-2.5 Then Var3 = CC[cnt]; if PS[cnt] == ATM Then value1 = PP[cnt]; if PS[cnt] == ATM+2.5 Then Value2 = PP[cnt]; if PS[cnt] == ATM-2.5 Then Value3 = PP[cnt]; } } if var1 > 0 Then Plot1(var1); if Var2 > 0 Then Plot2(Var2); if Var3 > 0 Then Plot3(Var3); if value1 > 0 then plot4(value1); if value2 > 0 then plot5(value2); if value3 > 0 then plot6(value3); 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : 수식수정부탁드립니다. > 안녕하세요 수식수정부탁드립니다. data12-코스피200 data1-코스피200연결선물 data2,4,5,6,7 콜 data3,8,9,10,11 풋 이렇게 설정되어있을때 등가에 맞는 콜,풋 값을 구하고 있습니다. 다른 글을 보고 수정해 보았는데 값이 빠질때도 많고 잘 안맞는거 같아 도움요청드립니다. 그럼 수고하세요~ var : ATM(0),sum10(0),cnt(0),sum20(0),cnt2(0),sum11(0),sum12(0),sum21(0),sum22(0),VV1(0); Array : VV[6](0),CC[6](0), VV2[6](0),CC2[6](0); if (data1(Bdate != Bdate[1])) then { ATM = data12(Floor(data12(c)/2.5)*2.5); VV[2]= iff(StrToNum(RightStr(Data2(SymbolCode),1)) == 5,StrToNum(RightStr(Data2(SymbolCode),3)),StrToNum(RightStr(Data2(SymbolCode),3))+0.5); CC[2] = Data2(c); VV[3] = iff(StrToNum(RightStr(Data4(SymbolCode),1)) == 5,StrToNum(RightStr(Data4(SymbolCode),3)),StrToNum(RightStr(Data4(SymbolCode),3))+0.5); CC[3] = Data4(c); VV[4] = iff(StrToNum(RightStr(Data5(SymbolCode),1)) == 5,StrToNum(RightStr(Data5(SymbolCode),3)),StrToNum(RightStr(Data5(SymbolCode),3))+0.5); CC[4] = Data5(c); VV[5] = iff(StrToNum(RightStr(Data6(SymbolCode),1)) == 5,StrToNum(RightStr(Data6(SymbolCode),3)),StrToNum(RightStr(Data6(SymbolCode),3))+0.5); CC[5] = Data6(c); VV[6] = iff(StrToNum(RightStr(Data7(SymbolCode),1)) == 5,StrToNum(RightStr(Data7(SymbolCode),3)),StrToNum(RightStr(Data7(SymbolCode),3))+0.5); CC[6] = Data7(c); sum10 = 0; sum11 = 0; sum12 = 0; For cnt = 2 to 6 { if VV[cnt] == ATM Then { sum10 = CC[cnt];} if VV[cnt] == ATM+2.5 Then { sum11 = CC[cnt];} if VV[cnt] == ATM-2.5 Then { sum12 = CC[cnt];} } ATM = data12(Floor(data12(c)/2.5)*2.5); VV2[2] = iff(StrToNum(RightStr(Data3(SymbolCode),1)) == 5,StrToNum(RightStr(Data3(SymbolCode),3)),StrToNum(RightStr(Data3(SymbolCode),3))+0.5); CC2[2] = Data3(c); VV2[3] = iff(StrToNum(RightStr(Data8(SymbolCode),1)) == 5,StrToNum(RightStr(Data8(SymbolCode),3)),StrToNum(RightStr(Data8(SymbolCode),3))+0.5); CC2[3] = Data8(c); VV2[4] = iff(StrToNum(RightStr(Data9(SymbolCode),1)) == 5,StrToNum(RightStr(Data9(SymbolCode),3)),StrToNum(RightStr(Data9(SymbolCode),3))+0.5); CC2[4] = Data9(c); VV2[5] = iff(StrToNum(RightStr(Data10(SymbolCode),1)) == 5,StrToNum(RightStr(Data10(SymbolCode),3)),StrToNum(RightStr(Data10(SymbolCode),3))+0.5); CC2[5] = Data10(c); VV2[6] = iff(StrToNum(RightStr(Data11(SymbolCode),1)) == 5,StrToNum(RightStr(Data11(SymbolCode),3)),StrToNum(RightStr(Data11(SymbolCode),3))+0.5); CC2[6] = Data11(c); sum20 = 0; sum21 = 0; sum22 = 0; For cnt2 = 2 to 6 { if VV2[cnt2] == ATM Then { sum20 = CC2[cnt2];} if VV2[cnt2] == ATM+2.5 Then { sum21 =CC2[cnt2];} if VV2[cnt2] == ATM-2.5 Then {sum22 = CC2[cnt2];} } }