코딩 도움말..경보 대신 필터링할 지표를 얻으려면 어떻게 해야 합니까? - 페이지 2

 
Aaragorn:
내가 할 수 있니? 그냥 버퍼 인덱스를 표시기에 쓰고 위와 아래 단어를 사용하고 위, 아래 라인의 값을 반환하게 하시겠습니까?

지표에 없습니다. EA에서. (U는 표시기로 할 수 있지만 자체 코드 내에서 동일한 표시기를 사용하면 안 됩니다!!!!!)

 
elihayun:
지표에 없습니다. EA에서. (U는 표시기로 할 수 있지만 자체 코드 내에서 동일한 표시기를 사용하면 안 됩니다!!!!!)

그래서 EA에 버퍼 인덱스 를 쓸 수 있지만 표시기에서 값을 가져오는 방법은 무엇입니까? 다소 어리석은 자체 코드 내부에 표시기를 사용하려는 것은 아닙니다. 내 통신 끊김을 용서하십시오. 때때로 문제가 무엇인지 충분히 구체적으로 전달하는 것은 쉽지 않습니다. 그것은 코딩과 코딩에 대해 다른 사람들에게 이야기하는 것 모두의 문제입니다.

 

나를 도우려 하지만 내 게시물이 정보 과부하를 찾는 사람들에게 사과하겠습니다. 기본적으로 두 개의 창을 서로 옆에 열 수 있기 때문에 많은 코드를 게시했습니다. 한 창은 이 스레드이고 다른 창은 메타에디터이며 한 창에서 코드의 한 부분을 보고 다른 창에서 다른 부분을 볼 수 있습니다. 창과 나는 내가보고있는 문제를 통해 내 방식을 생각하는 데 도움이됩니다. 나는 그런 식으로 매우 시각적이고 내가 하고 있는 것과 하고 싶은 것에 대해 생각하는 데 도움이 됩니다. 코드 전체를 살펴봐야 하는 많은 코드를 가진 사람을 압도하려는 것은 아닙니다. 때때로 나는 WHERE와 WHAT이 완료되어야 하는 것에 초점을 맞추려고 할 때 전체 EA 또는 전체 지표를 게시한 후 스니펫을 골라내려고 했습니다. 시간을 내어 내가 하고 있는 일을 살펴보고 건설적인 의견을 제시해 주신 모든 분들께 감사드립니다. 내가 게시하는 내용의 양이 너무 많으면 내가 하려는 일을 찾기 위해 필터링하고 내가 하고 있는 일에 대한 컨텍스트로만 존재하는 나머지 부분에 얽매이지 마십시오. 나는 기본적으로 큰 소리로 생각합니다.

 
Aaragorn:
그래서 EA에 버퍼 인덱스를 쓸 수 있지만 표시기에서 값을 가져오는 방법은 무엇입니까? 다소 어리석은 자체 코드 내부에 표시기를 사용하려는 것은 아닙니다. 내 통신 끊김을 용서하십시오. 때때로 문제가 무엇인지 충분히 구체적으로 전달하는 것은 쉽지 않습니다. 그것은 코딩과 코딩에 대해 다른 사람들에게 이야기하는 것 모두의 문제입니다.

방법에 대해 신경 쓰지 마십시오. Metatrader가 당신을 위해 그렇게 하도록 하십시오. U는 코드를 사용하여 원하는 정보를 얻으십시오.

힌트: EA를 실행하면 "Trend Bands loaded successfully"라는 메시지가 표시됩니다. 이는 사용자가 원하는 대로 수행됨을 의미합니다.

 
elihayun:
방법에 대해 신경 쓰지 마십시오. Metatrader가 당신을 위해 그렇게 하도록 하십시오. U는 코드를 사용하여 원하는 정보를 얻으십시오. 힌트: EA를 실행하면 "Trend Bands loaded successfully"라는 메시지가 표시됩니다. 이는 사용자가 원하는 대로 수행됨을 의미합니다.

나는 내가 좋아하는 정보를 얻기 위해 코드를 사용하는 소리를 좋아합니다. 그것이 내가 배우려고 하는 것입니다. 내가 좋아하는 정보를 얻기 위해 코드를 사용하는 방법.

따라서 추세 밴드의 눈금 값을 얻는 가장 좋은 방법은 iCustome()를 사용하는 것이라고 생각하십니까? 내가 이미 한 것처럼 EA 내부에 코드를 작성하지 않습니까?

교육 목적으로 .. EA에 이미 작성된 코드가 있으므로 거기에서 값을 가져올 수 있는 방법이 있습니까?

 
elihayun:
지표를 작성하는 것과 EA를 작성하는 것은 별개입니다. 섞지 마세요. 표시기에서 올바르게 그리려면 기록도 처리해야 합니다. EA를 작성할 때 현재 틱만 있고 매 틱마다 값을 계산해야 합니다(거래 손실을 원하지 않는 경우). 따라서 CURRENT 눈금의 위쪽 및 아래쪽 가장자리 값을 얻으려면 2가지 작업을 수행할 수 있습니다.
  1. 원래 지표를 사용자 지정 지표로 사용
  2. EA 내부에 표시기의 논리를 작성하십시오.

첫 번째 옵션은 어렵지 않습니다. 먼저 윗줄과 아랫줄에 사용하는 버퍼 인덱스가 무엇인지 알아야 합니다.

그것을 찾으십시오. 표시기 코드에서 찾아야합니다.

잠깐만 버퍼가 있습니다! 내가 어떻게 그들을 놓칠 수 있었습니까?

//+------------------------------------------------------------------+

//| Trend Bands.mq4 |

//| Dwt5 and adoleh2000 |

//| Copyright © 2005, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2005, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

#property indicator_chart_window

#property indicator_buffers 5

#property indicator_color1 Red

#property indicator_color2 Black

#property indicator_color3 Blue

#property indicator_color4 Red

#property indicator_color5 Blue

double upper[], middle1[], middle2, lower[];

double Xup[], Xdown[];

extern int period = 34;

int init()

{

SetIndexStyle(0,DRAW_LINE,EMPTY,2);

SetIndexShift(0,0);

SetIndexDrawBegin(0,0);

SetIndexBuffer(0,upper);

SetIndexStyle(1,DRAW_LINE,EMPTY,2);

SetIndexShift(1,0);

SetIndexDrawBegin(1,0);

SetIndexBuffer(1,middle1);

SetIndexStyle(2,DRAW_LINE,EMPTY,2);

SetIndexShift(2,0);

SetIndexDrawBegin(2,0);

SetIndexBuffer(2,lower);

SetIndexStyle(3,DRAW_ARROW,EMPTY,2);

SetIndexArrow(3, 162);

SetIndexShift(3,0);

SetIndexDrawBegin(3,0);

SetIndexBuffer(3,Xdown);

SetIndexStyle(4,DRAW_ARROW,EMPTY,2);

SetIndexArrow(4, 162);

SetIndexShift(4,0);

SetIndexDrawBegin(4,0);

SetIndexBuffer(4,Xup);

//---- indicators

//----

return(0);

}

그래서....5개의 버퍼가 보입니다...상,중,하,위,하...

내가 원하는 정보는 상단 및 하단 버퍼에서 온 것 같은데...

 
 
Aaragorn:
이전글 수정이 아닌 새글로 쓰려고 했는데 사이트 운영이 가끔 헷갈리네요..

가장 좋은 방법은 표시기를 사용하지 않는 것입니다. 가장 간단한 방법일 뿐입니다. 시작은 충분합니다.

U는 표시기에 대한 변경 사항을 보고 있습니다. 이것을 사용하려면 코드 내부에 올바른 이름을 쓰고 있는지 확인하십시오.

어떤 버퍼에 원하는 정보가 있는지 알고 있는 한 코드에 얼마나 많은 지표가 있는지는 중요하지 않습니다.

 
elihayun:
지표를 작성하는 것과 EA를 작성하는 것은 별개입니다. 섞지 마세요. 표시기에서 올바르게 그리려면 기록도 처리해야 합니다. EA를 작성할 때 현재 틱만 있고 매 틱마다 값을 계산해야 합니다(거래 손실을 원하지 않는 경우). 따라서 CURRENT 눈금의 위쪽 및 아래쪽 가장자리 값을 얻으려면 2가지 작업을 수행할 수 있습니다.
  1. 원래 지표를 사용자 지정 지표로 사용
  2. EA 내부에 표시기의 논리를 작성하십시오.

첫 번째 옵션은 어렵지 않습니다. 먼저 윗줄과 아랫줄에 사용하는 버퍼 인덱스가 무엇인지 알아야 합니다.

그것을 찾으십시오 표시기 코드를 봐야합니다

SetIndexBuffer(0, 위);

SetIndexBuffer(1,중간1);

SetIndexBuffer(2,낮음);

보시다시피 위쪽 라인은 인덱스 0, 중간은 인덱스 1, 아래쪽은 인덱스 2입니다.

이제 이 정보가 있으므로 표시기에 포함된 매개변수의 수를 알아야 합니다. 이 정보를 얻으려면 외부 라는 단어로 시작하는 행을 찾아야 합니다.

1줄만 찾았습니다

외부 정수 기간 = 34;

이제 지표를 맞춤형 지표로 사용할 수 있습니다.

이중 upLevel = iCustome(NULL, 0, "트렌드 밴드", 34, 0, 0);

이중 LowLevel = iCustome(NULL,0, "트렌드 밴드", 34, 2, 0);

34는 표시기에 대한 매개변수입니다.

0은 버퍼 인덱스입니다(하위는 2).

마지막 0은 막대 이동입니다(EA에서는 전류가 필요하므로 0을 사용합니다)

이제 상한값과 하한값이 있으므로 가격과 비교하여 확인할 수 있습니다.

그것이 당신을 발전시킬 수 있기를 바랍니다.

엘리

이봐, 그래서 이것은 상단과 하단 라인의 현재 값을 EA로 끌어오는 데 작동합니다.

이중 upLevel = iCustome(NULL, 0, "트렌드 밴드", 34, 0, 0);

이중 LowLevel = iCustome(NULL,0, "트렌드 밴드", 34, 2, 0);

튜터링 덕분에 이해하기 시작한 것 같아요...

그래서 EA 안에 표시기 코드를 작성할 필요가 없습니다. EA에서 이렇게 부르면 됩니다. 그러면 내가 사용할 수 있는 라인의 현재 막대 값이 반환됩니다. 완벽합니다! ....누군가 이 작업을 수행하는 방법을 알고 있다는 것을 알았습니다! (그냥 내가 아니었다) ...

따라서 지표에 사용하는 기간 수를 변경할 수 있으려면 이렇게 할 것입니다...

extern double back = 300 //--원하는 대로 변경할 수 있습니다.

double upLevel = iCustome(NULL,0, "트렌드 밴드", 뒤로, 0, 0);

double LowLevel = iCustome(NULL,0, "트렌드 밴드", 뒤로, 2, 0);

내가 차트에서 사용하는 기간보다 더 긴 기간의 지표 값을 호출하고 싶다고 가정하면 ...이 작업을 수행할까요? ...

extern double back = 300 //--원하는 대로 변경할 수 있습니다.

extern double TF = 30 //--원하는 대로 변경할 수 있습니다.

double upLevel = iCustome(NULL,TF, "트렌드 밴드", 뒤로, 0, 0);

double LowLevel = iCustome(NULL,TF, "트렌드 밴드", 뒤로, 2, 0);

여기서 NULL은 현재 기호를 사용합니다.

TF는 내가 지정한 차트 막대 기간을 사용합니다.

Trend Bands는 지표를 호출합니다.

back은 지표 평균화에 사용할 사용자 정의 막대 수입니다 .

0 또는 2는 액세스할 버퍼를 알려줍니다.

마지막 0은 현재 막대를 사용하도록 지시합니다.

그게 효과가 있을까요?

 
Aaragorn:
그게 효과가 있을까요?

엄청난!!! 당신은 아이디어를 얻었다!!!!

그것은 완벽하게 작동합니다. 5M과 15M이 동시에 에지에 도달 하는지 확인하려면 각 TF에서 값을 가져와 함께 테스트할 수 있습니다.

하지만 후자를 위해 남겨주세요....