MQL5에 대한 소원 - 페이지 39

 
ds2 :
 // Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType . DataType = int ; 
AvgType . Value     = 0 ;
AvgType . Comment   = "Тип скользящей средней" ;

어쩌면 그렇게 하는 것이 합리적일까요?

 class ExternParam
{
    < template typename T >
     property T Value ...;
     property String Comment ...;
}
 
SK. писал (а):
ds2 :
SK. (a)는 다음과 같이 썼다.

나는 또한 if () 에서 벗어나고 싶습니다.

나는 인기있는 프로그래밍 언어에서 이와 같은 것을 본 적이 없습니다 ...

오, 여기, 바로 요점까지.

이 진술의 긍정적인 진술은 이것이 다른 언어로 되어 있지 않다면 그것은 나쁜 것이고, 그것은 이질적이고 불필요한 것이라는 것입니다.

제 생각에는 전혀 그렇지 않습니다.

동의한다. 그러나 더 높은 수준의 편의에서 상황을 바라볼 필요도 있습니다. MQ의 우선순위, 그리고 우리도(!) - 자동화된 거래 언어 로서의 MQL의 개선, 거래분석 기능의 개발. 그리고 MQ는 여전히 이 방향으로 풀리지 않은 많은 문제를 가지고 있습니다.


그리고 거래와 관련이 없는 비표준 프로그래밍 구성의 구현은 MQL이 만들어진 목적이 아닙니다. 개발자가 다른 언어들 사이에서 어떻게든 변질되고 눈에 띄기를 원했다면 C++가 아닌 Prolog를 프로토타입으로 사용할 것입니다. :) (개인적으로는 프롤로그 팬인 제가 봐도 재미있을 것 같습니다. :) )


프로그래머가 breakif 를 어떻게 요청하든 MQ는 이에 시간을 낭비하지 않을 것이라고 생각합니다. 그리고 그들이 옳은 일을 할 것이라고 생각합니다. 그리고 자동 거래 언어로서 MQL을 개선하는 더 시급한 작업을 해결하는 데 방해가 되는 요청으로 MQ를 방해하지 않도록 모든 사람이 제안합니다.

SK. (a)는 다음과 같이 썼다.

복잡한 구조는 주기와 목록을 기반으로 할 뿐만 아니라 형성됩니다. 그들은 또한 if -ov를 기반으로 형성됩니다. 따라서 외부 닫는 중괄호로의 제어된 점프가 유용할 것입니다.

나는 goto 입니다. :)


그러한 프로그램의 논리는 더 투명할 것입니다. 결국 breakifif -construct의 초기 종료입니다. 모든 조기 종료와 마찬가지로 특정 조건에 따라 이루어져야 합니다. 다른 경우 안에 . 따라서 우리는 breakif 에 대해 하나가 아니라 둘(!) if 'a - 프로그램 논리의 이해를 복잡하게 만들고 break 의 일반적인 개념( breakfor , breakwhile 등) 하나 의 구성을 넘어서는 연산자로. 아마도 그것이 다른 언어의 개발자가 아직 그러한 모호한 연산자를 도입하지 않은 이유입니까? ..

 
ds2 писал (а):
그리고 자동 거래 언어로서 MQL을 개선하는 더 시급한 작업을 해결하는 데 방해가 되는 요청으로 MQ를 방해하지 않도록 모든 사람이 제안합니다.


나는 goto 입니다. :) 그러한 프로그램의 논리는 더 투명할 것입니다.

친애하는 개발자 여러분! "자동 거래 언어로서 MQL을 개선하는 더 긴급한 작업을 해결하는 데" 주의가 분산되지 마십시오.

우리는 더 이상 당신을 귀찮게하지 않습니다.

당신이 여전히해야 할 유일한 일은 ds2의 의견을 고려하는 것입니다.

 

회의론자 Filozov 기사에서 영감을 얻었습니다. 테스트 보고서에 평균 손익을 포인트로 입력하고 거래의 최대값과 최소값도 입력합니다.

 

읽기 전용 요청


기능을 입력하거나 터미널의 모든 하위 폴더에 대한 현재 기능 액세스를 허용합니다.

처리할 자료가 있는 경우: 예: 로그

읽기 전용 모드에서만


\experts 폴더에 다른 \experts\ services 폴더를 예약하십시오.

DC의 모든 종류의 정보가 중앙에서 작성되는 곳입니다.

예를 들어 달력의 자동 업데이트된 형식 파일, "숫자"로 된 뉴스 등...


요청이 무엇인지 명확히 해야 하는 경우 문제가 없습니다. ;)

 

차트에 담고싶다
1. 굵기 1의 선이 거칠어 보이기 때문에 헤어라인.

2. 반올림 Digits+2 로 라인을 표시하는 것이 좋을 것입니다.

이제 선이 숫자 도구로 반올림되어 단계가 생성됩니다.

- 현대적인 그래픽 제품으로 둘러싸인 이것은 눈에 띄며 실제로는 더 이상 편리하지 않습니다.

 
고문이 클라이언트의 그래픽을 제공할 수 있다는 사실 때문에 "기술적 틱"이 매우 필요했습니다.
예를 들어 형식에서
 int servis () 
{
return ( 0 ) ;
}

시작과 마찬가지로 서버가 아닌 터미널의 로컬 타이머에서 수신/시작합니다.
필요 테크 틱 기간은 누구에게도 해를 끼치지 않습니다 : 1 ~ 3초.
이 변경 사항은 버전 5를 기다리지 않고 MQL-4에 직접 도입할 수 있습니다. 말하자면, 실행과 사건의 이익을 위해.
 
Korey :

METALANG의 오류

 extern double  Lot = 0.2 ;
int start ()
{ double   Lot ; }

변수의 이중 초기화는 오류 및 경고 없이 컴파일됩니다.


 extern double    Lot = 0.2 ;
double    Lot ;   //а так ошибку - дает
int start ()
{ }

지역 변수 는 전역 변수를 마스킹합니다. 오류가 없습니다.

 

Korey , 외부 변수가 마스킹되고 있기 때문에 정확히 null:

 double Lot ;

start() 함수 내부의 초기화되지 않은 지역 변수 선언입니다. 기본적으로 0으로 초기화됩니다. start()에서 호출되고 입력 매개변수 Lot가 있는 모든 함수는 외부 변수가 아닌 로컬 변수의 값을 가져옵니다. 유일한 예외는 start() 전에 실행되는 init() 내부의 함수입니다. 거기에서 Lot 매개변수(같은 방식으로 마스킹되지 않은 경우)는 외부 변수의 값을 받아야 합니다. 0.2.


당신은 당신이 사용하는 모든 코드가 아니거나 그렇지 않습니다. 어디에서 my_funk()를 호출하고 있습니까?

 
Korey :

마스킹 된 경우 프로그램에서 다른 기능이 0.2가 아닌 0을 얻는 이유는 무엇입니까? 외부에 쓰여진대로?


주장을 직접 확인해야 합니다. 다음은 간단한 스크립트입니다.

 //+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2008, MetaQuotes Software Corp. "
#property link        " http://www.metaquotes.net/ "
 
extern double Var = 0.0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init ()
   {
   Print ( " Функция init():Внешняя переменная на глобальном уровне Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc ()
   {
   Var = - 100 ;
   Print ( " Функция MyFunc(): Переменная Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit ()
   {
   Print ( " Функция deinit():Внешняя переменная на глобальном уровне Var= " , Var ) ;
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start ()
   {
//----
   double Var = 15 ;
   Print ( " Локальная переменная на локальном уровне функции start() Var= " , Var ) ;
   MyFunc () ;
   Print ( " Локальная переменная на локальном уровне после выполнения функции MyFunc() Var= " , Var ) ;
 
   Print ( " Функция start() завершена " ) ;
 
//----
   return ( 0 ) ;
   }
//+------------------------------------------------------------------+


그리고 스크립트 의 결과.