[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 251

 
FAQ :


여기 있습니다:

호환되지 않는 유형 오류

 
Leo59 :

친애하는 Granit77 ! 괜찮으시다면 코드를 직접 수정하고, 잘못된 부분이 있으면 수정하십시오. 명확하고 이해할 수 있을 것입니다.

예시. 8개의 사용 가능한 표시기 버퍼 중 7개는 표시기 창에 라인을 표시하는 데 사용되고 8번째는 표시기 창에 표시하지 않고 계산에 사용됩니다.
표시기 버퍼가 충분하지 않은 경우 일반 배열에서 계산을 수행할 수 있습니다.

 #속성 표시기_버퍼 7

이중 ind_buffer1[]; 
이중 ind_buffer2[];
이중 ind_buffer3[];
이중 ind_buffer4[];
이중 ind_buffer5[];
이중 ind_buffer6[];
이중 ind_buffer7[];
double ind_buffer8[];// 여덟 번째 버퍼는 추가 계산에 사용됩니다.

//이중 ind_buffer9[]; //음, 인디케이터에 9번째 버퍼가 없습니다. 이 배열을 넣을 곳이 없습니다.

정수 초기화()
  {

표시 버퍼(8);

SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
SetIndexBuffer(3,ind_buffer4);
SetIndexBuffer(4,ind_buffer5);
SetIndexBuffer(5,ind_buffer6);
SetIndexBuffer(6,ind_buffer7);
SetIndexBuffer(7,ind_buffer8);

//ind_buffer1...ind_buffer7 7줄 그리기 
// #property indicator_buffers 7에 따라 표시기 창에 표시됩니다.
//ind_buffer8은 창에 표시되지 않지만 계산에 참여할 수 있습니다.  
   반환(0);
  }

 
granit77 :
예시. 사용 가능한 8개의 표시기 버퍼 중 7개는 표시기 창에 라인을 표시하는 데 사용되고 8번째는 표시기 창에 표시되지 않고 계산에 사용됩니다.
표시기 버퍼가 충분하지 않은 경우 일반 배열에서 계산을 수행할 수 있습니다.



고맙습니다! 이것은 분명합니다.

그렇지 않으면 명확하지 않습니다. 계산에 포함되고 표시기 창에 표시되지 않는 배열을 SetIndexBuffer로 식별해야 하는 이유는 명확하지 않습니다. 그리고 계산에 10개의 배열과 8개의 표시가 필요한 경우(총 18개) 이 10개를 올바르게 선언하고 식별하는 방법은 무엇입니까? 나는 그것들이 그려지지 않았다는 점을 제외하고 표시기 버퍼 에 연결된 배열과 동일한 속성을 갖기를 원했습니다.

 
Zhunko :

작동하지 않으면 이름을 바꿀 필요가 없습니다. 이상하다. WinRar를 선택하여 마우스의 컨텍스트 메뉴에서 열 수 있습니다. 또는 WinRar를 연 다음 "파일" 메뉴 항목 "아카이브 열기"에서 아카이브를 찾아 엽니다.

확장자는 자동 파일 연결에만 필요하다고 위에서 썼습니다.

확장 프로그램 가시성을 켰습니까? 작동하지 않는 경우 여기에 스크린샷 또는 비디오를 참조하십시오.


자세한 지침에 감사드립니다. 이 WinRar를 다운로드했는데 분명히 거기에 없었고 아카이브가 열렸습니다!
 
기능이 어떻게 작동하는지 모르겠습니다. 사실, 지금은 틱이 작동하지 않지만 적어도 차트에 합류할 때 시작은 작동해야 하지 않습니까? 글쎄, 적어도 컴파일됩니다! 나는 이렇게 노력한다
 //+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle ( Symbol (), Period ());
   while (! IsStopped ())
    {
     for ( int i = 0 ; i < 9 ; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
홍보 //이익
UB //손실
Pk //구매 값을 수락하는 변수
Pr //판매 값을 받는 변수
ADR // 스크립트 값을 받는 변수

//수익 조건
if(PR==Pk) //구매시 이익이 발생하면
ADR=1; //스크립트 1 설치
else //판매 이익일 경우
ADR=2; //스크립트 2 설치

//판매조건
if(UB==Pk) //구매에 손실이 있는 경우
ADR=2; //스크립트 2 설치
else //판매 손실이 있는 경우

ADR=1; //스크립트 1 설치

거래를 위해 이것을 어떻게 개선할 수 있습니까? 어드바이저는 어떤 주문이 마감되었는지(매수 또는 매도), 어떻게 손익으로 마감되었는지 모니터링해야 합니다. 그리고 그런 분석을 한 후 1~2개의 스크립트를 실행했습니다.

 
이익실현 및 손절매를 나타내는 변수의 이름은 무엇입니까? 그리고 실행할 스크립트의 주소를 지정하는 방법은 무엇입니까?
 
Dimka-novitsek :
기능이 어떻게 작동하는지 모르겠습니다. 사실, 지금은 틱이 작동하지 않지만 적어도 차트에 합류할 때 시작은 작동해야 하지 않습니까? 글쎄, 적어도 컴파일됩니다! 나는 이렇게 노력한다

진드기가 없습니다. 시작이 작동하지 않습니다. 스크립트로 컴파일할 수 있습니다. 그러나 업데이트될 인접 차트의 핸들을 지정해야 합니다.

또는 다음과 같이:

 #include <ServicesMT4.mqh>
int hwndChart = NULL ;
void init()
 {
  hwndChart = WindowHandle ( Symbol (), Period ()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000 ); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (! IsStopped ())
   {
     for ( int i = 0 ; i < 9 ; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep ( 4000 );
     }
   }
 }

그러나 그것은 아마도 당신을 위해 작동하지 않을 것입니다. ServiceRefreshChart () 함수를 모든 사람이 사용할 수 있는 것은 아닌 것 같습니다.

표시기에서 시도할 수 있습니다. 거기에서 일정에 합류할 때와 TF를 2번 변경하면 시작이 업데이트됩니다.

 
감사해요!!!!!!
 
컴파일되지만 실행되지 않습니다.
사유: