Friday 16 February 2018

차트 옵션 설정 amibroker


차트 옵션 설정 amibroker
- 차트 창 옵션의 기본값을 설정 / 지우기 / 덮어 씁니다.
chartShowArrows, chartWrapTitle (4.75 이상), chartHideQuoteMarker (v5.06)입니다. chartHideQuoteMarker - 매개 변수 대화 상자 -> 축 및 격자 -> Vert와 같은 창 기준으로 견적 선택기 선을 숨 깁니다. quote marker : chartDisableYAxisCursor (5.80의 새로운 기능) - Y 축 위를 가리키면 마우스 포인터를 위 / 아래 화살표로 변경하는 것을 비활성화합니다. chartDisableTooltips (5.80에서 새로 추가) - 툴팁 표시 (데이터 팁)를 비활성화합니다.
gridFlags - (내부 AmiBroker 사용의 경우 - 이 매개 변수가 결국 제거되므로이 매개 변수는 사용자 코드에서 사용하지 마십시오) 허용되는 값은 chartGridDiv100, chartGridPercent, chartGridDiv1000, chartGridMargins chartGridMiddle, chartGrid0, chartGrid30, chartGrid70, chartGrid10, chartGrid90, chartGrid50, chartGrid100입니다. , chartGrid20, chartGrid80, chartGrid1 ymin, ymax - (5.07의 새로운 기능)이 매개 변수는 사용자 지정 배율에 대한 Y 축 최소값과 최대 값을 지정합니다. & quot; 화살표 표시 & quot;를 표시하기 위해 ymin // 조건을 충족하는 값을 지정하면 기본적으로 새 차트 용도로 사용됩니다.
SetChartOptions (0, chartShowArrows);
예 2 (버전 4.75 이상에서만 작동) :
SetChartOptions (2, chartWrapTitle);
제목 = & quot; 이것은 제목 텍스트의 자동 줄 바꿈 테스트로 한 줄에 들어 가지 않을 정도로 길기 때문에이 샘플 수식은 매우 긴 텍스트를 사용합니다. 샘플 & quot; ;

차트 옵션 설정 amibroker
- 자동 분석 설정에서 옵션을 설정합니다.
무역 시스템 도구 상자.
field - 변경할 옵션을 정의하는 문자열입니다. 사용할 수있는 옵션은 다음과 같습니다. & quot; NoDefaultColumns & quot; - True로 설정하면 탐색시 기본 시계 및 날짜 / 시간 열 "InitialEquity"가 표시되지 않습니다. & quot; AllowSameBarExit & quot; "ActivateStopsImmediately" & quot; AllowPositionShrinking & quot; & quot; FuturesMode & quot; "InterestRate" "MaxOpenPositions" - 포트폴리오 백 테스트 / 최적화 "WorstRankHeld"에서의 동시 개방 위치 (거래)의 최대 수 - 회전 거래 모드에서 개최되는 기호의 최하위 순위 (자세한 내용은 EnableRotationalTrading 참조) & quot; MinShares & quot; - 백 스터 / 옵티 마이저에서 포지션을 여는 데 필요한 최소 공유 수. 많은 것을 구입할 수있는 자금이 충분하지 않으면 "MinPosValue"를 입력하지 않아도됩니다. - 백 테스터 / 옵티 마이저에서 포지션을 여는 데 필요한 최소 달러 금액 (4.70.3 이상). 자금이 충분하지 않으면 거래가 입력되지 않습니다. & quot; PriceBoundChecking & quot; - False로 설정하면, buyprice / sellprice / coverprice / shortprice 배열을 검사하여 현재 심볼의 High-Low 범위로 조정합니다. 커미션 모드 -
0 - 포트폴리오 관리자 커미션 테이블을 사용합니다.
1 %의 무역.
CommaAmount - 모드 별 커미션 금액 1..3 AccountMargin (예전의 경우 'MarginRequirement') - 계정 마진 요구 사항 (설정에서와 같이), 100 = 여백 없음 ReverseSignalForcesExit - 역 엔트리 신호 강제 종료 기존 거래액의 (기본값 = True) UsePrevBarEquityForPosSizing - 현재 지분 위치 크기 조정의 비율에 영향을 미칩니다.
거짓 (기본값) : 현재 (일중) 자본을 사용하여 위치 크기 조정,
True는 다음을 의미합니다. 이전 크기를 사용하여 위치 크기 조정 수행 PortfolioReportMode - 역 테이터 보고서 모드 설정 :
1 - 자세한 로그.
3 - 출력 없음 (커스텀 전용) UseCustomBacktestProc - True / False - 커스텀 백 테스트 프로 시저를 켜거나 끌 수 있습니다. EveryBarNullCheck - 배열의 모든 막대에 대해 산술 연산에서 Null을 검사 할 수있게합니다 (기본적으로 OFF입니다. 즉 AmiBroker 배열의 처음과 배열의 끝 부분에 나타나는 null을 검사하고 일단 null이 아닌 값이 감지되면 중간에 더 이상의 구멍 (null)이 없다고 가정합니다. & quot; EveryBarNullCheck & quot; to True로 설정하면 4.74.x 및 이전 버전의 작동 방식 인 모든 bar에 이러한 확인을 확장 할 수 있습니다.
그러나이 옵션을 켜면 엄청난 성능 저하가 발생합니다 (이 옵션이 켜져있을 때 산술 연산이 4 배 더 느리게 수행되기 때문에 실제로 사용하지 않으면 사용하지 마십시오). HoldMinBars - Number - 값> 0으로 설정된 경우 신호 / 정지가 해당 기간에 생성 되더라도 사용자 지정 막대 수가있는 동안 종료를 비활성화합니다. EarlyExitBars - 값> 0으로 설정하면 숫자 - 특별 조기 종료 (사용) 수수료가 발생합니다 이 기간 동안 거래가 종료 된 경우 요금이 부과됩니다. EarlyExitFee - 조기 퇴출금의 % (백분율) 값을 정의합니다. HoldMinDays - 번호 - 값> 0으로 설정된 경우 - 사용자가 지정한 일 수 해당 기간 동안 신호 / 정류장이 생성됩니다. EarlyExitDays - 값이 0보다 큰 경우 - 거래가 특정 기간 (바가 아님) 동안 종료되면 특별 조기 종료 (상환) 수수료가 부과됩니다. DisableRuinStop - TRUE로 설정 됨 내장 됨 ruin stop이 비활성화 됨 보고서 생성 - 백 테스트 보고서 생성을 억제하거나 강제 적용 할 수 있습니다. 허용되는 값 : 0, 1 또는 2입니다.
기본적으로 백 테스트 보고서는 포트폴리오 백 테스트 및 개별 백 테스팅의 경우에만 설정에서 개별보고가 설정되어있는 경우에만 생성됩니다. 최적화를 위해 보고서를 사용할 수 없습니다.
이제 SetOption () 함수를 사용하면 코드 수준에서 백 테스트를위한 보고서 생성을 억제하거나 특정 최적화 단계에서 보고서 생성을 활성화 할 수 있습니다.
SetOption ( "GenerateReport", 0); // 보고서 생성을 억제합니다.
SetOption ( "GenerateReport", 1); // 전체 보고서 생성을 강제 실행합니다.
SetOption ( "GenerateReport", 2); // 보고서 탐색기에서 단일 행으로 볼 수있는 단 한 줄 보고서 (results. rlst 파일)가 생성됩니다. SeparateLongShortRank - True / False.
별도의 장 / 단 순위가 가능 해지면, 백 ​​테스터는 2 개의 별도의 "최상위 등급" 하나는 긴 신호용이고 다른 하나는 짧은 신호용입니다. 이렇게하면 길고 짧은 후보자가 위치 점수가 대칭 적이 지 않더라도 (예 : 긴 후보자가 매우 높은 긍정적 인 점수를 얻었고 짧은 후보자는 소수의 부정적인 점수 만 갖는 경우) 독립적으로 긴 후보자와 짧은 후보자가 있습니다. 이는 절대 점수가 중요하지 않은 기본 모드와 대조됩니다. 따라서 스코어 값이 비대칭 인 경우 한쪽 (길고 짧은)이 순위를 완전히 독점 할 수 있습니다.
SeparateLongShortRank가 활성화 된 경우 백 테스트의 두 번째 단계에서 두 개의 개별 순위 목록이 우선 순위가 가장 높은 순서로 정렬 한 다음 최상위 순위로 정렬 한 다음 두 번째 최상위 순위로 정렬 한 다음 두 번째 최상위 순위로 정렬 한 다음 세 번째 최상위로 정렬하여 최종 신호 목록을 형성하도록 인터리브됩니다. 순위가 3 위, 1 순위가 짧았습니다. (신호가 긴 / 짧은리스트 모두에 존재하는 한, 주어진 종류의 신호가 더 이상 없다면 긴리스트 또는 짧은리스트의 나머지 신호가 추가됩니다)
예 : 입력 신호 (점수) : ESRX = 구매 (60.93), GILD = Short (-47.56), CELG = 구매 (57.68), MRVL = Short (-10.75), ADBE = 구매 (34.75), VRTX = 15.55), SIRI = 구매 (2.79),
신호의 절대 값이 긴 신호의 해당 점수보다 작더라도 짧은 신호는 긴 신호간에 인터리브됩니다. 또한 특정 바에 대한 단 2 개의 짧은 신호 만 있으므로 목록의 나머지 부분은 위치 점수 순서대로 긴 신호를 표시합니다.
이 기능은 독립적으로 사용할 수 있지만 MaxOpenLong 및 MaxOpenShort 옵션과 함께 사용해야합니다. MaxOpenLong - 동시에 열 수있는 LONG 위치의 수를 제한합니다. MaxOpenShort - 동시에 열 수있는 SHORT 위치의 수를 제한합니다.
ZERO (기본값) 값은 NO LIMIT을 의미합니다. MaxOpenLong 및 MaxOpenShort가 모두 0으로 설정되거나 전혀 정의되지 않은 경우 백 테스터는 기존 방식대로 작동합니다. 거래 유형에 관계없이 글로벌 제한 액티브 (MaxOpenPositions) 만 있습니다.
이러한 제한은 전역 제한 (MaxOpenPositions)과 관련이 없습니다. 즉, MaxOpenLong + MaxOpenShort가 MaxOpenPositions와 같을 수도 있고 같지 않을 수도 있습니다.
MaxOpenLong + MaxOpenShort가 MaxOpenPositions보다 큰 경우 허용되는 총 위치 수는 MaxOpenPositions를 초과하지 않으며 개별적인 긴 / 짧은 제한도 적용됩니다. 예를 들어, 시스템 MaxOpenLong이 7로 설정되고 maxOpenShort가 7로 설정되고 MaxOpenPositions가 10으로 설정되고 시스템에서 20 개의 신호 (길이가 가장 길고 최상위 11)가 생성되면 7 개의 길고 3 개의 단락이 열립니다.
MaxOpenLong + MaxOpenShort가 MaxOpenPositions보다 작지만 (0보다 큰 경우), 시스템은 (MaxOpenLong + MaxOpenShort) 이상을 열 수 없습니다.
또한 MaxOpenLong 및 MaxOpenShort는 주어진 유형 (long / short)의 열린 포지션 수를 제한합니다. 그들은 랭킹이 이루어지는 방식에 영향을 미치지 않습니다. 나는. 기본적으로 순위는 ABSOLUTE positionscore 값을 사용하여 수행됩니다.
순위 점수가 대칭이 아닌 경우, 이는 한쪽에서 원하는 최상위 신호를 얻지 못했음을 의미 할 수 있습니다. 따라서, 회전 균형 ( "시장 중립")의 롱 / 숏 시스템에서 MaxOpenLong 및 MaxOpenShort를 완전히 이용하기 위해서는 긴 신호 및 짧은 신호에 대해 별개의 랭킹을 수행하는 것이 바람직하다.
장 / 단점 순위를 별도로 사용하려면 다음을 수행하십시오.
SetOption ( "SeparateLongShortRank", True); RefreshWhenCompleted - TRUE로 설정하면 View -> Automatic Analysis 작업 후 Refresh All (스캔 / 탐색 / 백 테스트 / 최적화)이 완료됩니다. RequireDeclarations - TRUE로 설정하면 AFL 엔진은 수식 별 수식에 대해 항상 변수 선언 (로컬 / 전역 사용)을 요구합니다. ExtraColumnsLocation - 사용자가 백 테스트 / 최적화 중에 추가 된 사용자 지정 열의 위치를 ​​변경할 수 있습니다.
a) 사용자 정의 백 테스터를 사용하여 추가 된 모든 사용자 정의 메트릭.
b) Optimize () 함수를 사용하여 정의 된 모든 최적화 매개 변수.
맞춤 측정 항목과 최적화 매개 변수가 모두있는 경우 맞춤 측정 항목이 먼저 나타나고 최적화 매개 변수가 나타납니다.
이 함수는 사용자가 디폴트 "at the end"를 변경할 수 있도록 제공된다. 맞춤 항목 / 최적화 매개 변수의 위치
해당 맞춤 측정 항목이 표시되고 이후에 선택 매개 변수가 열 1부터 추가됩니다 (마지막 열 기본값과 반대)
이 설정은 & quot; 시각적 & quot; 열 순서가 아니고 실제로 메모리 내 순서 나 내보내기 순서가 아니므로 내 보낸 데이터 파일이나 복사 / 붙여 넣기 형식은 변경되지 않습니다. SettlementDelay - 이 옵션은 판매 대금이 정산되고 새 직위를 여는 데 사용할 수있는 일수 (막대가 아님)를 나타냅니다.
SetOption ( "SettlementDelay", 3); // 그러면 판매 대금은 판매 후 3 일에 거래가 가능합니다.
자세한 추적 & quot; 세부 로그 & quot; 보고서 옵션에 T + 1, T + 2 등의 사용 가능 및 미결 자금이 표시됩니다.
참고 :이 옵션을 사용하는 경우 backtestRegular 대신 backtestRegularRaw를 사용하는 것이 좋습니다. 그렇지 않으면 자금이 즉시 결제되지 않고 처음에는 아니지만 후속 구매 신호에 입력 할 수 있어야하므로 일부 거래가 입력되지 않을 수 있습니다. 이는 바로 backtestRegularRaw 제공합니다.
Note2 : 오래된 백스터 (Equity () 함수)는 결제 지연을 무시합니다. StaticVarAutoSave - 영구 종료 변수를 주기적으로 자동 저장할 수 있습니다.
SetOption ( "StaticVarAutoSave", 60); // 60 초마다 영구 변수 자동 저장 (1 분)
영구 변수는 사용자 개입없이 자동으로 EXIT에 저장되므로 대부분의 경우에 충분해야 함을 이해하는 것이 중요합니다. AmiBroker가 실행 중일 때 자동 저장을 원할 경우이 기능을 사용할 수 있습니다. 실제 디스크 파일에 많은 정적 변수를 작성하는 데는 시간이 걸리고 모든 정적 변수 액세스가 차단되므로 너무 작은 자동 저장 간격을 지정하지 않아야합니다. 매 초마다를 저장하는 것은 나쁜 아이디어입니다. 과부하가 발생할 것입니다. 60 초마다 절약하면됩니다. 간격을 0으로 설정하여 기능을 호출하면 자동 저장이 비활성화됩니다.
SetOption ( "StaticVarAutoSave", 0); MCEnable - 몬테카를로 시뮬레이션을 제어합니다 : 0 - 비활성화, 백 테스트에서 1 활성화, 백 테스트 및 최적화에서 2 활성화 됨 MCRuns - 몬테카를로 시뮬레이션 실행 횟수 (realization) 기본값 1000 MCPosSizeMethod - 몬테카를로 위치 크기 방법 : 0 - MCPosSizeShares - MC 시뮬레이션의 거래 당 주당 MCPosSizeValue - MC 시뮬레이션의 거래 당 달러 가치 MCPosSizePctEquity - MC 시뮬레이션의 거래 당 현재 지분의 백분율 MCChartEquityCurves - true / false (1/0) - 몬테카를로 형평성 차트를 활성화합니다. MCStrawBroomLines - 몬테카를로 빗자루 차트에 그려지는 형 선의 수를 정의합니다. WarningLevel - 경고 수준을 변경할 수 있습니다. 레벨 1은 경고 수준이 4로 설정된 AFL 편집기 및 주석을 제외한 모든 AFL 실행에 대해 기본값입니다.
1 - 레벨 1 경고 만보고합니다 (502- 너무 많은 플롯).
2 - 보고 수준 1 및 2 경고 (위 조건에 더하기 할당, 0으로 나누기, 스레드 휴지 기간이 너무 깁니다)
3 - 보고 수준 1, 2 및 3 경고 (위와 마찬가지로 createobject / createstaticobject)
4- 모든 경고를보고합니다 (AFL 편집기의 기본값).
경고 : * 기호 별 * 옵션에서 옵션을 변경하면 백 테스트 실행의 모든 ​​기호에 대해 OPTIONS가 일정하다고 가정하기 때문에 복합 결과 (예 : % 이익)는 DISTORTED가됩니다. 'HoldMinBars', 'EarlyExit'. & quot; 옵션은이 규칙에서 예외입니다 (즉, 심볼 단위로 안전하게 설정할 수 있음).
SetOption ( "AllowPositionShrinking", True);

옵션 거래를 위해 Amibroker 차트를 게시 할 수 있습니까?
이전 스레드 / 게시물에서는 차트를 사용할 수 없습니다.
내 기술을 테스트하십시오. 차트를 게시하고 구매 / 판매 의사 결정 기술을 확인하십시오.
Android 용 차트 작성 앱을 게시하십시오.
어느 누구도이 차트의 AFL pls를 게시 할 수 있습니다.
누구든지 다음 차트에 afl을 게시 할 수 있습니까?
이 페이지를 공유하다.
인기있는 주식 중개인.
Rs 899 무제한 지분.
Rs 499 무제한 Curr.
또는 거래 당 Rs 15.
최저 거래 수수료.
최저 통화 및 & amp; 무역 수수료.
최저 스탬프 의무.
무료 주식 거래.
무역 당 20 루피.
직접 뮤추얼 펀드 투자.
60 일 동안 순이익을 낸 경우 100 % 중개 수수료 환급.
초보자, 숙련 된 투자자, 활성 상인 또는 HNI. 맞춤형 솔루션을 얻으십시오.
Rs 0 온라인 거래 + Demat Acct 계정 개설 수수료.

사용자 기술 자료.
2007 년 6 월 26 일.
실시간 거래의 데이터 홀.
AmiBroker가 정규 거래 시간에 데이터를받지 못하면 누락 된 기간 또는 막대를 데이터 배열의 구멍이라고합니다. 티커가 거래를하지 않거나 데이터 피드가 중단되면 구멍이 생길 수 있습니다. 그들은 어느 정도의 시간 동안 지속될 수 있으며 어느 시간대 에나 발생할 수 있습니다.
막대에 데이터가 없으면 막대가 데이터베이스에 추가되지 않습니다. 데이터베이스 레코드는 단순히 다음 바 기간으로 건너 뜁니다. 백필 또는 데이터 제공 업체가 데이터 수정을 전송하는 동안 구멍이 채워질 수 있습니다. 이 경우 데이터베이스가 업데이트됩니다.
선택한 현재 기호를 기반으로 지표를 플로팅 할 때 구멍을 건너 뛰어 연속적인 모양의 차트를 만듭니다. 이 때문에 시각적으로 구멍을 감지 할 수 없습니다. 그러나 아래에서 설명하는 것처럼 외국 데이터를 플로팅 할 때는 그렇지 않습니다.
AmiBroker는 수집하고 데이터베이스에 저장하는 데이터를 절대로 수정하지 않지만 일반적인 시간 기반을 필요로하는 작업 중에는 구멍을 채우고 수정합니다. 이러한 작업에는 몇 가지 AA 함수, 합성 작성 및 차트 오버레이가 포함됩니다. 이러한 작업을 허용하기 위해 데이터 고정 및 패딩 프로세스를 데이터 정렬이라고합니다.
AA에서의 데이터 정렬.
자동 분석기 (AA) 작동에서 데이터 정렬을 켜기 / 끄기 및 정렬에 사용할 참조 기호를 지정할 수 있습니다. 이것은 아래 인용 된 AFL 함수 참조에서 설명됩니다.
• 패드를 누르고 참조 기호에 맞 춥니 다.
이 기능이 켜지면 모든 기호 & # 8217; 따옴표는 채워지고 참조 기호에 정렬됩니다. 참고 : 기본적으로이 설정은 OFF입니다. 책임감있게 사용하십시오. 백 테스트 / 탐색 / 스캔 속도가 느려지고 데이터에 구멍이 있고 구멍이 이전 막대 데이터로 채워지면 표시기 값에 약간의 변화가 생길 수 있습니다. 이 기능은 시스템에서 일반 시장 타이밍 (외부 참조 기호를 사용하여 계산 된 데이터 및 / 또는 지표를 기반으로 전역 신호를 생성) 또는 정렬되지 않은 데이터로 합성물을 생성 할 때 사용하기위한 것입니다. 참고 : 참조 기호가 없으면 데이터에 패딩이 발생하지 않습니다.
표시기의 데이터 정렬.
표시기 수식에 사용 된 외부 데이터는 현재 기호에 정렬되며 AA의 경우와 같이 AA 설정에 지정된 참조 기호로 정렬되지 않습니다. Foreign () 함수의 fixup 매개 변수 값에 따라 데이터 홀은 다음 세 가지 방법으로 처리 할 수 ​​있습니다. 이것은 AFL 함수 참조에서 다음과 같이 설명됩니다.
? 마지막 매개 변수 & # 8211; 픽스 업 & # 8211; 다음 값을 허용합니다.
0 & # 8211; 구멍은 고정되어 있지 않습니다. 1 & # 8211; 기본값 & # 8211; 누락 된 데이터 막대 OHLC 필드는 이전 막대 닫기를 사용하여 채워지고 볼륨은 0으로 설정됩니다. 2 & # 8211; (이전 4.90 이전 행동) & # 8211; 이전 O, H, L, C, V 값으로 데이터의 홀을 채 웁니다.
Fixup 매개 변수 2는 이전 AmiBroker 릴리스와의 호환성을 유지하기 위해 제공되며 새 코드를 개발할 때 사용하지 않아야합니다.
리얼 타임 포트폴리오 - 트레이딩의 홀.
지표 창에서 RT 포트폴리오 거래 시스템을 실행할 때 일반적으로 포트폴리오 시세표를 반복하고 Foreign () 함수를 사용하여 각 시세 표시기의 데이터에 액세스합니다. 현재 및 외국 시세 표시기에는 모두 구멍이있을 수 있으므로 처리 할 수있는 다양한 구멍 조건이 있습니다. fixup 매개 변수의 값과 현재 또는 외국 티커에 구멍이 있는지 여부에 따라 구멍과 채워진 막대가 차트에 나타나고 사라질 수 있습니다. 차트는 RT 백필시에도 변경 될 수 있습니다. 플롯 된 데이터는 수식에 사용 된 것과 동일한 데이터이므로 외래 데이터를 사용하는 방법에 대해 신중해야합니다.
구멍을 탐지하는 기준은 간단합니다. Volume이 null과 같으면 데이터가 누락됩니다 (구멍). Volume가 제로의 경우, 데이터는 채워진다 (채워진 구멍). 볼륨이 0보다 큰 경우 데이터는 true입니다 (구멍 없음).
외국 데이터는 지표에서 현재 시세 표시와 일치하므로 다음과 같이 명시 할 수 있습니다.
? 현재 티커에 특정 막대에 대한 데이터가없는 경우 외부 배열에 해당하는 막대 간격이 표시되지 않으며 계산에 사용할 수 없습니다. 이렇게하면 외부 데이터가 차단되어 신호가 누락 될 수 있습니다.
? 외국 티커에 특정 바에 대한 데이터가없는 동안 현재 티커에 해당하는 바에 데이터가 있으면 바가 외부 배열에 추가됩니다. 픽스 업이 켜지면이 바가 이전 외국 바의 가격으로 채워집니다. Intraday 신호를 사용하면 신호가 중복되거나 중복 될 수 있습니다.
위의 내용에서 Indicator 창에서 실행되는 강력한 고주파 실시간 포트폴리오 거래 시스템을 설계하려면 시그널에 홀의 영향을 고려해야합니다.
모든 구멍을 완벽하게 감지하려면 일주일의 거래 하루 동안 매일 매분을 거래하는 완벽한 참조 시세 표시기가 필요합니다. 그런 완벽한 종가가 존재한다면, 모든 외국 데이터가 그것에 맞춰질 수 있도록 이것을 현시점으로 만들 것입니다. 볼륨이 0인지 확인하기 만하면 모든 구멍이 식별됩니다. 그러나 완벽한 종목 코드가 존재하지 않으므로 종목 코드가 완벽하다고 가정하면 구멍 문제를 하나의 종목 코드에서 다른 종목 코드 코드로 옮기고 문제를 해결할 수는 없습니다.
완벽한 솔루션은 모든 달력 날짜에 막대가있는 선형 날짜 참조 배열을 사용하는 것입니다. 이러한 배열은 "Date Calculations?"라는 제목의 게시물에 문서화되어 있습니다. 이 사이트에 선형 날짜 참조 배열을 적용하여 구멍을 감지하는 방법은이 게시물의 범위를 벗어나지 만 이후 게시물에서 다룹니다.
합리적으로 좋은 또 다른 해결책은 현재 티커를 위해 QQQQ와 같은 높은 볼륨 티커를 사용하는 것입니다. 문제는 QQQQ조차도 볼륨이 낮고 홀을 포함 할 수 있다는 것입니다.
좀 더 나은 해결책은 아마도 다른 시장의 적극적으로 거래되는 시세표 그룹에 대해 볼륨 합성을 만들어 현재 기호로 만드는 것입니다. 이 합성물에 구멍이 있으면 시세표가 거래되지 않는 기간이 있어야합니다. 이것이 더 긴 시간 프레임에서 발생하기는 어렵지 만, 매우 짧은 시간 내에 일어날 수 있으므로이 솔루션도 불완전합니다. 이 솔루션은 여기서 전체 WatchList에 대한 홀의 존재를 한 번에 표시하는 (매핑하는) 차트를 만드는 데 사용됩니다.
아래의 데모 코드는 컴포지트와 시세표를 매핑하기 위해 별도의 WatchList를 사용합니다. 다수의 시세 표시기가 매핑 될 때 느리게 응답하는 것을 방지하기 위해 또는 실수로 매우 큰 WatchList를 선택할 때 최대 시세표 수 (기본값은 50)를 설정할 수 있습니다. 가볍게 트레이드 된 시세 표시기는 복합체에 막대를 추가 할 가능성이 없기 때문에 복합 형 WatchList에 대해 볼륨이 큰 시세 표시기 만 사용해야합니다.
데모 코드의 Param 창에는 다음과 같은 옵션이 있습니다.
Reference Watchlist (0-based)는 합성물 생성에 사용 된 시세표 그룹을 가리켜 야합니다. 참조 감시 목록을 변경 한 후에는 항상 업데이트를 클릭하여 새로운 감시 목록에 대한 새로운 복합보기를 만들어야합니다.
감시 대상 감시 목록은 검사 할 감시 목록을 선택합니다. 이 주시 목록의 각 시세 표시기는 차트에 수평선을 추가합니다. 이것은 보통 귀하의 포트폴리오 주시 목록입니다. 구멍은 작은 원으로 둘러싸인 숫자로 표시됩니다. 숫자는 해당 데이터를 검색하기 위해 Foreign ()에서 사용되는 fixup 매개 변수입니다.
임의 숫자의 발생은 구멍의 위치를 ​​보여줍니다. 0 자릿수는 막대가 Null 또는 Empty이고 막대가 표시되지 않음을 나타냅니다. 1의 숫자는 막대가 이전 막대의 C 가격 만 채워 졌다는 것을 의미합니다. 2의 자릿수는 데이터가 이전 막대의 OHLCV (구식!!) 데이터로 패딩되었음을 나타냅니다.
구멍이 이전 막대의 데이터로 대체되는 방식을 관찰 할 수 있습니다. Param 창에서 픽스 업 매개 변수를 변경하면 빈 막대가 이전 막대와 동일한 막대로 바뀝니다.
다른 Reference 시세 표시기로 구멍 분포를 변경하는 방법을 보여주기 위해 작업 공간을 열고 데이터베이스에서 다른 시세 표시를 단계별로 실행할 수 있습니다. 프로그램은 커서 위치를 확인하고 커서가 선택된 차트를 HIDE가 아닌 SHOW로 설정하면 선택된 시세 표시 줄에 대한 가격 차트가 차트에 중첩됩니다. 이렇게하면 구멍이나 패딩 된 데이터를 둘러싼 직 접 영역에서 가격을 확대하고 검사 할 수 있습니다.
주 : 커서가있는 분할 창을 감지 할 수있는 방법이 없으므로 커서 위치 감지는 홀 맵이 자체 창에서 실행되는 경우에만 작동합니다.
나는 아래의 캡쳐, 나스닥 100 (N100) 합성물은 시계추 FISV에 대한 참조로 사용되었습니다. 아래의 차트 (구멍지도)의 각 시세 표시에는 구멍의 존재가 작은 원으로 표시되는 가로줄이 지정됩니다. 구멍에 커서를 놓으면 날짜와 데이터가 제목에 표시됩니다. 원의 색은 시세의 색과 일치합니다. Y 축 번호는 시세 표시기 번호 (중복)입니다.
첫 번째 경우에는 fixup 매개 변수가 0으로 설정되고 누락 된 막대가있는 막대 위치는 비워 두었습니다 (커서 위치 참조). 숫자가 너무 작아서? 1?처럼 보일 수 있지만 실제로는? 0?입니다. 막대가 누락되었다는 사실은 현재 기호에이 막대의 데이터가 있지만 외국 시세 표시기에 표시되지 않았 음을 의미합니다.
다음 캡처에서 픽스 업 매개 변수 1이 사용되고 볼륨 (표시되지 않음)이 0으로 설정되어있는 동안 누락 된 막대가 이전 막대의 C 가격으로 채워 집니 다.
다음 캡처에서는 fixup 매개 변수가 2로 설정되어 누락 된 막대가 이전 막대의 OHLCV 값으로 채워집니다.
위의 모든 예에서 EOD 차트가 사용되었습니다. 그러나 1 분 차트 (또는 다른 시간대) 일 수도 있습니다. 위의 차트를 작성한 코드는 다음과 같습니다.
알 베노 사 편집.
2007 년 6 월 24 일.
실시간 메시지 FIFO.
실시간 메시지는 한 번의 차트 새로 고침 간격 동안 만 화면에 표시되며 읽는 시간이 있기 전에 사라집니다. 여기에 제시된 FIFO (First In First Out) n 라인 디스플레이는 차트 제목의 메시지를 캡처하고 스크롤하여보다 읽기 쉽게 표시합니다. DebugView 또는 통역 창에 메시지를 로깅하려면 추가 창을 열어야합니다. 대신 제목을 사용하면 차트 오른쪽에 메시지가 표시되고 공간 효율성이 향상됩니다.
전형적인 애플리케이션은 주문 상태, TWS 오류 메시지, 부분 채우기, 계정 잔액, 이익 등과 같은 실시간 시스템 상태를 표시하는 것입니다.
차트 제목은 서식을 지원하지 않으므로 Lucida Console과 같은 단락 문자 폰트를 사용하고 열을 작성하려면 패드 공백을 사용하는 것이 좋습니다. NumToStr () 서식 매개 변수의 정수 부분은 반환 된 문자열의 전체 길이를 설정하며 열의 서식을 지정하는 데 사용할 수 있습니다. 글꼴 및 색상 옵션을 더 선호하는 경우 Gfx 함수를 사용하여 메시지를 표시 할 수 있습니다.
제목 줄 바꿈을 방지하기 위해 StrLeft () 함수를 사용하여 메시지를자를 수 있습니다. 이것은 TWS 오류 메시지에 잘 작동하지만 오류 메시지의 왼쪽에 중요한 정보를 가지고 있습니다. 아래의 데모에서는 간단한 PadString () 함수를 사용하여 짧은 메시지를 열에 저장합니다.
AddToFIFOTOTle () 함수는 테이블에 메시지를 추가 할 때마다 호출됩니다. 첫 번째 인수는 테이블을 포함하는 정적 변수의 이름이고 두 번째 인수는 테이블에 추가 할 메시지이며 세 번째 인수는 테이블의 최대 줄 수입니다. 세 번째 인수를 0으로 설정하면 테이블이 지워집니다.
간단하게하기 위해 아래 코드는 Param 함수를 사용하여 실시간 메시지를 시뮬레이션합니다. 실제 시스템에서 이러한 메시지는 실시간 이벤트에 의해 생성됩니다. 코드를 테스트하려면 매개 변수 창에서 번호가 매겨진 이벤트 메시지 중 하나를 클릭하십시오.
제작 된 타이틀은 다음과 같아야합니다.
이 예제의 메시지는 다음 열을 올바르게 배치하기 위해 채워집니다. 메시지의 순서는 반전되어 마지막 메시지가 메시지 테이블의 맨 위에 표시됩니다. 최대 줄 수를 초과 할 때마다 가장 오래된 메시지가 제거됩니다. 테이블이 적어도 초당 1 회 업데이트되도록하려면 코드에 RequestTimedRefresh (1)를 항상 포함시켜야합니다.
마지막으로 자동 거래에서는 항상 차트가 필요 없으며 상태 테이블 만 표시하는 것이 좋습니다. 테이블이 전역 정적 변수에 저장되므로 두 줄의 코드 만 사용하여 모든 창이나 창에서 테이블을 읽을 수 있습니다.
다른 창에서 여러 개의 스크롤 표시를 사용하는 경우 정적 변수 키 설정에 설명 된대로 정적 변수를 키해야합니다. 완전한 데모 코드는 다음과 같습니다.
알 베노 사 편집.
실시간 메시지 FIFO에 대한 의견이 없습니다.
2007 년 5 월 9 일.
시간 계산.
시간 계산은 GAT (Good At Time) 및 GTD (Good Till Date) 주문을 배치 할 때 필요합니다. 가장 간단한 방법은 TimeNum을 SecondNum으로 변환하고, Seconds로 계산을 수행 한 다음 SecondNum을 TimeNum으로 다시 변환하는 것입니다. 아래의 첫 번째 두 기능은이를 수행합니다.
다음 함수는 초 단위로 표현 된 참조를 참조 시간에 적용합니다. 이 참조는 일반적으로 GAT 시간을 계산하는 데 사용됩니다. Time Reference에 간격 띄우기를 적용하고 온라인 상태 일 필요없이 하루 동안 자동으로 주문을 활성화하려면이 기능이 필요할 수 있습니다.
알 베노 사 편집.
시간 계산에 관한 코멘트.
2007 년 5 월 7 일.
날짜 계산 (v2)
실시간 거래에서는 데이터의 DateNumber 대신 컴퓨터 날짜를 기준으로하는 날짜 계산을 수행해야 할 수 있습니다. 년, 날짜 및 월로 고생하는 대신 Rata Die와 같은 선형 데이터 시스템을 사용하는 것이 훨씬 쉽습니다. Rata Die는 연도 0의 12 월 31 일 이후의 일 수를 계산합니다. Rata Die 메서드를 사용하려면 Rata Die와 DateNumbers 사이의 변환과 두 가지 변환 함수가 필요합니다. 이 게시물에서는 Rata Die 시스템을 사용하여 NASDAQ 비 거래일을 계산하고 이전 거래일의 날짜를 계산합니다.
아래에 나열된 변환 함수는 Paul Ho (감사합니다 Paul!)의 AmiBroker User 목록에 게시되었으며이 게시물에서 필요한 계산을 수행하는 데 사용됩니다.
NASDAQ 비 거래 일은 NASDAQ 웹 사이트에서 복사되고 DateNumbers로 변환되며 코드에서 파기하지 않고 매년 변경할 수 있도록 ParamStr () 함수를 사용하여 코드에 입력됩니다. 다음은 2007 년의 일반적인 목록입니다.
나스닥 휴일 거래 일정.
2007 날짜 & # 8211; 명시되지 않는 한, 다음 날짜는 NASDAQ 주식 시장이 폐쇄되는 휴일입니다.
1 월 1 일 & # 8211; 새해 & # 8217;의 날.
1 월 15 일 & # 8211; 마틴 루터 킹 주니어 생일.
2 월 19 일 & # 8211; 회장 & # 8217; 일.
4 월 6 일 & # 8211; 좋은 금요일.
5 월 28 일 & # 8211; 기념일.
7 월 4 일 & # 8211; 독립 기념일.
9 월 3 일 & # 8211; 노동절.
11 월 22 일 & # 8211; 추수 감사절.
12 월 25 일 & # 8211; 크리스마스 날.
이전 거래 날짜를 찾으려면 코드는 이전 Rata Die 날짜를 사용하여 시작하고 거래일이 아닌 경우 거래 날이 발견 될 때까지 Rata Die 수를 줄입니다. 선택한 변수가 차트 제목에 출력되므로 ParamDate ()를 사용하여 날짜를 변경할 수 있으며 변환 작업이 가능합니다.
function DateNumberToRataDie (DateNumber)
yyyy = int (num) + 1900;
num = frac (num) * 100;
yyyy = yyyy + int ((mm-14) / 12);
mm = IIf (mm & lt; 3, mm + 12, mm);
RataDieNum = round (dd + int ((153 * mm-457) / 5) + 365 * yyyy + int (yyyy / 4) - int (yyyy / 100) + int (yyyy / 400) - 306);
z = RataDieNum + 306;
yr = int ((b + g) /365.25);
Cc = b + z - int (365.25 * yr);
mm = int ((5 * Cc + 456) / 153);
dd = Cc - int ((153 * mm-457) / 5);
yr = IIf (mm> 12, yr + 1, yr);
mm = IIf (mm> 12, mm-12, mm);
함수 NoTradingDay (RataDieNum)
글로벌 DN, NasdaqNTDN;
return DW == 0 또는 DW == 6 또는 StrFind (NasdaqNTDN, DNStr);
동안 (NoTradingDay (RD2))
"현재 거래일 : \ n \ n"+
"Date :"+ NumToStr (DateTimeConvert (2, DN1), formatDateTime) + ""+ StrExtract (평일 DW1) + "\ n"+
"Day Number :"+ NumToStr (DW1,1.0) + "\ n"+
"Rata Die :"+ NumToStr (RD1,1.0, False) + "\ n"+
WriteIf (NoTradingDay (RD1), "이것은 거래일이 아님", "이것은 거래일입니다") + "\ n \ n \ n"+
"이전 거래일 : \ n \ n"+
"이전 TDay :"+ NumToStr (DateTimeConvert (2, DN2), formatDateTime) + ""+ StrExtract (평일, DW2) + "\ n"+
"Day Number :"+ NumToStr (RD2 % 7,1.0) + "\ n"+
"Rata Die :"+ NumToStr (RD2,1.0, False) + "\ n"+
WriteIf (NoTradingDay (RD2), "This is a Trading Day", "This is a Trading Day");
알 베노 사 편집.
2007 년 5 월 6 일.
실시간 AFL 프로그래밍 소개.
이 카테고리에 제시된 AFL 예제는 초보자가 실시간 AFL 프로그래밍을 시작하는 데 도움이되는 퀵 스타트 솔루션을 제공합니다. 주제는 시간 측정, 지연 실행, 실시간 데이터 수집, 주식 스캔, 주문 상태 수집, 오류 감지, 시스템 및 포트폴리오 상태 표시 등을 포함합니다. 대부분의 코드는 빠른 자동 거래와 관련 될 수 있지만 대부분의 경우 다른 형태의 거래에도 사용됩니다.
AFL 참조, AmiBroker 폴더의 ReadMe 파일, 지식 기반, AFL 라이브러리, 공식 비디오 자습서 및 기타 지원 자료와 같은 공식적인 AmiBroker 문서를 대체하거나 대신 할 수 없습니다.
목표는 AFL 프로그래밍 기술을 소개하는 기본 예제 리소스를 작성하여 개인의 필요에 맞게 쉽게 수정할 수 있도록하는 것입니다. 초보자이거나 열렬한 시스템 개발자 인 경우에도 이와 같이 잘 조직 된 리소스를 사용하면 많은 시간을 절약하고 시스템 개발을 훨씬 재미있게 할 수 있습니다.
드래그 앤 드롭을 사용하려면 C : \ Program Files \ AmiBroker에서 #AFL 솔루션 폴더 (& # 8220; # & # 8221;가이 폴더를 트리의 맨 위에 놓도록 추가됨)를 만들 수 있습니다 \ Windows 탐색기를 사용하여 수식 폴더. AmiBroker로 돌아 가면보기 - & gt; 새 폴더를 표시하려면 모두 새로 고침을 누릅니다. #AFL 솔루션 폴더에서 특정 요구 사항을 충족 할 수있는 하위 폴더를 만들 수 있습니다.
유용한 AFL 솔루션을 발견하면 #AFL Solutions 폴더의 해당 하위 폴더로 복사해야합니다. 이렇게하면 단 몇 주 만에 인상적인 코딩 리소스를 얻을 수 있습니다. 일반적인 레이아웃은 다음과 같습니다.
변수에 대해 표준 명명 규칙을 채택하면 많은 코드 모듈이 변경되지 않고 함께 작동합니다. 결국 코드 모듈을 지표로 드래그 앤 드롭하거나 AFL 코드 마법사를 사용하여 몇 시간이 아닌 단 몇 분 만에 거래 시스템을 구축 할 수 있습니다.
알 베노 사 편집.
Real-Time AFL 프로그래밍 소개에 관한 코멘트.
2007 년 5 월 2 일.
표시기 재설정.
Smoothing MA (), EMA (), T3 (), DEMA () 등과 같은 지표는 평균 가격 변동을 나타 내기위한 것입니다. 그들은 특정 가격 변수의 고주파 변화를 필터링하여이를 수행합니다. 문제는 이러한 지표가 시스템에 시간 지연을 초래한다는 것입니다. 지표 지연은 전반적인 가격 차트가 상대적으로 매끄럽 으면 (예 : 단순 MA ()가 높음 - 낮음 범위 내에있을 때) 갑작스럽게 가격 변동 또는 간격이있을 때 가장 쉽게 나타납니다. 이러한 상황이 발생하면 대부분의 스무딩 지표에는 이러한 간격의 영향을 극복하고 막대의 평균 가격 범위 내에서 다시 자리 매김하기 위해 많은 막대가 필요합니다.
모든 거래 시스템은 어떤 것이 변화했다는 것을 알기 위해 시차에 의존하지만 시스템에 필요한 래그의 정도는 다양합니다. 재설정 가능 지표는 가격에 밀접하게 따르는 스무딩 기능, 즉 최소 지연을 나타내는 시스템에서 가장 유용합니다.
재설정 가능 지표가 평균 가격에 대해 갑작스런 값보다 큰 보통 오프셋을 만나면 동작을 변경하고 표시기를 계산 된 참조 점으로 재설정합니다. 표시기를 재설정하려는 다른 패턴이나 조건 (신호, 정지 점, 대상 등)이 있지만이 설명에서는 AFL 함수 GapUp ()과 GapDown ()에 의해 정의 된 단순한 틈에 초점을 둡니다. 여기에 소개 된 기술은 EOD 또는 RT 데이터에서도 똑같이 작동합니다. 이 개념의 또 다른 적용은 매일 새로운 날이나 거래 세션이 시작될 때 지표를 재설정하려는 RT 거래에 있습니다.
리셋 아이디어는 스무딩 기능이 기본주기를 갖고 표시기의 지연이 해당 기간에 비례한다는 사실에 기반합니다. 즉, 더 긴 기간은 지연을 늘리고 더 짧은 기간은 지연을 감소시킵니다. 아는 바로는, 주기를 더 낮은 값으로 설정함으로써 지표를 재설정 할 수 있습니다. 일반적으로 1로 다시 설정하면 정상적으로 작동합니다. 리셋 바를 사용하면 마침표가 원래 값에 도달 할 때까지 마침표가 증가합니다.
아래에 표시된 EOD 예제를 고려하십시오. 흰색 막대는 재설정을 트리거하는 간격을 식별합니다.
첫 번째 화이트 바에서는 가격 차이가 발생하고 전통적인 T3 (Blue)는 즉시 뒤쳐져 실제로 가격과 반대 방향으로 움직입니다. 재설정 가능 T3 (빨간색)은 간격을 감지했을 때 자체를 재설정하고 거의 즉시 올바른 방향으로 가격 막대를 추적 할 수 있습니다.
표시기를 재설정하는 방법은 여러 가지가 있습니다. 마침표를 1로 설정하여 갑자기 수행 할 수 있습니다. 2 또는 3으로 재설정하여 최소 다듬기를 유지할 수 있습니다. 또는 수식에 따라 기간 및 / 또는 T3 감도를 점차적으로 조정할 수 있습니다. 아래의 예제 코드는 AmiBroker 라이브러리에서 찾을 수있는 T3 수식을 사용합니다.
아래 예제에서는 거래일의 첫 번째 바를 사용하여 T3을 재설정합니다. 그러나 표시기를 재설정하려는 경우가 많이 있습니다. 예를 들어 트레일 링 스톱 또는 SAR 유형 이탈을 사용하는 경우 구매 또는 판매 신호를 받으면 표시기를 재설정 할 수 있습니다. 모든 바 가격 (예 : (O + H + L + C) / 4)을 평균하여 자체 재설정 참조를 지정할 수 있습니다. 그러나 지연을 다시 유도 할 때 평균값을 유지해야합니다. 나는 (O + C) / 2의 사용을 선호하지만, 당신의 취향에 맞는 다른 아이디어를 시도해야합니다.
함수 T3 (Price, T3Periods, s)
e1 = AMA (가격, 2 / (T3Periods + 1));
e2 = AMA (e1, 2 / (T3Periods + 1));
e3 = AMA (e2, 2 / (T3Periods + 1));
e4 = AMA (e3, 2 / (T3Periods + 1));
e5 = AMA (e4, 2 / (T3Periods + 1));
e6 = AMA (e5, 2 / (T3Periods + 1));
기능 T3r (C, T3 감도, T3Periods, ResetReference)
CPrice = IIf (Reset, ResetReference, C);
T3Periods = Min (T3Periods, BarsSince (Reset));
T3Periods = IIf (리셋, 1, T3 기간);
e1 = AMA (CPrice, 2 / (T3Periods + 1));
e2 = AMA (e1, 2 / (T3Periods + 1));
e3 = AMA (e2, 2 / (T3Periods + 1));
e4 = AMA (e3, 2 / (T3Periods + 1));
e5 = AMA (e4, 2 / (T3Periods + 1));
e6 = AMA (e5, 2 / (T3Periods + 1));
T3 감도 = Param ( "T3 Sensitivity", 1,0.1,5,0.01);
T3Periods = Param ( "T3 기간", 3,1,10,1);
재설정 = GapUp () 또는 GapDown ();
T3rPlot = T3r (C, T3 감도, T3Periods, ResetReference);
플롯 (T3 (C, T3Periods, T3 감도), "\ n 전통적 T3", 6,1 | styleThick);
알 베노 사 편집.
인디케이터 재설정시 댓글 끄기.
2007 년 4 월 28 일.
세션 타이밍.
진정한 시스템 자동화 란 골프를 치는 동안 지정된 시간에 시작 및 정지하도록 거래 시스템을 프로그래밍한다는 의미입니다.
즉, 마스터 활성화 / 비활성화 스위치 이외에 트레이딩 세션의 시작 및 중지를 자동화해야합니다. 예를 들어, 오전 9시 30 분에 세션을 시작하고 오후 4시에 자동 종료되도록 할 수 있습니다.
아래 코드는 ParamDate () 및 ParamTime ()을 사용하여 세션 시작 및 중지 날짜 / 시간을 설정하고 이러한 매개 변수를 Now () 함수에서 반환 한 시스템 날짜 및 시간과 비교합니다. 타이틀에 표시되는 다양한 세션 상태를 생성합니다. 이 코드를 시스템에 통합하면 이러한 상태를 사용하여 모든 위치 닫기, 모든 주문 취소 등과 같은 특정 작업을 수행합니다. BlinkText ()는 실제로 필요하지 않습니다. 그러나 재미를 위해 안으로 던져졌다.
알 베노 사 편집.
세션 타이밍에 대한 코멘트.
분할 창 및 창 실행 순서.
몇몇 사용자는 다양한 Amibroker 창과 Windows에서 수행되는 작업이 실행되는 순서에주의를 기울입니다. 창 실행의 순서는 빠른 실시간 거래 시스템의 성능에 큰 영향을 줄 수 있습니다. 창 수식이 맨 아래로 실행된다고 가정하는 것은 쉽지만 실제로는 안됩니다. 실제로, 실행 순서는 예측할 수 없으며 모든 실제 목적을 위해 사용자가 임의로 간주해야합니다.
예를 들어 정적 또는 영구 변수를 사용할 때 맨 아래 창에서 사용하기 위해 위쪽 창에서 StaticVariable을 초기화하는 경우 새로 할당 된 값을 즉시 사용할 수 있도록 맨 위 창을 먼저 실행해야합니다 아래쪽 창에서 새로 고침을 누르십시오. 다음 번에 차트 새로 고침을하지 마십시오.
이제 아래쪽 구획이 먼저 실행되는 것을 고려하십시오. 이 경우, 다음 인용문 또는 RequestTimedRefresh (1) 함수를 사용할 경우 다음 초 (둘 중 먼저 오는 것)까지 대기해야합니다. 이 경우 정적 변수에는 이전의 새로 고침의 값이 포함됩니다. 즉, 정적 변수 값이 한 번의 차트 새로 고침에 의해 지연됩니다. 아래쪽 창의 수식에 마지막 견적 (새로 고침을 트리거 한 견적)을 기반으로 LMT 가격이있는 주문이 있고 이전 Refresh 중에 LMT 가격이 위쪽 창에서 계산 되었기 때문에 사용 된 LMT 가격은 이전 및 마지막 따옴표가 아닙니다. 대부분의 경우, 이는 LMT 채우기 가능성을 감소시킵니다.
분명한 해결책은 정적 변수를 초기화하고 동일한 창에서 실행하는 코드에 주문 코드를 추가하는 것입니다. 그러나 수식이 길거나 각 수식이 다른 배율 및 / 또는 호환되지 않는 제목으로 차트를 생성하는 경우에는이 작업이 어려울 수 있습니다. 그렇더라도이 방법으로 문제를 해결하기로 결정했다면 #include 파일 사용을 고려해야합니다.
또 다른 해결책은 초기화 공식의 끝에 RefreshALL을 강제 실행하는 것입니다. 이렇게하면 모든 창을 지체없이 새로 고치지 만 이제는 각 차트 새로 고침마다 두 번 이상 실행될 수있는 창이 나타납니다. 이것이 시스템에서 중요한지 여부를 결정해야합니다. 다음 두 행을 코드에 추가하여 강제로 RefreshAll을 적용 할 수 있습니다. 최소 RefreshAll 간격은 1 초이므로 따옴표가 더 빨리 도착하면이 방법이 효과가 없을 수 있습니다.
실행 순서가 중요한 경우 창 카운터의 개수에 따라 RefreshAll () 조건부를 설정하고 창 실행 순서에서 요구하는 경우에만 RefreshAll을 강제 실행 할 수 있습니다. 창 실행 순서를 찾으려면 모든 창 수식에 창 실행 카운터를 추가하고 개수를 DebugView에 기록하십시오. 카운트가 하위 패널과 비교하여 상위 패널에서 더 낮 으면 상위 패널에서 이전에 실행되었음을 의미합니다. 카운트가 더 크면 하위 창보다 나중에 실행됩니다.
로그에서 실행중인 수식을 식별하려면 수식 맨 위에 수식 이름을 입력하십시오.
카운터를 추가하려면 수식의 맨 끝에 다음 코드를 추가하십시오.
CounterDisplayLine = Filename + ", ChartID :"+ GetChartID () + ", PaneCounter :"+ NumToStr (PaneCounter, 1.0, False);
그러면 DebugView 창에서 실행 순서와 실행 시간이 초 단위로 표시됩니다.
동일한 창에서 여러 줄 아래에 4 줄 코드를 삽입하여 코드를 방해하지 않고 창 실행 순서를 연구 / 분석 할 수 있으므로 여러 창을 만들 수 있습니다. 그런 다음 마우스 포인터를 창의 오른쪽 위 모퉁이로 가져 가면 나타나는 팝업 메뉴의 작은 화살표를 사용하여 창 순서를 변경하십시오. 이 예제에서는 창 제목이 차트 제목에 표시됩니다.
Title = Filename + ", PaneCounter :"+ NumToStr (PaneCounter, 1.0, False);
위의 캡처 결과는 실행 순서가 맨 위가 아님을 보여줍니다. 자신의 경우 실행 순서가 ChartID를 추적한다는 것을 알 수 있습니다. 이는 연속적으로 창을 하나씩 삽입했기 때문입니다. 그러나 일반적으로 창은 그렇지 않습니다.
이 주제가 모든 사람들에게 중요하지는 않지만, 고주파 거래 시스템을 고치기 시작하면 매우 중요해질 것입니다.
알 베노 사 편집.
창 및 창 실행 순서에 대한 주석 해제.
2007 년 4 월 24 일.
영구 변수 (v3)
정적 변수는 AmiBroker가 실행되는 동안 값을 유지합니다. AmiBroker를 종료하거나 컴퓨터 충돌이 발생하면 정적 변수의 값이 손실됩니다. 이것은 자동화 된 거래에서 심각한 문제를 야기 할 수 있습니다. 예를 들어 보류중인 주문이 많은 동안 컴퓨터가 손상된 것으로 가정합니다. 모든 것을 다시 시작한 후에는 명령을 수정할 수 없으므로 TWS를 사용하여 수동으로 작업을 정리하고 다시 시작해야합니다.
이 상황을 방지하기 위해 하드 디스크에 값을 저장하는 영구 변수를 사용할 수 있습니다. 삭제할 때까지 계속 남아 있습니다. 영구 변수를 사용하면 밤에 시스템이 다운되거나 시스템이 멈추는 경우 다시 켜면 영구 변수가 자동으로 다시로드됩니다.
영구 변수는 티커 특정 시스템 매개 변수를 저장하는 데 사용될 수도 있습니다. For example, you could run an optimization and save the optimized parameters in a Persistent Variable encoded with the Ticker’s name. Below are examples for saving text and numerical values. Arrays are not included here because arrays are better handled in other ways. Included in the code below is a handy function to create Persistent lists and to remove items from these lists. The list functions are useful when you wish to save lists of Symbols and/or OrderIDs dynamically.
Note that these parameters must be stored in a specific folder on your Hard Disk (see first code line below for an example of a typical recommended path). You must assign the desired location to the string variable PersistentPath . Remember that Persistent variables are Global just like Static variables, and their names may have to be encoded with ChartIDs and/or Symbol names to prevent them from being modified by different programs.
PersistentPath = "C:\\Program Files\\AmiBroker\\PersistentVariables\\";
function PersistentVarSetText( VarName, String )
fh = fopen( PersistentPath+VarName+".pva","w" );
fputs( String, fh );
function PersistentVarGetText( VarName )
fh = fopen( PersistentPath+VarName+".pva","r" );
String = fgets( fh );
function PersistentVarSet( VarName, Number )
fh = fopen( PersistentPath+VarName+".pva","w" );
fputs( String, fh );
function PersistentVarGet( VarName )
fh = fopen( PersistentPath+VarName+".pva","r" );
String = fgets( fh );
else Number = Null;
function PersistentListAdd( VarName, String )
List = PersistentVarGetText( VarName );
for( i=0; ( LoopItem = StrExtract( List, i ) ) != ""; i++ )
if( LoopItem == String ) SubStrExists = 1;
if( NOT SubStrExists )
List = List + String+",";
PersistentVarSetText( VarName, List );
function PersistentListRemove( VarName, String )
List = PersistentVarGetText( VarName );
for( i=0; ( LoopItem = StrExtract( List, i ) ) != ""; i++ )
if( LoopItem != String ) NewList = NewList + LoopItem +",";
PersistentVarSetText( VarName, NewList );
The following function was kindly contributed by suresh (see comment) and can be used to delete Persistent variables:
알 베노 사 편집.
2007 년 4 월 21 일.
Removing Static Variables.
Trading systems may use hundreds or even thousands of Static Variables, and the associated memory usage will eventually slow down your system. To prevent this you need to clear them whenever possible. Since at this time AmiBroker doesn’t have a function to remove all Static Variables from memory, you can remove them by referencing each of them by their name, i. e. StaticVarRemove( StaticVarName ).
Using an indexed name will allow you to use a loop to remove Static Variables from memory. For example, a naming convention such as BuyPrice + NumToStr(n,1.0,false), where n could be the DateNum(), TimeNum(), DateTime(), BarIndex(), etc., would allow you to use a simple loop to generate all possible names and remove those that return non-null values.
Below are two examples of how to remove StaticVariables with this technique. Be careful when using BarNum() because the bar number changes if you use SetBarsRequired(), or if you use Quick-AFL, or if your data exceed the amount set in your DataBase settings or in Preferences.
Here is an example of how to remove from memory Ticker-specific OrderIDs that were, for example, used in a portfolio trading system:
for( NT=0; ( Ticker = StrExtract( TradingBasket, NT ) ) != ""; NT++ )
알 베노 사 편집.
Comments Off on Removing Static Variables.
최근 게시물.
최근 댓글.
Richard Dale on Data Resources & # 8211; Forex Herman 요청 실시간 주제 여기 Mike B 실시간 요청 주제 여기 Tomasz Janeczko on US-Stocks 데이터베이스 (v2) brian_z on Setup A Custom Database & # 8211; 나스닥
카테고리.
2011 년 10 월 2011 년 1 월 2011 년 7 월 2011 년 7 월 2011 년 4 월 2011 년 2 월 2011 년 2 월 2011 년 2 월 2011 년 1 월 2 월 2009 년 2 월 2008 년 1 월 2008 년 4 월 (1) 2008 년 2 월 (20) 2008 년 1 월 (1) 2008 년 1 월 (1) 2007 년 12 월 (4) 2007 년 10 월 (18) 2007 년 9 월 (17) 2007 년 8 월 (26) 2007 년 6 월 (17) 2007 년 5 월 (8) 2007 년 4 월 (16) 2007 년 1 월 (1)
This site uses WordPress Page generated in 0.502 seconds.

No comments:

Post a Comment