선형 감속 - 프로그래머의 실수 또는 MT4의 기능? - 페이지 4

 

아래의 건설만으로도 가치가 있습니다.


     bool Ok= true ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--){ //проверяем наличие ордеров
       if ( OrderSelect (i,SELECT_BY_POS)){
       if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==Magic){
         if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT){
         Ok= false ;
        }}}}

머리를 조금 빗다

     bool Ok= true ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--){ //проверяем наличие ордеров
       if ( OrderSelect (i,SELECT_BY_POS)){
         if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==Magic){
           if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT){
            Ok= false ;
          }
        }
      }
    }

그리고 무엇을, 어떤 순서로 수행되는지 명확해집니다. 바로 포맷팅입니다. 그러나 여전히 코드를 논리적으로 일관된 작업으로 나누고 별도의 기능으로 분리할 수 있습니다. 따라서 혼합 코드 힙에서 주요 알고리즘을 용이하게 합니다.

 
micle :

문제는 지나치게 많은 수의 조건문에서 코드 중복에 있습니다. 사실 코드는 조건부 연산자 If, If, I'm 확신컨데, 보면 확실히 비교 횟수를 10배 줄일 수 있습니다.이것은 속도가 느려질 뿐만 아니라 이러한 코드는 읽기 어렵습니다. 추가하는 사람은 최소한 2가지 주요 작업을 수행합니다.

1 - 깨지지 않는다

2 - 원하는 기능 추가

읽을 수 없는 코드 는 어떤 식으로든 모든 종류의 검사, 비교의 추가 복제로 이어지며 이는 다시 추가 비용입니다. 코드를 보니 개인적으로 약 25년 전, 제가 프로그래밍을 막 시작했을 때를 기억합니다. 저는 교사가 없는 Atari 800XL PC에 대한 지침에 따라 이것을 단순히 재미있었기 때문에 배웠습니다.

물론, 우리가 어떤 종류의 "만약"에 대해 이야기하고 있는지 흥미롭습니다. 분명히 내 기술 사양이 있습니다. 여기서 "만약 그렇다면, 그렇다면"라고 쓰고 프로그래머는 코드에서 이것을 이런 방식으로 해석합니다. "만약"이 주문에 대한 직접 작업과 관련되어 있고 주문에 대한 작업이 많이 있습니다 ...

물론, 나는 그 문제가 일종의 사이클에 있다고 생각했는데, 그 실행은 TK의 조건 검증의 반복 실행으로 이어졌습니다. 그러나 상황을 수정하는 유일한 방법은 코드를 처음부터 다시 작성하는 것뿐이라는 것이 밝혀졌습니다.

 
micle :

아래의 건설만으로도 가치가 있습니다.

머리를 조금 빗다

그리고 무엇을, 어떤 순서로 수행되는지 명확해집니다. 바로 포맷팅입니다. 그러나 여전히 코드를 논리적으로 일관된 작업으로 나누고 별도의 기능으로 분리할 수 있습니다. 따라서 혼합 코드 힙에서 주요 알고리즘을 용이하게 합니다.

그리고 어떤 식으로든 성능에 영향을 줍니까?

 
micle :

코드 중복 문제

중복은 if와도 아무 관련이 없습니다. 진정한 둔화는 주문 작업에서 비롯됩니다.
 
micle :

아래의 건설만으로도 가치가 있습니다.


머리를 조금 빗다

그리고 무엇을, 어떤 순서로 수행되는지 명확해집니다. 바로 포맷팅입니다. 그러나 여전히 코드를 논리적으로 일관된 작업으로 나누고 별도의 기능으로 분리할 수 있습니다. 따라서 혼합 코드 힙에서 주요 알고리즘을 용이하게 합니다.

당신은 매우 강력한 주장을 가지고 있습니다. 당신의 코드는 어디에서 경험 많은 프로그래머를 볼 수 있습니까?
 

버전 1.1

손절매를 하고 보류 중인 주문 을 필터링하기 위해 미러 MA를 사용하는 두 가지 옵션을 사용합니다.
maMirror - 표준 iMA 기능을 기반으로 계산, 바당 한 번 작동, 데이터는 바 시작 가격으로 가져옴
계산 알고리즘:

판매:
계산 시작점 maMirror=iMA+pipsXHmaM(o/b)
후속 계산 포인트 maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
계산 종료 시점 이후에 계산이 종료됩니다.

구매:
계산 시작점 maMirror=iMA-pipsXHmaL
후속 계산 포인트 maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
계산 종료 시점 이후에 계산이 종료됩니다.


기술적 작업을 단순화하기 위해 작업과 변수에서 독립적이며 사용자가 구성하는 두 개의 계산 블록을 설정해야 합니다.
maMBlock=0 - 블록을 사용하지 않음(표준 정지 손실이 사용됨)
maMBlock=1 - 블록 #1만 사용
maMBlock=2 - 블록 #2만 사용(표준 정지 손실이 사용됨)
maMBlock=3 - 두 블록 모두 사용

블록 #1
손실 계산을 중지합니다. 손절매가 다시 계산되고 maMirror 값에 의해 각 막대에서 순서가 업데이트됩니다.
1. 계산을 위한 시작점을 결정하기 위해 변수 StartPoint가 사용됩니다. StartPoint=1(maT를 터치한 후 계산), StartPoint=2(주문을 연 후 계산)이면 변수 StartPoint가 사용됩니다.
1.1 StartPointO=1이면 maT를 터치한 후 계산이 종료됩니다.
1.2.StartPointO=2인 경우 주문이 마감된 후 계산이 종료됩니다.
1.3. maMirror에 손절매를 할 수 없는 경우 주문이 마감됩니다.
1.4. Levl_Zerro=0(사용하지 않음), Levl_Zerro!=0(손절매를 지정된 최대 값으로 업그레이드하고 카운트다운은 공개 가격에서 시작하며 음수 값은 손절매가 양수 값으로 변환됨을 의미합니다)

블록 #2
보류 중인 주문을 필터링하는 계산.
0.1 maMirror> 미결제 주문 시가인 경우 구매 주문이 이루어집니다.
0.2 매도 주문은 maMirror<보류 주문을 여는 가격인 경우에 이루어집니다.
1. 계산을 위한 시작점을 결정하기 위해 변수 StartPoint가 사용됩니다. StartPoint=1(maT를 터치한 후 계산), StartPoint=2(주문을 연 후 계산)이면 변수 StartPoint가 사용됩니다.
1.1 StartPointB=1이면 maT를 터치한 후 계산이 종료됩니다.
1.2. StartPointB=2인 경우 주문이 완료된 후 계산이 종료됩니다.
2. maMirrorDell=0(사용하지 않음) maMirrorDell=1인 경우(0점의 조건이 일치하지 않으면 모든 미결 주문이 삭제됨)

사용자 변수
maMirrorO(iMA 설정)
maMirrorB(iMA의 설정)
시작점O
시작점B
핍스XHmaMo
핍스XLmaMo
핍XHmaMb
핍XLmaMb
맘블럭

maMirrorDell

작업 평가를 도와주세요. 고객이 새 직업을 원하고, 얼마를 예상해야 할지 모르겠습니다.) 저는 프로그래머가 아니기 때문에 Aerospace Academy의 엔지니어입니다)

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
아마 반복하겠지만! 첫 번째이자 아마도 주요 문제는 코드를 읽을 수 없고 구조화되어 있지 않다는 것입니다. 당신은 매우 명확한 TK를 가질 수 있습니다. 그러나 정면으로 코드를 작성하면 그런 혼란을 겪게 됩니다. TK를 이해하고 오른쪽에서 코드를 작성하는 방식으로 접근하면 (일반적으로) 실행 속도가 크게 향상되지만 다른 비용도 발생합니다.
 
-Aleks- :

그리고 어떤 식으로든 성능에 영향을 줍니까?

특정 예에서는 영향을 미치지 않습니다. 어드바이저 스크립트에서 이러한 형식을 완전히 처리하고 완전히 다시 형식을 지정하려는 의도는 없습니다.
 
zfs :
당신은 매우 강력한 주장을 가지고 있습니다. 당신의 코드는 어디에서 경험 많은 프로그래머를 볼 수 있습니까?
내 코드는 공개되지 않습니다. 상용 개발은 부하가 높은 웹 서버와 그 근처에서 작동합니다. 특히 내 코드는 DorogaTV 프로젝트 내 "여러" 도시의 도로에서 교통 체증을 계산합니다.
 
TheXpert :
중복은 if와도 아무 관련이 없습니다. 진정한 둔화는 주문 작업에서 비롯됩니다.

TK에 따라 코드의 주문으로 작업하거나 TK 자체 또는 MT4가 일반적으로 주문과 함께 작동합니까?