앤드류스 피치포크 그리기 VIDEO
앤드류스 피치포크는 때때로 다른 지표와 함께 사용되어 추세 시장에서 잠재적인 지지 및 저항 수준을 식별하는 데 사용되는 인기 있는 기술 분석 도구입니다. 이러한 수준은 성공적인 트레이딩 전략의 중요한 기초가 되어 트레이더에게 명확성, 구조 및 결정에 대한 자신감을 제공합니다.
이 글과 해당 동영상은 차트에 앤드류스 피치포크를 그리는 cBot을 만드는 방법과 차트가 변경됨에 따라 피치포크가 자동으로 업데이트되도록 코딩하는 방법을 보여줍니다.
차트에 앤드류스 피치포크 그리기 앤드류스 피치포크는 중간선(중심선)과 두 개의 평행선으로 구성되어 채널을 형성합니다. 이러한 객체는 트레이더가 추세를 시각화하고 가격 움직임을 예측하며 거래의 잠재적인 진입 및 퇴장 지점을 식별하는 데 도움을 줍니다.
앤드류스 피치포크는 세 가지 주요 점(고점, 저점 및 후속 고점 또는 저점)을 사용하여 가격 차트에 그려집니다. 이 채널 내의 가격 움직임은 종종 상단선과 하단선 사이에서 진동하며 중간선은 되돌림 지점 역할을 합니다.
우리는 두 개의 저점과 그 사이의 고점이 필요한 상승 추세의 앤드류스 피치포크를 그리는 cBot을 만들 것입니다. 하락 추세의 앤드류스 피치포크의 경우 반대로 두 개의 고점과 그 사이의 저점이 필요합니다.
cTrader Algo에서 새로 만들기 버튼을 클릭하여 cBot을 생성하고 이름을 입력한 다음 생성 을 클릭하세요.
Andrews's Pitchfork는 두 개의 최저가와 하나의 최고가, 두 개의 최소 가격 및 하나의 최고 가격을 저장하기 위해 여섯 개의 매개변수가 필요합니다. 여섯 개의 매개변수를 선언하세요.
private int _highIndex ;
private int _lowIndex1 ;
private int _lowIndex2 ;
private double _max ;
private double _min1 ;
private double _min2 ;
피치포크 포인트에 필요한 두 개의 최소 가격과 최고 가격을 감지하세요.
_max = Bars . HighPrices . Maximum ( 50 );
_min1 = Bars . LowPrices . Minimum ( 50 );
_min2 = Bars . LowPrices . Minimum ( 10 );
cTrader Algo를 사용하면 절대 시간 또는 상대적인 바 인덱스를 제공하는 메서드를 통해 시간 위치를 정의할 수 있습니다. 차트에 피치포크를 그리는 데 사용되는 메서드는 관련 오버라이드를 소개합니다. 이 경우, 우리는 상대적인 바 인덱스를 선택했습니다.
최고가와 최저가의 인덱스를 감지하는 코드를 작성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . HighPrices . Last ( i ) == _max )
_highIndex = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min1 )
_lowIndex1 = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 10 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min2 )
_lowIndex2 = Bars . Count - i - 1 ;
}
차트에 피치포크를 그리세요.
Chart . DrawAndrewsPitchfork ( "AndrewsPitchfork" , _lowIndex1 , _min1 , _highIndex , _max , _lowIndex2 , _min2 , Color . Red );
아래에서 전체 코드를 복사할 수 있습니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 using System ;
using cAlgo.API ;
using cAlgo.API.Collections ;
using cAlgo.API.Indicators ;
using cAlgo.API.Internals ;
namespace cAlgo.Robots
{
[Robot(AccessRights = AccessRights.None, AddIndicators = true)]
public class AndrewsPitchfork : Robot
{
private int _highIndex ;
private int _lowIndex1 ;
private int _lowIndex2 ;
private double _max ;
private double _min1 ;
private double _min2 ;
protected override void OnStart ()
{
_max = Bars . HighPrices . Maximum ( 50 );
_min1 = Bars . LowPrices . Minimum ( 50 );
_min2 = Bars . LowPrices . Minimum ( 10 );
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . HighPrices . Last ( i ) == _max )
_highIndex = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min1 )
_lowIndex1 = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 10 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min2 )
_lowIndex2 = Bars . Count - i - 1 ;
}
Chart . DrawAndrewsPitchfork ( "AndrewsPitchfork" , _lowIndex1 , _min1 , _highIndex , _max , _lowIndex2 , _min2 , Color . Red );
}
protected override void OnTick ()
{
// Handle price updates here
}
protected override void OnStop ()
{
// Handle cBot stop here
}
}
}
cBot을 빌드하려면 Ctrl + B 단축키를 사용하거나 빌드 를 클릭하세요.
cBot의 로컬 인스턴스를 추가하세요: 인스턴스 추가 를 클릭하고, 로컬 옵션을 선택한 다음, 인스턴스 추가 를 클릭하세요.
인스턴스를 클릭하고 백테스트 탭으로 이동하세요. 백테스트를 위한 기간을 선택하고, 시각 모드 옵션을 활성화한 다음 재생 아이콘을 클릭하세요.
차트에 Andrews' Pitchfork 가 그려진 것을 볼 수 있어야 합니다.
Andrews' Pitchfork 업데이트 Algo 앱으로 돌아가서 차트가 변경됨에 따라 피치포크를 업데이트하도록 cBot을 코딩하세요.
피치포크를 그리는 새로운 메서드를 생성하고 원래 로직을 해당 메서드로 이동하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 private void DrawAndrewsPitchfork ()
{
_max = Bars . HighPrices . Maximum ( 50 );
_min1 = Bars . LowPrices . Minimum ( 50 );
_min2 = Bars . LowPrices . Minimum ( 10 );
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . HighPrices . Last ( i ) == _max )
_highIndex = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min1 )
_lowIndex1 = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 10 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min2 )
_lowIndex2 = Bars . Count - i - 1 ;
}
if ( _lowIndex1 < _highIndex && _highIndex < _lowIndex2 )
Chart . DrawAndrewsPitchfork ( "AndrewsPitchfork" , _lowIndex1 , _min1 , _highIndex , _max , _lowIndex2 , _min2 , Color . Red );
}
새로운 메서드를 OnBar() 메서드에서 호출하세요.
protected override void OnBar ()
{
DrawAndrewsPitchfork ();
}
상승 추세 설정만 필요하므로 최소값과 최대값이 올바른 순서인지 확인하는 조건부 로직을 작성하세요.
if ( _lowIndex1 < _highIndex && _highIndex < _lowIndex2 )
Chart . DrawAndrewsPitchfork ( "AndrewsPitchfork" , _lowIndex1 , _min1 , _highIndex , _max , _lowIndex2 , _min2 , Color . Red );
아래에서 전체 코드를 복사할 수 있습니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 using System ;
using cAlgo.API ;
using cAlgo.API.Collections ;
using cAlgo.API.Indicators ;
using cAlgo.API.Internals ;
namespace cAlgo.Robots
{
[Robot(AccessRights = AccessRights.None, AddIndicators = true)]
public class AndrewsPitchfork : Robot
{
private int _highIndex ;
private int _lowIndex1 ;
private int _lowIndex2 ;
private double _max ;
private double _min1 ;
private double _min2 ;
protected override void OnStart ()
{
DrawAndrewsPitchfork ();
}
private void DrawAndrewsPitchfork ()
{
_max = Bars . HighPrices . Maximum ( 50 );
_min1 = Bars . LowPrices . Minimum ( 50 );
_min2 = Bars . LowPrices . Minimum ( 10 );
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . HighPrices . Last ( i ) == _max )
_highIndex = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 50 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min1 )
_lowIndex1 = Bars . Count - i - 1 ;
}
for ( int i = 0 ; i <= 10 ; i ++ )
{
if ( Bars . LowPrices . Last ( i ) == _min2 )
_lowIndex2 = Bars . Count - i - 1 ;
}
if ( _lowIndex1 < _highIndex && _highIndex < _lowIndex2 )
Chart . DrawAndrewsPitchfork ( "AndrewsPitchfork" , _lowIndex1 , _min1 , _highIndex , _max , _lowIndex2 , _min2 , Color . Red );
}
protected override void OnBar ()
{
DrawAndrewsPitchfork ();
}
protected override void OnStop ()
{
// Handle cBot stop here
}
}
}
cBot을 다시 빌드하고 백테스트를 실행하세요.
시각 모드의 속도를 높이고 재생 아이콘을 클릭하세요.
이번에는 차트가 변경됨에 따라 피치포크가 지속적으로 다시 그려지는 것을 볼 수 있어야 합니다.
요약 이 글은 심볼 차트에 Andrews' Pitchfork를 그리고 차트가 변경됨에 따라 피치포크를 업데이트하는 방법을 설명했습니다.