커뮤니티
수식부탁드립니다
2016-11-15 12:16:24
81
글번호 103998
안녕하세요
아래수식은 medianprice와 adx를 이용한 매수매도식입니다
이식의 30틱차트의 매수매도신호를 120틱차트에서 발생되도록 수식을 변형부탁드립니다
감사합니다
input :P1(2);
var1 = MedianPrice;
var2 = ADX(p1);
if var1 > var1[1] and var2 > var2[1]
then
buy("MPa매수");
if var1 < var1[1] and var2 > var2[1]
then
sell("MPa매도");
답변 1
예스스탁 예스스탁 답변
2016-11-15 14:44:12
안녕하세요
예스스탁입니다.
ADX는 사용하시는 주기에서 다른주기의 값을 계산하기 어려운 지표입니다.
input : P1(14);
var : V1(0,data1),V2(0,data2);
v1 = data2(MedianPrice);
v2 = data2(ADX(p1));
if v1 > v1[1] and v2 > v2[1]
then
buy("MPa매수");
if v1 < v1[1] and v2 > v2[1]
then
sell("MPa매도");
해당 내용은 타종목 참조를 이용해 위와 같이 작성하셔야 합니다.
아래 내용은 참고용으로 올려드립니다.
도출되는 갑은 근사값입니다. 정확히 계산이 되지는 않습니다.
Input : N(4),ADXP(14);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Var : Counter(0), TRange(0), MyRange(0), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0);
Var : CummDMI(0), Return(0),count(0),TF(0),idx(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0);
if Bdate != Bdate[1] Then
idx = 0;
if Bdate == Bdate[1] Then
idx = idx+1;
TF = idx%N;
if bdate != bdate[1] or (bdate == bdate[1] and TF < TF[1]) Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
for cnt = 1 to 60{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TR[cnt] = TR[cnt-1][1];
DMIv[cnt] = DMIv[cnt-1][1];
ADXv[cnt] = ADXv[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if CC[1] > 0 Then{
If CC[1] > HH[0] then
TH = CC[1];
else
TH = HH[0];
If CC[1] < LL[0] then
TL = CC[1];
else
TL = LL[0];
TR[0] = TH-TL;
}
If Dcnt == ADXP+1 Then {
MyRange = ADXP;
DPlus = 0;
PlusDM14 = 0;
TRange = 0;
DMinus = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
Else If Dcnt > ADXP+1 Then {
If HH[0] - HH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[0] - HH[1];
If LL[1] - LL[0] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[1] - LL[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0 ;
If MyRange > 0 Then {
TRange = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
If DMIV[ADXP] == 0 Then{
CummDMI = 0;
for Counter = 0 To ADXP-1 {
if DMiV[counter] > 0 Then
CummDMI = CummDMI + DMIV[Counter];
}
ADXv[0] = CummDMI / CurrentBar;
}
Else
ADXv[0] = (ADXv[1] * (ADXP - 1) + DMIv[0]) / ADXP;
if (HH[0]+LL[0])/2 > (HH[1]+LL[1])/2 and ADXv[0] > Adxv[1] Then
buy();
if (HH[0]+LL[0])/2 < (HH[1]+LL[1])/2 and ADXv[0] > Adxv[1] Then
sell();
즐거운 하루되세요
> bestkim 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다
> 안녕하세요
아래수식은 medianprice와 adx를 이용한 매수매도식입니다
이식의 30틱차트의 매수매도신호를 120틱차트에서 발생되도록 수식을 변형부탁드립니다
감사합니다
input :P1(2);
var1 = MedianPrice;
var2 = ADX(p1);
if var1 > var1[1] and var2 > var2[1]
then
buy("MPa매수");
if var1 < var1[1] and var2 > var2[1]
then
sell("MPa매도");
다음글