커뮤니티
34659번 질문 추가 질문
2014-01-30 00:10:53
178
글번호 72010
수고하십니다
다중 진입에서
각각의 조건이 다른 진입에 34659의 사용자함수를 사용한 청산을 적용할 때
변수들이 달라질 것입니다.
그러면, 변수명도 달리 만들어야 하는데 그 방법은 어떻케 하는지 부탁드립니다.
34659번 질문 답변내용
안녕하세요
예스스탁입니다.
아래 2개 사용자함수 만드셔서 사용하시면 됩니다.
1.
사용자함수명 : ReadyToUp
반환값형 : 논리형
사용자 함수식 :
input: MaxShootUpAngle(Numeric), AngleWeight(Numeric), SwingStrength(Numeric),각하봉(Numeric),각상봉(Numeric);
var : ShootUpAngle(0), // 상승각도
PrevLowTime(0), //전 저점 시간
PrevLow(0),//전 저점 가격
ReadyTofallfall(False), //급등시 하락 반전 조건
X1(0),X2(0), //X좌표(시간)
Y1(0),Y2(0), //Y좌표(가격)
ShootDnAngle(0), // 상승각도
PrevhighTime(0), //전 저점 시간
Prevhigh(0),//전 저점 가격
ReadyToUpUp(False), //급등시 하락 반전 조건
SX1(0),SX2(0), //X좌표(시간)
SY1(0),SY2(0); //Y좌표(가격)
If SwingLowBar(1,Low, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
PrevLow=Low[SwingStrength];
PrevLowTime=sTime[SwingStrength];
}
X1=1;
X2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevLowTime))*AngleWeight;
Y1=PrevLow;
Y2=Close;
If (Y2-Y1)<>0 and (X2-X1)<>0 Then
ShootupAngle =ArcTangent((Y2-Y1)/(X2-X1))*180/3.14;
ReadyTofallfall=False;
If ShootUpAngle>MaxShootUpAngle Then ReadyTofallfall=True;
If SwingHighBar(1,High, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
Prevhigh=high[SwingStrength];
PrevhighTime=sTime[SwingStrength];
}
SX1=1;
SX2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevhighTime))*AngleWeight;
SY1=Prevhigh;
SY2=Close;
If (SY2-SY1)<>0 and (SX2-SX1)<>0 Then
ShootDnAngle =ArcTangent((SY2-SY1)/(SX2-SX1))*180/3.14;
ReadyToUpUp=False;
If ShootDnAngle<-MaxShootUpAngle Then ReadyToUpUp=True;
ReadyToUp = ReadyToUpUp;
2.
사용자함수명 : ReadyToFall
반환값형 : 논리형
사용자 함수식 :
input: MaxShootUpAngle(Numeric), AngleWeight(Numeric), SwingStrength(Numeric),각하봉(Numeric),각상봉(Numeric);
var : ShootUpAngle(0), // 상승각도
PrevLowTime(0), //전 저점 시간
PrevLow(0),//전 저점 가격
ReadyTofallfall(False), //급등시 하락 반전 조건
X1(0),X2(0), //X좌표(시간)
Y1(0),Y2(0), //Y좌표(가격)
ShootDnAngle(0), // 상승각도
PrevhighTime(0), //전 저점 시간
Prevhigh(0),//전 저점 가격
ReadyToUpUp(False), //급등시 하락 반전 조건
SX1(0),SX2(0), //X좌표(시간)
SY1(0),SY2(0); //Y좌표(가격)
If SwingLowBar(1,Low, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
PrevLow=Low[SwingStrength];
PrevLowTime=sTime[SwingStrength];
}
X1=1;
X2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevLowTime))*AngleWeight;
Y1=PrevLow;
Y2=Close;
If (Y2-Y1)<>0 and (X2-X1)<>0 Then
ShootupAngle =ArcTangent((Y2-Y1)/(X2-X1))*180/3.14;
ReadyTofallfall=False;
If ShootUpAngle>MaxShootUpAngle Then ReadyTofallfall=True;
If SwingHighBar(1,High, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
Prevhigh=high[SwingStrength];
PrevhighTime=sTime[SwingStrength];
}
SX1=1;
SX2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevhighTime))*AngleWeight;
SY1=Prevhigh;
SY2=Close;
If (SY2-SY1)<>0 and (SX2-SX1)<>0 Then
ShootDnAngle =ArcTangent((SY2-SY1)/(SX2-SX1))*180/3.14;
ReadyToUpUp=False;
If ShootDnAngle<-MaxShootUpAngle Then ReadyToUpUp=True;
ReadyTofall = ReadyTofallfall;
3.
시스템식에서는 아래와 같이 작성해 사용하시면 됩니다.
input: MaxShootUpAngle(85), AngleWeight(0.029), SwingStrength(2),각하봉(5),각상봉(4);
If ReadyToFall(MaxShootUpAngle,AngleWeight,SwingStrength,각하봉,각상봉) == true and Marketposition==1 Then
ExitLong("급각수청", AtStop,Lowest(Low,각하봉));
If ReadyToUp(MaxShootUpAngle,AngleWeight,SwingStrength,각하봉,각상봉) == true and Marketposition==-1 Then
ExitShort("급각도청", AtStop,Highest(High,각상봉));
답변 1
예스스탁 예스스탁 답변
2014-02-03 10:26:33
안녕하세요
예스스탁입니다.
사용자함수를 추가로 만드실 필요가 없습니다.
사용자함수는 하나의 계산식에 외부변수만 변경해서 사용하기 위해 만드는 것이므로
시스템식에서 필요한 갯수만큼 아래와 같이 각 외부변수 달리해서 변수에 저장해 사용하시면 됩니다.
input: M1(1), A1(1), S1(1),각하봉1(1),각상봉1(1);
input: M2(2), A2(2), S2(2),각하봉2(2),각상봉2(2);
input: M3(3), A3(3), S3(3),각하봉3(3),각상봉3(3);
var : up1(false),up2(false),up3(false);
var : fall1(false),fall2(false),fall3(false);
up1 = ReadyToUp(M1,A1,S1,각하봉1,각상봉1);
up2 = ReadyToUp(M2,A2,S2,각하봉2,각상봉2);
up3 = ReadyToUp(M3,A3,S3,각하봉3,각상봉3);
fall1 = ReadyToUp(M1,A1,S1,각하봉1,각상봉1);
fall2 = ReadyToUp(M2,A2,S2,각하봉2,각상봉2);
fall3 = ReadyToUp(M3,A3,S3,각하봉3,각상봉3);
즐거운 하루되세요
> 자아준 님이 쓴 글입니다.
> 제목 : 34659번 질문 추가 질문
> 수고하십니다
다중 진입에서
각각의 조건이 다른 진입에 34659의 사용자함수를 사용한 청산을 적용할 때
변수들이 달라질 것입니다.
그러면, 변수명도 달리 만들어야 하는데 그 방법은 어떻케 하는지 부탁드립니다.
34659번 질문 답변내용
안녕하세요
예스스탁입니다.
아래 2개 사용자함수 만드셔서 사용하시면 됩니다.
1.
사용자함수명 : ReadyToUp
반환값형 : 논리형
사용자 함수식 :
input: MaxShootUpAngle(Numeric), AngleWeight(Numeric), SwingStrength(Numeric),각하봉(Numeric),각상봉(Numeric);
var : ShootUpAngle(0), // 상승각도
PrevLowTime(0), //전 저점 시간
PrevLow(0),//전 저점 가격
ReadyTofallfall(False), //급등시 하락 반전 조건
X1(0),X2(0), //X좌표(시간)
Y1(0),Y2(0), //Y좌표(가격)
ShootDnAngle(0), // 상승각도
PrevhighTime(0), //전 저점 시간
Prevhigh(0),//전 저점 가격
ReadyToUpUp(False), //급등시 하락 반전 조건
SX1(0),SX2(0), //X좌표(시간)
SY1(0),SY2(0); //Y좌표(가격)
If SwingLowBar(1,Low, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
PrevLow=Low[SwingStrength];
PrevLowTime=sTime[SwingStrength];
}
X1=1;
X2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevLowTime))*AngleWeight;
Y1=PrevLow;
Y2=Close;
If (Y2-Y1)<>0 and (X2-X1)<>0 Then
ShootupAngle =ArcTangent((Y2-Y1)/(X2-X1))*180/3.14;
ReadyTofallfall=False;
If ShootUpAngle>MaxShootUpAngle Then ReadyTofallfall=True;
If SwingHighBar(1,High, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
Prevhigh=high[SwingStrength];
PrevhighTime=sTime[SwingStrength];
}
SX1=1;
SX2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevhighTime))*AngleWeight;
SY1=Prevhigh;
SY2=Close;
If (SY2-SY1)<>0 and (SX2-SX1)<>0 Then
ShootDnAngle =ArcTangent((SY2-SY1)/(SX2-SX1))*180/3.14;
ReadyToUpUp=False;
If ShootDnAngle<-MaxShootUpAngle Then ReadyToUpUp=True;
ReadyToUp = ReadyToUpUp;
2.
사용자함수명 : ReadyToFall
반환값형 : 논리형
사용자 함수식 :
input: MaxShootUpAngle(Numeric), AngleWeight(Numeric), SwingStrength(Numeric),각하봉(Numeric),각상봉(Numeric);
var : ShootUpAngle(0), // 상승각도
PrevLowTime(0), //전 저점 시간
PrevLow(0),//전 저점 가격
ReadyTofallfall(False), //급등시 하락 반전 조건
X1(0),X2(0), //X좌표(시간)
Y1(0),Y2(0), //Y좌표(가격)
ShootDnAngle(0), // 상승각도
PrevhighTime(0), //전 저점 시간
Prevhigh(0),//전 저점 가격
ReadyToUpUp(False), //급등시 하락 반전 조건
SX1(0),SX2(0), //X좌표(시간)
SY1(0),SY2(0); //Y좌표(가격)
If SwingLowBar(1,Low, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
PrevLow=Low[SwingStrength];
PrevLowTime=sTime[SwingStrength];
}
X1=1;
X2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevLowTime))*AngleWeight;
Y1=PrevLow;
Y2=Close;
If (Y2-Y1)<>0 and (X2-X1)<>0 Then
ShootupAngle =ArcTangent((Y2-Y1)/(X2-X1))*180/3.14;
ReadyTofallfall=False;
If ShootUpAngle>MaxShootUpAngle Then ReadyTofallfall=True;
If SwingHighBar(1,High, SwingStrength, SwingStrength, SwingStrength*2+1)==SwingStrength then{
Prevhigh=high[SwingStrength];
PrevhighTime=sTime[SwingStrength];
}
SX1=1;
SX2=1+(TimeToMinutes(Time)-TimeToMinutes(PrevhighTime))*AngleWeight;
SY1=Prevhigh;
SY2=Close;
If (SY2-SY1)<>0 and (SX2-SX1)<>0 Then
ShootDnAngle =ArcTangent((SY2-SY1)/(SX2-SX1))*180/3.14;
ReadyToUpUp=False;
If ShootDnAngle<-MaxShootUpAngle Then ReadyToUpUp=True;
ReadyTofall = ReadyTofallfall;
3.
시스템식에서는 아래와 같이 작성해 사용하시면 됩니다.
input: MaxShootUpAngle(85), AngleWeight(0.029), SwingStrength(2),각하봉(5),각상봉(4);
If ReadyToFall(MaxShootUpAngle,AngleWeight,SwingStrength,각하봉,각상봉) == true and Marketposition==1 Then
ExitLong("급각수청", AtStop,Lowest(Low,각하봉));
If ReadyToUp(MaxShootUpAngle,AngleWeight,SwingStrength,각하봉,각상봉) == true and Marketposition==-1 Then
ExitShort("급각도청", AtStop,Highest(High,각상봉));