artmedia70 : 스택 오버플로의 원인은 무엇입니까? 테이크 크기가 큰 위치를 열 때(테이크는 변동성에서 계산되고 100을 곱한 크기는 41*100으로 판명됨) 스택 오버플로가 로그에 기록되고... 건강합니다. 이 포지션이 닫힐 때까지 더 이상 단일 포지션이 열리지 않으며, 이 포지션은 엄청난 테이크로 인해 닫히지 않습니다... 그리고 어드바이저가 더 이상 올바르게 작동하지 않기 때문입니다. 오픈 포지션의 예정된 총 이익에 도달하면 모든 포지션을 청산해야 합니다... 그러나 이것은 한 포지션이 오랫동안 약 2,000포인트의 엄청난 이익을 냈음에도 불구하고 그런 일이... 이것? 결국, 열린 포즈가 함께 스택을 오버플로하고 모든 것이 공중제비를 굴릴 때 그러한 상황에 대해 보장할 수 없습니다...
스택은 유형 범위를 벗어난 숫자로 오버플로할 수 없습니다. 다른 오류가 발생합니다.
스택은 종료하지 않고 함수 또는 재귀 함수 호출에 전달된 데이터로 오버플로할 수 있습니다.
start()는 동일한 함수입니다. 아마도 거기에 많은 변수가 있을 것입니다.
스택은 함수(로컬 변수)의 중간 값이 저장되는 메모리 영역입니다. 동적 배열을 사용하고 배열의 범위를 올바르게 제어하지 않은 경우 스택을 직접 파괴할 수 있습니다. 즉, 배열에 데이터를 쓰지 않고 단순히 배열 바로 뒤에 오는 메모리 영역에 데이터를 썼습니다.
스택은 종료하지 않고 함수 또는 재귀 함수 호출에 전달된 데이터로 오버플로할 수 있습니다.
start()는 동일한 함수입니다. 아마도 거기에 많은 변수가 있을 것입니다.
스택은 함수(로컬 변수)의 중간 값이 저장되는 메모리 영역입니다. 동적 배열을 사용하고 배열의 범위를 올바르게 제어하지 않은 경우 스택을 직접 파괴할 수 있습니다. 즉, 배열에 데이터를 쓰지 않고 단순히 배열 바로 뒤에 오는 메모리 영역에 데이터를 썼습니다.
일부 배열을 전역 변수로 이동하십시오. 고문을 맨 위로 데려가다
추신: 적어도 이것은 모든 프로그래밍 언어의 경우입니다. - mql에서도 마찬가지라고 생각합니다.
Igor, 당신은 내가 당분간 배열을 사용하지 않는다는 것을 알고 있습니다... 제 코드에는 두 개의 배열만 있습니다. 틱 이전의 주문 배열과 틱 이후의 주문 배열입니다. 그것들은 내 전역 변수 범위에 설정됩니다. 이 위치를 여는 코드를 어드바이저의 다른 위치로 옮기고 오류가 사라진 것이 재미있습니다. 오더 를 여는 함수에 대한 재귀 호출 이 있는 것 같았지만 그것에 대해 많이 생각하지 않았습니다. 나는 방금 총 이익을 달성하고 모든 포지션을 청산하는 코드에서 클로즈 직후에 오프닝을 배치하는 것이 적절하지 않다고 결정했습니다. 힙업, 젠장... :)
artmedia70 : Igor, 당신은 내가 당분간 배열을 사용하지 않는다는 것을 알고 있습니다... 제 코드에는 두 개의 배열만 있습니다. 틱 이전의 주문 배열과 틱 이후의 주문 배열입니다. 그것들은 내 전역 변수 범위에 설정됩니다. 이 위치를 여는 코드를 어드바이저의 다른 위치로 옮기고 오류가 사라진 것이 재미있습니다. 오더를 여는 함수에 대한 재귀 호출이 있는 것 같았지만 그것에 대해 많이 생각하지 않았습니다. 나는 방금 총 이익을 달성하고 모든 포지션을 청산하는 코드에서 클로즈 직후에 오프닝을 배치하는 것이 적절하지 않다고 결정했습니다. 힙업, 젠장... :)
나는 오랫동안 고문을 만들기위한 템플릿을 만들었습니다. 주문할 때 즉시 이러한 유형의 주문의 존재에 대한 표시 (플래그)를 설정 한 다음이 유형의 새 주문을 열기 전에 항상 플래그를 확인합니다. - 그런 주문이 있긴 한데 주문 하나만으로 어드바이저를 쓴다
나는 오랫동안 고문을 만들기위한 템플릿을 만들었습니다. 주문할 때 즉시 이러한 유형의 주문의 존재에 대한 표시 (플래그)를 설정 한 다음이 유형의 새 주문을 열기 전에 항상 플래그를 확인합니다. - 그런 주문이 있긴 한데 주문 하나만으로 어드바이저를 쓴다
그래서 결국 나도 그렇지만 모든 사람이 자신의 개발, 템플릿 및 기타 유용한 것들을 가지고 있다고 생각합니다. 이것은 다른 문제입니다. 나는 여전히 드로다운과 싸우고 있기 때문에 다양한 메소드-메소드-함수 등등을 뒤틀리고 비틀고 있다. 추세에 따라 순수하고 엄격하게 작업을 수행하면 매우 적은 수의 포지션이 열리며, 각각 고유한 추세/플랫이 있는 여러 시간대에서 작업하면 추세 고갈을 잡는 방법이 명확하지 않은 경우 하나의 오래된 프레임에서 추세는 이미 평평하게 바뀌었고 더 젊은 프레임에서는 여전히 거기에 있지만 이미 끝나가고 있습니다. 로우에서 포즈를 열면 시간에 쫓기지 않고 드로다운을 줄 확률이 높다. 이제 4시간 차트부터 시작하여 방향을 결정하고 모든 후배를 위해 이 방향으로만 작업하려고 합니다. 나는 결과를 보기 위해 추세에서 평평한, 다소간 호황으로 전환하는 순간을 결정했습니다.
예, 실제로 "0"이지만 어떻게 해야 하는지 알려주세요. 이 방법으로 작동하지 않고 동일한 기간을 설정하고 두 옵션(new 및 old) 모두에서 시도했습니다. Print("NormalizeDouble(c1b_1..., 0을 제공(값 c1b[i]만 표시, c1s[i] - 0을 포함한 나머지 모두 표시), 옵션 중 하나를 작동 상태로 가져오는 데 도움을 주거나 최소한 힌트를 공유하면 누가 결함을 볼 수 있습니까?
새로운:
낡은:
전부의:
유리야 미래를 위해 코드가 반복된다면적어도 두 번은 메서드에 할당해야 하며 코드를 복잡하게 만드는 배열 힙이 필요하지 않습니다. 다음은 방법입니다.
//+------------------------------------------------------------------+double iCCIAverage( string cci_symbol, int cci_timeframe, int cci_period, int cci_applied_price, int ma_period, int ma_method, int ma_shift){
double array[];
int loop_array;
ArrayResize (array,ma_period + ma_shift);
for ( int loop = ma_period + ma_shift - 1 ; loop >= 0 ; loop--, loop_array++)array[loop_array] = iCCI (cci_symbol, cci_timeframe, cci_period, cci_applied_price, loop);
return (iMAOnArray(array, 0 , ma_period, 0 , ma_method, ma_shift));
}
//+------------------------------------------------------------------+
매개변수로 모든 것이 명확하다고 생각하고 데이터를 입력하고 ma_shift 매개변수를 변경하여 필요한 시프트를 얻습니다. 이 방법을 템플릿으로 사용할 수 있습니다. 액세스 방법을 표시기 i…(…) 또는 iCustom(…) 으로 변경하기만 하면 됩니다. 이제 거래 결정 블록은 다음과 같아야 합니다.
스택 오버플로의 원인은 무엇입니까? 테이크 크기가 큰 위치를 열 때(테이크는 변동성에서 계산되고 100을 곱한 크기는 41*100으로 판명됨) 스택 오버플로가 로그에 기록되고... 건강합니다. 이 포지션이 닫힐 때까지 더 이상 단일 포지션이 열리지 않으며, 이 포지션은 엄청난 테이크로 인해 닫히지 않습니다... 그리고 어드바이저가 더 이상 올바르게 작동하지 않기 때문입니다. 오픈 포지션의 예정된 총 이익에 도달하면 모든 포지션을 청산해야 합니다... 그러나 이것은 한 포지션이 오랫동안 약 2,000포인트의 엄청난 이익을 냈음에도 불구하고 그런 일이... 이것? 결국, 열린 포즈가 함께 스택을 오버플로하고 모든 것이 공중제비를 굴릴 때 그러한 상황에 대해 보장할 수 없습니다...
스택은 유형 범위를 벗어난 숫자로 오버플로할 수 없습니다. 다른 오류가 발생합니다.
스택은 종료하지 않고 함수 또는 재귀 함수 호출에 전달된 데이터로 오버플로할 수 있습니다.
start()는 동일한 함수입니다. 아마도 거기에 많은 변수가 있을 것입니다.
스택은 함수(로컬 변수)의 중간 값이 저장되는 메모리 영역입니다. 동적 배열을 사용하고 배열의 범위를 올바르게 제어하지 않은 경우 스택을 직접 파괴할 수 있습니다. 즉, 배열에 데이터를 쓰지 않고 단순히 배열 바로 뒤에 오는 메모리 영역에 데이터를 썼습니다.
일부 배열을 전역 변수 로 이동하십시오. 조언자를 맨 위로 데려가다
추신: 적어도 이것은 모든 프로그래밍 언어의 경우입니다. - mql에서도 마찬가지라고 생각합니다.
스택은 유형 범위를 벗어난 숫자로 오버플로할 수 없습니다. 다른 오류가 발생합니다.
스택은 종료하지 않고 함수 또는 재귀 함수 호출에 전달된 데이터로 오버플로할 수 있습니다.
start()는 동일한 함수입니다. 아마도 거기에 많은 변수가 있을 것입니다.
스택은 함수(로컬 변수)의 중간 값이 저장되는 메모리 영역입니다. 동적 배열을 사용하고 배열의 범위를 올바르게 제어하지 않은 경우 스택을 직접 파괴할 수 있습니다. 즉, 배열에 데이터를 쓰지 않고 단순히 배열 바로 뒤에 오는 메모리 영역에 데이터를 썼습니다.
일부 배열을 전역 변수로 이동하십시오. 고문을 맨 위로 데려가다
추신: 적어도 이것은 모든 프로그래밍 언어의 경우입니다. - mql에서도 마찬가지라고 생각합니다.
Igor, 당신은 내가 당분간 배열을 사용하지 않는다는 것을 알고 있습니다... 제 코드에는 두 개의 배열만 있습니다. 틱 이전의 주문 배열과 틱 이후의 주문 배열입니다. 그것들은 내 전역 변수 범위에 설정됩니다. 이 위치를 여는 코드를 어드바이저의 다른 위치로 옮기고 오류가 사라진 것이 재미있습니다. 오더를 여는 함수에 대한 재귀 호출이 있는 것 같았지만 그것에 대해 많이 생각하지 않았습니다. 나는 방금 총 이익을 달성하고 모든 포지션을 청산하는 코드에서 클로즈 직후에 오프닝을 배치하는 것이 적절하지 않다고 결정했습니다. 힙업, 젠장... :)
나는 오랫동안 고문을 만들기위한 템플릿을 만들었습니다. 주문할 때 즉시 이러한 유형의 주문의 존재에 대한 표시 (플래그)를 설정 한 다음이 유형의 새 주문을 열기 전에 항상 플래그를 확인합니다. - 그런 주문이 있긴 한데 주문 하나만으로 어드바이저를 쓴다
나는 오랫동안 고문을 만들기위한 템플릿을 만들었습니다. 주문할 때 즉시 이러한 유형의 주문의 존재에 대한 표시 (플래그)를 설정 한 다음이 유형의 새 주문을 열기 전에 항상 플래그를 확인합니다. - 그런 주문이 있긴 한데 주문 하나만으로 어드바이저를 쓴다
예, 실제로 "0"이지만 어떻게 해야 하는지 알려주세요. 이 방법으로 작동하지 않고 동일한 기간을 설정하고 두 옵션(new 및 old) 모두에서 시도했습니다. Print("NormalizeDouble(c1b_1..., 0을 제공(값 c1b[i]만 표시, c1s[i] - 0을 포함한 나머지 모두 표시), 옵션 중 하나를 작동 상태로 가져오는 데 도움을 주거나 최소한 힌트를 공유하면 누가 결함을 볼 수 있습니까?
새로운:
낡은:
전부의:
유리야 미래를 위해 코드가 반복된다면 적어도 두 번은 메서드에 할당해야 하며 코드를 복잡하게 만드는 배열 힙이 필요하지 않습니다.
다음은 방법입니다.
매개변수로 모든 것이 명확하다고 생각하고 데이터를 입력하고 ma_shift 매개변수를 변경하여 필요한 시프트를 얻습니다. 이 방법을 템플릿으로 사용할 수 있습니다. 액세스 방법을 표시기 i…(…) 또는 iCustom(…) 으로 변경하기만 하면 됩니다. 이제 거래 결정 블록은 다음과 같아야 합니다.
따라서 이제 "이전" 및 "신규" 옵션이 필요하지 않으며 지정된 기준에 따라 거래가 열립니다(내가 이해하는 한 부드러운 iCC의 상단/하단 3개 패턴이 있음). 파일에 수정된 버전이 있습니다.
안녕하세요.
주문 이 시작된 이후로 배열에 가격을 쓰는 코드를 알려주세요.
각각의 새로운 가격이 배열에 추가되도록 만드는 방법입니다.
안녕하세요.
주문이 시작된 이후로 배열에 가격을 쓰는 코드를 알려주세요.
각각의 새로운 가격이 배열에 추가되도록 만드는 방법입니다.
질문에 대해 더 구체적으로
주문할 당시의 현재 가격에 관심이 있는 경우 현재 가격을 변경 사항이 있는 전역 배열에 기록할 책임이 있는 주문을 담당하는 코드의 함수에 대한 호출을 추가할 수 있습니다. 배열 인덱스 카운터에서 코드의 어느 곳에서나 볼 수 있습니다.
어드바이저의 성능을 확인하는 방법 - 코드 실행 시간을 밀리초 단위로 표시하고 싶습니다.
MT5 대 MT4가 얼마나 더 나은지
어드바이저의 성능을 확인하는 방법 - 코드 실행 시간을 밀리초 단위로 표시하고 싶습니다.
MT5 대 MT4가 얼마나 더 나은지
GetTickCount가 도움이 될 것입니다 https://docs.mql4.com/en/common/GetTickCount
GetTickCount가 도움이 될 것입니다 https://docs.mql4.com/en/common/GetTickCount
ATP 예입니다. MT4 및 MT5에 대해 동일한 유형의 코드 속도를 측정한 사람이 내가 찾던 것입니다.