포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 130

 
skyjet :

고맙습니다! 어느 쪽에서 시작하는지, 즉 3번째 마디부터 시작하는지는 중요하지 않습니까?

귀하의 예에서는 실제로 차이가 없지만 어떤 경우에도 배열의 시작과 끝을 지정해야 합니다.

 for ( int x= 3 ; x> 1 ; x--)
{
 if (Open[x]==Open[x- 1 ]) continue ;
 if (Open[x]<Open[x- 1 ])
   {
   //--- action
   }
}
배열이 큰 경우 반복 시작이 중요합니다. 예를 들어, 조건이 일반적으로 배열의 끝에서 발생하는 경우 끝에서 시작하는 것이 가장 좋습니다. 이 예는 주문/포지션을 검색하는 데 일반적입니다. 물론 이 경우 검색이 먼저 수행되면 프로그램은 어쨌든 이 지점에 도달하지만 더 많은 리소스가 소비됩니다.
 
Danila_mactep :
안녕하세요! 그런 것을 말씀해 주세요... 여기에서 수준 탭의 MA 표시기에 수준을 할당할 수 있습니다. 예를 들어 20이라고 가정해 보겠습니다. 즉, 이동 평균은 y축을 따라 20포인트 이동하지만 이 가격은 수준이 데이터 창에 표시되지 않습니다. 예를 들어 798만큼 이동하려는 경우 많은 쌍에 대해 골치 아픈 일입니다. 이동 평균의 가격을 표시하도록 표시기를 작성하는 방법 차트 또는 그래서 데이터 창에서 가격을 볼 수 있고 수동으로 계산할 필요가 없습니다?
입력 데이터에 MAC 오프셋이 포함될 표시기를 생성합니다. 그리고 표시기는 가격 수준을 계산하고 즉시 차트에 개체로 표시합니다.
 
chief2000 :
이러한 문제는 크기가 변경될 수 있는 1차원 배열이 있습니다.
루프에서 배열 요소의 가능한 모든 조합을 서로 반복하는 방법은 무엇입니까?
요소의 순서는 중요하지 않습니다. 123==213==321..

다음은 4개의 요소가 있는 배열의 예입니다.


두뇌에 좋은 퍼즐. 다음과 같이 시도할 수 있습니다.
 int start(){
 double array[ 4 ];
 int k,N[];
 k= ArraySize (array);
 ArrayResize (N,k);
 for ( int i= 0 ;i<k;i++)N[i]=-i- 1 ; // Заполнили массив элементов массива отрицательными
//
 int j= 0 ;
 while (N[k- 1 ]<k){
   if (N[j]<k- 1 ){
   N[j]++;
   bool NewComb= false ;
   for (i= 0 ;i<k- 1 ;i++){
     if (N[i]>N[i+ 1 ]){NewComb= true ;} else {NewComb= false ; break ;}
   }
//
   if (NewComb){
// Получили новую комбинацию в массиве N размерностью k    
     string temp= "" ;
     for (i= 0 ;i<k;i++){ // Перебираем массив N. Если N[i] то элемент array[N[i]] не участвует в выборке.
                     // Например, для размерности 4 если N[0]=3,N[1]=1,N[2}<0,N[3]<0 то это выборка array[3] и array[1]
                     //                             если N[0]=3,N[1]=2,N[2]=1,N[3]=0 то это выборка array[3] и array[2] array[1] и array[0]
     if (N[i]< 0 )temp= StringConcatenate (temp, "X" ); else temp= StringConcatenate (temp,N[i]);
    }
   Print ( "NEWCOMB " ,temp); // это для проверки какие комбинации выбираются
   }
//
  }
   else {
   N[j]= 0 ;i= 1 ;
   while (i<k){
     if (N[i]<k- 1 ) { if (N[i]>= 0 )N[i]++; else N[i]= 0 ;j= 0 ; break ;}
     else {N[i]= 0 ;i++;}
   }
  }
   if (N[k- 1 ]>=k- 1 ) break ;
 }
 return ;
}

차원 4에 대한 테스트 결과 입니다. 배열의 X 요소가 선택되지 않은 경우 차원 6에 대해 array[digit] 및 조각을 사용합니다.

 
artmedia70 :
입력 데이터에 MAC 오프셋이 포함될 표시기를 생성합니다. 그리고 표시기는 가격 수준을 계산하고 즉시 차트에 개체로 표시합니다.


하지만 나는 그것을 하는 방법을 모르고 솔직히 말해서 나는 방법조차 모른다 그것. 복사할 ma 코드 부분과 거기에 레벨을 입력할 위치는 무엇입니까?
 
Danila_mactep :

하지만 나는 그것을 하는 방법을 모르고 솔직히 말해서 나는 방법조차 모른다 그것. 복사할 ma 코드 부분과 거기에 레벨을 입력할 위치는 무엇입니까?
아니요, 지표 작성을 시작해야 하며 거기에서 해야 할 일을 알려줄 것입니다.
 
artmedia70 :
아니요, 지표 작성을 시작해야 하며 거기에서 해야 할 일을 알려줄 것입니다.

새 지표를 만들었습니다. 지금까지 다음과 같습니다.

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"

#속성 표시기_차트_창
#속성 표시기_버퍼 1
#property indicator_color1 빨간색
//--- 버퍼
이중 ExtMapBuffer1[];
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//---- 표시기
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
#include "이동 평균.mq4"
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
int counted_bars=IndicatorCounted();
//----

//----
반환(0);
}
//+----------------------------------------------- --------------------+

 
 
MA 표시기에는 레벨이 있습니다. 문제는 가격이 100 또는 -100 수준에 도달한 경우 이러한 수준에서 데이터를 얻을 수 있는 방법입니다(구매/판매 거래를 엽니다).
 
alexey1979621 :
MA 표시기에는 레벨이 있습니다. 문제는 가격이 100 또는 -100 수준에 도달한 경우 이러한 수준에서 데이터를 얻을 수 있는 방법입니다(구매/판매 거래를 엽니다).

0(현재) 막대의 MA 자체는 다음과 같습니다.

 double priceMA0= iMA ( Symbol (), Period (), MA_Period, MA_Shift, MA_ Method, PRICE_OPEN , 0 );

Mashka를 계산하기 위해 현재 막대에서 "딸랑이는 소리"를 제거하기 위해 공개 가격을 취합니다.

그러면 레벨 +100 의 가격은 다음과 같습니다.

 double priceP100=priceMA0+ 100 * Point ;

레벨 -100 가격은 다음과 같습니다.

 double priceM100=priceMA0- 100 * Point ;
 
artmedia70 :

0(현재) 막대의 MA 자체는 다음과 같습니다.

Mashka를 계산하기 위해 현재 막대에서 "딸랑이는 소리"를 제거하기 위해 공개 가격을 취합니다.

그러면 레벨 +100 의 가격은 다음과 같습니다.

레벨 -100 가격은 다음과 같습니다.


도와주셔서 감사합니다. 나도 곧 프로그래밍 잘할꺼야...
사유: