초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 188

 
Vikon :

안녕하세요!

그래픽 개체를 표시하는 데 어떤 정수가 필요한지 알 수 없습니다.

모든 시간 프레임에.

고맙습니다.

OBJ_ALL_PERIODS=2097151

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Видимость объектов - Документация по MQL5
 
C-4 :
컴파일러에 MQL4에서와 같이 사용하지 않는 함수 및 변수에 대한 메시지를 수신할 수 있는 키가 있는지 아는 사람이 있습니까?

mql4에서는 어떻게 수행됩니까?

사용하지 않는 기능에 대한 경고를 표시하지 않느냐는 질문에 레나트는 "하지 않겠다"고 답했다. 연결된 라이브러리의 사용과 관련하여. 예전 빌드에 있었습니다. 지금 - 아니. 어드바이저의 몸에서 사용하지 않는 기능들을 찾는 것은 매우 불편합니다. start() 또는 OnTick()이 아닌 일부 함수의 본문에서 사용하지 않는 변수를 찾은 경우에만 사용하지 않는 변수에 대해 이야기합니다.

 
artmedia70 :

mql4에서는 어떻게 수행됩니까?

사용하지 않는 기능에 대한 경고를 표시하지 않느냐는 질문에 레나트는 "하지 않겠다"고 답했다. 연결된 라이브러리의 사용과 관련하여. 예전 빌드에 있었습니다. 지금 - 아니. 어드바이저의 몸에서 사용하지 않는 기능들을 찾는 것은 매우 불편합니다. start() 또는 OnTick()이 아닌 일부 함수의 본문에서 사용하지 않는 변수를 찾은 경우에만 사용하지 않는 변수에 대해 이야기합니다.

OOP에는 함수가 아니라 메서드가 있기 때문입니다. 각 라이브러리에는 여러 메서드가 포함된 클래스가 있을 수 있으며 그 중 일부는 사용되지 않습니다. 또한 클래스는 다른 라이브러리도 참조하며, 그 중 일부는 메서드도 사용되지 않습니다. 결과적으로 사용하지 않는 방법의 거대한 발판이 나올 수 있습니다.

컴파일된 코드의 양으로 판단하여 컴파일러는 사용하지 않는 메서드를 자동으로 제외합니다. 저것들. 왜냐하면 그것들을 스스로 찾는 것은 의미가 없기 때문입니다. 컴파일러가 작업을 수행합니다.

 
Reshetov :

OOP에는 함수가 아니라 메서드가 있기 때문입니다. 각 라이브러리에는 여러 메서드가 포함된 클래스가 있을 수 있으며 그 중 일부는 사용되지 않습니다. 또한 클래스는 다른 라이브러리도 참조하며, 그 중 일부는 메서드도 사용되지 않습니다. 결과적으로 사용하지 않는 방법의 거대한 발판이 나올 수 있습니다.

컴파일된 코드의 양으로 판단하여 컴파일러는 사용하지 않는 메서드를 자동으로 제외합니다. 저것들. 왜냐하면 그것들을 스스로 찾는 것은 의미가 없기 때문입니다. 컴파일러가 작업을 수행합니다.

이것은 단지 문제가 아닙니다. 문제는 해당 클래스에서 사용되지 않는 메서드를 찾는 것입니다. 저 혼자만의 방법이 500가지가 넘습니다. 관계는 매우 복잡합니다. 기본적인 코드는 불가피합니다. 이미 사용되지 않은 것을 빠르게 확인하는 것은 매우 유용합니다.
 
Reshetov :

OOP에는 함수가 아니라 메서드가 있기 때문입니다. 각 라이브러리에는 여러 메서드가 포함된 클래스가 있을 수 있으며 그 중 일부는 사용되지 않습니다. 또한 클래스는 다른 라이브러리도 참조하며, 그 중 일부는 메서드도 사용되지 않습니다. 결과적으로 사용하지 않는 방법의 거대한 발판이 나올 수 있습니다.

컴파일된 코드의 양으로 판단하여 컴파일러는 사용하지 않는 메서드를 자동으로 제외합니다. 저것들. 왜냐하면 그것들을 스스로 찾는 것은 의미가 없기 때문입니다. 컴파일러가 작업을 수행합니다.

유리야, 당연하지. 그러나 고객에게 소스를 제공하면 거기에서 휩쓸고 싶어집니다. 그리고 고통이 시작됩니다. 템플릿이 많지는 않습니다. 특정 클래스의 차량에 대해 몇 가지가 있습니다. 이 경우에 관련되지 않은 기능을 정리해야 합니다. 어드바이저 본문에서만 사용하지 않는 기능과 변수를 가리키는 "마법의 버튼"을 갖고 싶습니다.
 

이전 질문에 대한 논의가 완료되기를 바랍니다. 언제 주제가 닫혀 있는지 이해하기 어렵고 질문하는 것이 적절합니다. 말하다. St_handle 및 MA_handle 계산 결과로 하나의 2차원 배열을 채우는 방법을 알 수 없지만 1차원 배열로만 전송되는 것으로 나타났습니다.

/+------------------------------------------------------------------+
//|                                                           11.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//--- input parameters
input int       Input1= 0 ;
input int       Input2= 0 ;

//--- indicator buffers
double          Label1Buffer[];
double       MA[ 10000 ][ 400 ];  
int          St_handle; 
int          MA_handle; 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer, INDICATOR_DATA );
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   int Kp     = 51 ; // с Kp начанается К% на Kp_end заканчивается
   int Kp_end = 400 ; // с Kp начанается К% на Kp_end заканчивается
   int MAp    = 2 ;   // с MAp начанается D% на MAp_end заканчивается
   int MAp_end= 31// с MAp начанается D% на MA_end заканчивается
   ENUM_STO_PRICE price_field= 1 ; // цена расчета стохастика 0 Low/High    1 Close/Close


   St_handle= iStochastic ( NULL , 0 ,Kp, 1 , 1 , MODE_EMA ,price_field);  
  
   for (MAp= 2 ;MAp<MAp_end;MAp++)
   {
    MA_handle= iMA ( NULL , 0 ,MAp, 0 , MODE_EMA ,St_handle);
   }
    
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
C-4 :
이것은 단지 문제가 아닙니다. 문제는 해당 클래스에서 사용되지 않는 메서드를 찾는 것입니다.

의미: 클래스에서 사용되지 않는 메서드? 이것은 OOP의 관행이 아닙니다. OOP의 일반 프로그래머는 알고리즘 프로그래밍과 달리 필요한 모든 필드와 메서드를 사용하여 클래스를 생성합니다. 동일한 클래스가 나중에 다른 응용 프로그램에서 유용하거나 클래스 라이브러리에 들어갈 수 있기 때문에 모든 경우에 호출됩니다. 한 프로젝트의 프레임워크 내에서도 잘린 클래스가 아닌 본격적인 클래스를 즉시 생성하는 것이 더 낫다는 사실에 대해 말하는 것이 아닙니다. 그래야 나중에 소스 코드를 오르고 필요한 필드를 추가할 필요가 없습니다. 및 방법.

OOP에서 많은 사람들이 알고리즘 프로그래밍에 익숙해진 비용 절감 효과는 나중에 역효과만 납니다. 사용되지 않는 모든 것은 프로그래머가 아니라 컴파일러에 의해 코드에서 제외되어야 합니다.

물론 OOP에서 소스 코드는 알고리즘 프로그래밍보다 큽니다. 그러나 이것은 단점이 아니라 장점이기 때문입니다. 이 프로젝트의 "추가" 코드의 상당 부분은 다른 프로젝트에서 재사용할 수 있습니다.

C-4 :


저 혼자만의 방법이 500가지가 넘습니다. 관계는 매우 복잡합니다. 기본적인 코드는 불가피합니다. 이미 사용되지 않은 것을 빠르게 확인하는 것은 매우 유용합니다.

꼽추를 조각하려고 할 필요가 없습니다. 모든 것을 한 클래스에 담습니다. 클래스 라이브러리를 만들어야 합니다. 기능을 별도의 클래스로 나누고 이 경제에 주석을 삽입하는 것을 잊지 마십시오. 그러면 모든 것이 정상입니다. 나도 처음에 Pascal 이후에 Java를 공부하기 시작했을 때 오래된 습관에 따라 모든 것을 한 번에 하려고 했습니다. 실제로 그는 OOP를 사용 하는 대신 특정 작업에 필요한 모든 것을 채워넣은 하나의 클래스를 만들었습니다. 알고리즘 프로그래밍에서처럼. 그것은 보편적이지 않은 혼란으로 판명되었으며, 미래에는 더 이상 어디에도 적용 할 수 없으며 그러한 코드를 이해하기 위해 다리를 부러 뜨릴 것이라는 사실은 말할 것도 없습니다.
 
Andrei-1 :

말하다. St_handle 및 MA_handle 계산 결과로 하나의 2차원 배열을 채우는 방법을 알 수 없지만 1차원 배열로만 전송되는 것으로 나타났습니다.

의미는 어떻습니까? 저것들. Occam의 면도날 대신 꼽추를 조각하는 이유는 무엇입니까? 저것들. 2개의 1차원 배열에 비해 2차원 배열의 장점은 무엇입니까? 결국, 기본적으로 표시기에 의해 생성된 2개의 1차원에서 2차원으로 무언가를 먼저 밀어 넣은 다음 거기에서 무언가를 당겨야 합니다. 당신은 추가 작업을 하고 있으며 다른 사람들을 참여시키려고 합니다.

1차원 배열에 문제가 있다면 게임은 그만한 가치가 있을 것입니다.

 
포럼에 올라갔을 때 얼마나 많은 메모리가 필요한지 알게 되었습니다. 나는 1차원 배열을 채우고, 그 안에 있는 신호를 찾고, 덮어쓰기하고, 다시 신호를 찾기로 결정했습니다. 10K 주기를 원합니다. 이와 같이. 한 시간에 한두 번 검색하면 충분합니다.
St_handle= iStochastic ( NULL , 0 ,Kp, 1 , 1 , MODE_EMA ,price_field); // создание хэндла стохастика 
  
   for (MAp= 1 ;MAp<MAp_end;MAp++) //перебор сглаживаний 
   {
    MA_handle= iMA ( NULL , 0 ,MAp, 0 , MODE_EMA ,St_handle); // создание хэндла сглаженного стохастика
     CopyBuffer (MA_handle, 0 , 0 , 400 ,MA); // заполнение одномерного массива значениями стохастика
     if (MA[ 1 ]> 6 ) Alert (MA[ 1 ]); // начинается поиск сигнала
    
   }
 

주제를 벗어났다면 죄송합니다..

누가 도와줘..

델파이 7 dll 프로시저에서..

절차 test1(var 데이터: Double의 배열); 표준 호출;
시작하다
ShowMessage('로그인 ');

끝;

mt4에서 :

#가져오기 "gays.dll"
무효 test1( 더블 &data[] );
#수입

ArrayResize(데이터, 6);
데이터[0]=2;
데이터[1]=4;
데이터[2]=8;
데이터[3]= 16;
데이터[4]= 21;

데이터[5]= 3;

테스트1(데이터);

2014.02.06 17:39:04.241 스택 손상, 'SOG_2014.mq4'에서 DLL 함수 호출 확인 (80,7)

아마도 누군가는 그것을 올바르게하는 방법을 알고 있습니다.
사유: