안녕하세요! MACD, AO 및 이와 유사한 표시기에 채널을 표시하는 표시기를 만들고 싶습니다. 이 지표는 기본 지표(MACD, AO 등)의 창에 중첩되며 0 위와 아래에 평행선으로 그려집니다. 이 선은 최고점(0 초과) 및 최저점(아래)의 평균값으로 정의됩니다. 0) 지정된 기간 동안. AO 표시기의 예를 사용하여 계획을 구현하려고 하지만 뭔가 잘 되지 않습니다. 연산: 표시기 판독값을 배열에 쓰고, 우리는 정점/저점을 찾기 위해 이 배열을 실행합니다. 특정 배열에 씁니다. 우리는 최고점의 평균값을 찾은 다음 최저점을 찾습니다. 결과 값을 표시기 버퍼 에 할당합니다. 이 단계에서 코드는 표시기의 채널(0에 고정)을 정확히 결정하지 않고 최고점의 평균과 최저점의 평균을 결정합니다. 봉우리와 저점의 정의는 코드에서 제거하고 함수로 형식화할 수 있지만 지금까지는 이대로 남아 있어 본질이 바뀌지 않습니다. 문제: 1. 말기 동결(중요) 2. 라인은 평균으로 표시되지 않으며 일정 기간 동안 최대/최소값으로 구합니다. 이해하는 데 오랜 시간이 걸렸지만 문제의 원인을 이해할 수 없습니다. 내 코드를 수정하는 데 도움을 주거나 유사한 문제가 논의되거나 기본 코드가 제공되는 링크를 제공하면 더 이해하겠습니다. 미리 감사드립니다.
int start(){
int limit= Bars - IndicatorCounted ();
for ( int i=limit;i>= 0 ;i--){
// if (IsNewBar()){int j= 0 ;
for ( int d= 2 ;d<=period- 1 ;d++){
ArrayResize (AO,j+ 1 );
AO[j]=AO(d); // Запишем данные инд. в цикле в массивPrint ( "АО-" ,AO[j], "-" ,d, "-" ,i);
j++;
}
int k_up= 0 ,k_dw= 0 ; double SDw= 0 ,SUp= 0 ,P1= 0 ,P2= 0 ;
//собираем экстремумы выше 0for ( int p= 4 ;p<=period- 1 ; p++){
if (AO[p]>AO[p+ 1 ] && AO[p]>AO[p- 1 ]
&& AO[p+ 1 ]>AO[p+ 2 ]
&& AO[p+ 2 ]>AO[p+ 3 ]
&& AO[p+ 3 ]> 0
&& AO[p- 1 ]>AO[p- 2 ]
&& AO[p- 2 ]>AO[p- 3 ]
&& AO[p- 3 ]> 0 ){ // Нашли максArrayResize (Up, k_up+ 1 ); // Размер массива донышек под кол-во найденных донышек
Up[k_up]=AO(p); // Заносим значение пика в массив Print ( "значение пика-" ,Up[k_up], "-" ,p);
SUp=SUp+Up[k_up];
P1=SUp/(k_up+ 1 );
k_up++; // Увеличиваем индекс массива донышек
}
//собираем впадины ниже 0if (AO[p]<AO[p+ 1 ] && AO[p]<AO[p- 1 ]
&& AO[p+ 1 ]<AO[p+ 2 ]
&& AO[p+ 2 ]<AO[p+ 3 ]
&& AO[p+ 3 ]< 0
&& AO[p- 1 ]<AO[p- 2 ]
&& AO[p- 2 ]<AO[p- 3 ]
&& AO[p- 3 ]< 0 ){ // Нашли минArrayResize (Dw, k_dw+ 1 ); // Размер массива донышек под кол-во найденных донышек
Dw[k_dw]=AO[p]; // Заносим значение пика в массив Print ( "значение донышка-" ,Dw[k_dw], "-" ,p);
SDw=SDw+Dw[k_dw];
P2=SDw/(k_dw+ 1 );
k_dw++; // Увеличиваем индекс массива донышек
}
}
level1[i]=P1;
level2[i]=P2;
}
return ( 0 );
}
//+------------------------------------------------------------------+double AO( int a){ double AO= iAO ( NULL , 0 , a);
return (AO);
}
내 아이디어는 다음과 같습니다.
주문을 열면 마감된 잔액에 따라 다릅니다.
잔액이 0보다 작으면 손실을 수정하고 기억하고, 0보다 크면 처음부터 작업을 시작합니다.
손실이 0보다 작으면 이를 수정하고 변수에 할당했습니다. 예: 마이너스
빼기 = OrderProfit(-45센트);
AccountAqviti + 마이너스 + 내 가치(내 양심)
다음 순서로 추가:
이 주문의 이익이 AccountAqviti + 마이너스 + 내 가치(내 양심)보다 크면 주문을 닫고 그렇지 않은 경우 0보다 크면 다음을 수정합니다.
(AccountAqviti + OrderProfit) - (AccountAqviti + 마이너스 + 내 가치(내 양심)) = 마이너스
빼기 >= 0이면 빼기 = 0입니다.
내 아이디어는 다음과 같습니다.
안녕하세요! MACD, AO 및 이와 유사한 표시기에 채널을 표시하는 표시기를 만들고 싶습니다. 이 지표는 기본 지표(MACD, AO 등)의 창에 중첩되며 0 위와 아래에 평행선으로 그려집니다. 이 선은 최고점(0 초과) 및 최저점(아래)의 평균값으로 정의됩니다. 0) 지정된 기간 동안.
AO 표시기의 예를 사용하여 계획을 구현하려고 하지만 뭔가 잘 되지 않습니다.
연산:
표시기 판독값을 배열에 쓰고,
우리는 정점/저점을 찾기 위해 이 배열을 실행합니다.
특정 배열에 씁니다.
우리는 최고점의 평균값을 찾은 다음 최저점을 찾습니다.
결과 값을 표시기 버퍼 에 할당합니다.
이 단계에서 코드는 표시기의 채널(0에 고정)을 정확히 결정하지 않고 최고점의 평균과 최저점의 평균을 결정합니다.
봉우리와 저점의 정의는 코드에서 제거하고 함수로 형식화할 수 있지만 지금까지는 이대로 남아 있어 본질이 바뀌지 않습니다.
문제:
1. 말기 동결(중요)
2. 라인은 평균으로 표시되지 않으며 일정 기간 동안 최대/최소값으로 구합니다.
이해하는 데 오랜 시간이 걸렸지만 문제의 원인을 이해할 수 없습니다. 내 코드를 수정하는 데 도움을 주거나 유사한 문제가 논의되거나 기본 코드가 제공되는 링크를 제공하면 더 이해하겠습니다. 미리 감사드립니다.
ExistInHistoryToDay().
안녕하세요!
문제:
1. 말기 동결(중요)
루프에서 배열의 크기를 늘리는 것은 잔인합니다. 그래서 우리는 중단합니다. 크기에 맞게 한 번 확대합니다. 또는 시계열을 즉시 사용하십시오.
PS 개인 메시지 참조
string 유형 의 변수를 반복하는 방법은 무엇입니까?
예시
이 구성을 사이클로 대체하는 방법은 무엇입니까?안녕하세요, 오픈 오더의 이익이 1포인트인 경우 이 오더를 청산하는 조건을 작성하는 방법을 알려주세요.
기능을 사용하여.
https://www.mql5.com/ru/forum/131859/page3#434225
문자열 변수를 반복하는 방법?
예시
이 구성을 사이클로 대체하는 방법은 무엇입니까?감사해요