Tính toán nhanh mẫu hình VCP với công cụ vẽ - Code Amibroker

Tính toán nhanh mẫu hình VCP với công cụ vẽ - Code Amibroker
3 min read

 

 

    Mọi người nhìn hình trên cũng đã hiểu rồi. Anh chị copy đoạn code mình để phía dưới và dán vào chart mà anh chị đang sử dụng là xong.

Cách sử dụng:
  •  Anh chị muốn vẽ T1 thì nhấn phím số 1 sau đó vẽ, 
  • Muốn vẽ T2 thì nhấn phím số 2 rồi vẽ.
  • ...
  • Sau khi vẽ xong anh chị muốn xoá thì nhấn phím số 0 rồi click vào màn hình là xong
Chúc anh chị nhà đầu tư thành công !

_SECTION_BEGIN( "Measure volatility contractions" ); // Using GetAsyncKeyState()
nMM = 6; //Max no. of MM lines

bi = BarIndex();
dt = DateTime();
t=0;
pct="";
duration = "";
titel_new = "";
MouseBtn = GetCursorMouseButtons();
LeftJustClkd = MouseBtn & 8;
LeftClkDownRlsd = MouseBtn & 9;
MiddleClkd = MouseBtn & 4;
chartId = Name() + Interval();

x = GetCursorXPosition( 0 );
y = GetCursorYPosition( 0 );

if( GetAsyncKeyState( 48 ) < 0 OR GetAsyncKeyState( 96 ) < 0 AND MiddleClkd )
{
	StaticVarRemove( "x1*" );
	StaticVarRemove( "y1*" );
	StaticVarRemove( "x2*" );
	StaticVarRemove( "y2*" );
	StaticVarRemove( "pct_t*" );
}

for( i = 49; i <= 48 + nMM; i++ )
{
	riMM = i - 48;	
	DigitPressed = GetAsyncKeyState( i ) < 0 || GetAsyncKeyState( i + 48 ) < 0;
	if( DigitPressed )
	{
		// This elegant technique shared by @Milosz
		if( LeftJustClkd )
		{
			StaticVarSet( "x1" + chartId + riMM, x, 0 );
			StaticVarSet( "y1" + chartId + riMM, y, 0 );
			//StaticVarSet( "y1_start" + chartId + riMM, bi, 0 );
			
		}	
		if( LeftClkDownRlsd )
		{
			StaticVarSet( "x2" + chartId + riMM, x, 0 );
			StaticVarSet( "y2" + chartId + riMM, y, 0 );		
		}
		if( MiddleClkd )
		{
			StaticVarRemove( "x1" + chartId + riMM );
			StaticVarRemove( "y1" + chartId + riMM );
			StaticVarRemove( "x2" + chartId + riMM );
			StaticVarRemove( "y2" + chartId + riMM );
			StaticVarRemove( "pct_t" + chartId + riMM );
		}
		RequestMouseMoveRefresh();
	}
}

GfxSetBkMode( 1);
GfxSetCoordsMode( 1 ); // mode = 1 - bar / price mode where X is expressed in bar index and Y is expressed in price.

for( i = 1; i <= nMM; i++ )
{
	x1 = Lookup( bi, StaticVarGet( "x1" + chartId + i ) );
	y1 = StaticVarGet( "y1" + chartId + i );
	x2 = Lookup( bi, StaticVarGet( "x2" + chartId + i ) );
	y2 = StaticVarGet( "y2" + chartId + i );
	if( x1 != 0 AND x2 != 0 )
	{
		t++;
		GfxSelectPen( colorGrey50, 2, 1 );
		GfxMoveTo( x1, y1 );		GfxLineTo( x2, y2 ); 	// Diagonal line
		
		GfxSelectFont( "Courier New", 9.5, 700 );
		pct0 = NumToStr( abs(y2/y1-1)*100, 1.0, False );
		pct1 = NumToStr( abs(y2/y1-1)*100, 1.1, False );
		GfxTextOut( "   T"+NumToStr( i, 1.0 )+": " +pct1 +"%", x1 , y1 );
		StaticVarSetText("pct_t" + chartId + i, pct0, false);
	}
}


//lasttrendline = Lookup( dt, StaticVarGet( "x2" + chartId + t ) );

//iterate through total number of contractions (t)
for( i = 1; i <= t; i++ )
{
	//append the latest contraction % into a string
	pct += StaticVarGetText("pct_t" + chartId + i) + "/";
}

//set date
startT1 = Lookup( dt, StaticVarGet( "x1" + chartId + 1 ) );

if ( t != 0 )
{
	//calculate from start to most recent date. result is rounded in weeks
	duration = Round(DateTimeDiff(LastValue(dt), startT1)/3600/24/7);
	titel_new = "                                           MO HINH VCP = " + duration  + "W  " + StrTrim(pct, "/") + "  "+  t + "T";

}
Title = Title+ titel_new;

_SECTION_END();

Bạn có thể thích những bài đăng này

  •      Xin chào, hôm nay tôi xin giới thiệu đến mọi người bộ code tôi viết lại từ một hình ảnh mà 1 nhà đầu tư cung cấp. Chỉ dựa vào 1 bức hình thì không thể diễn…
  •      Xin chào tất cả anh chị em nhà đầu tư, cách đây 2 năm về trước có public cho anh chị nhà đầu tư bộ code tổng hợp ngành. Do số lượng mã cổ phiếu khá nhiều n…
  •          Xin chào anh chị em nhà đầu tư. Trong quá trình sử dụng amibroker em nhận thấy quá trình lọc bị giới hạn bởi thời gian giữa 2 lần quét. Nếu đ…
  • Trong thị trường đầu tư chứng khoán, việc phân tích và tổng hợp dữ liệu ngành một cách trực quan là yếu tố quan trọng giúp nhà đầu tư đưa ra quyết định nhanh chóng và chính xác. …
  •      Chào tất cả anh chị em, trong quá trình giao dịch, tuỳ theo nhu cầu sử dụng của mỗi cá nhân, mà chúng ta có thể tuỳ chỉnh chart giá, các công cụ, các chỉ b…
  •  Trong thế giới giao dịch chứng khoán, việc nắm bắt thông tin nhanh chóng và chính xác là yếu tố then chốt để đưa ra quyết định đầu tư hiệu quả. Hiểu được điều đó, bộ code Ami…

Đăng nhận xét