구조 바위. 우리는 프로그램을 구성하고 가능성, 오류, 솔루션 등을 탐색하는 방법을 배웁니다. - 페이지 16

 
예상대로 모든 사람은 자신의 구조와 그것이 어떠해야 하는지에 대한 이해를 가지고 있습니다. ))
 
tol64 :
예상대로 모든 사람은 자신의 구조와 그것이 어떠해야 하는지에 대한 이해를 가지고 있습니다. ))
이것이 내가 논쟁에 대해 점수를 매길 것을 제안하는 이유입니다. 우리는 여전히 어떤 합의에도 이르지 못할 것입니다. 대규모 프로젝트 를 프로그래밍하는 일반적인 원칙에 대해 다시 논의할 것을 제안합니다.
 
C-4 :
안돼 안돼 한 번 더 안돼!!!!!!!!!!!!!!!! 이 논리에 따르면 이동 평균에 대한 단순 전략 반전도 MM입니다. 그리고 뭐, +1 계약이 있었는데 -1이 되었습니다.

:)

한 동료가 Expert Advisor를 편리하게 구성하는 방법을 설명하려고 했습니다. (모듈 이름은 물론 임의적입니다.) 용어를 사용하는 것(중요하지 않음) 대신 이 구조적 구분을 확인하십시오. 그것은 매우 편리하고 생산적입니다.

그림. 화살표는 정보의 이동을 보여줍니다.


 
C-4 :
이것이 내가 논쟁에 대해 점수를 매길 것을 제안하는 이유입니다. 우리는 여전히 어떤 합의에도 이르지 못할 것입니다. 대규모 프로젝트를 프로그래밍하는 일반적인 원칙에 대해 다시 논의할 것을 제안합니다.
따라서 이러한 원칙 중 하나만 논의되고 있는 것 같습니다. 거래 프로젝트 와 관련하여 (건설의 기본 논리에 대해).
 
MetaDriver :

...

그림. 화살표는 정보의 이동을 보여줍니다.

이렇게 생각하는 것이 훨씬 더 명확합니다. 말없이 모든 것이 명확합니다. 그리고 이 끝없는 ㅋ ㅋ ㅋ ㅋ 은 가끔 소화하기가 매우 어렵습니다. )) 그리고 계획 후에 이미 명확한 질문을 할 수 있습니다. 아직 가지고 있지 않습니다. ))

 
MetaDriver :

:)

한 동료가 Expert Advisor를 편리하게 구성하는 방법을 설명하려고 했습니다. (모듈 이름은 물론 임의적입니다.) 용어를 사용하는 것(중요하지 않음) 대신 이 구조적 구분을 확인하십시오. 그것은 매우 편리하고 생산적입니다.

그림. 화살표는 정보의 이동을 보여줍니다.

네, 알겠습니다. 복잡성만이 어디에도 주어지지 않고, 추천 수정자와 마켓 드라이버에게 위임되었습니다. 이 계획에 따르면 정정자는 TS의 거래 내역을 파헤치고 실제로 어떤 상태인지 이해해야 합니다. 마켓 드라이버는 여전히 전략의 현재 위치 를 정확하게 파악하고 수정해야 하지만, 네팅에서는 쉽지 않습니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64 :

이렇게 생각하는 것이 훨씬 더 명확합니다. 말없이 모든 것이 명확합니다. 그리고 이 끝없는 ㅋ ㅋ ㅋ ㅋ 은 가끔 소화하기가 매우 어렵습니다. )) 그리고 계획 후에 이미 명확한 질문을 할 수 있습니다. 아직 가지고 있지 않습니다. ))

작업을 이해하기 위해 그림을 그려야 하는지 여부에 대한 답변입니다. :)

메타드라이버 :

:)

한 동료가 Expert Advisor를 편리하게 구성하는 방법을 설명하려고 했습니다. (모듈 이름은 물론 임의적입니다.) 용어를 사용하는 것(중요하지 않음) 대신 이 구조적 구분을 확인하십시오. 그것은 매우 편리하고 생산적입니다.

그림. 화살표는 정보의 이동을 보여줍니다.


그리고 트롤은 어디에 있습니까? 그래서 나는 블록 MM 에서 그것을 이해합니까? 방향 예측기 가 필요하기 때문에

아니면 여전히 시장 동인 에 있습니까? 결국 트롤에는 현재 포즈가 필요합니다.

나는 또한 변동성 예측기를 도입하고 보호 정지의 다른 블록 수정 기를 밀어 넣을 것입니다. 정상적인 TS의 경우 TP 또는 SL에 의한 보호 TC(IMHO) 종료는 불가항력입니다.

 
Urain :

여기에 작업을 이해하기 위해 그림을 그려야 하는지 여부에 대한 답이 있습니다. :)

그리고 트롤은 어디에 있습니까? 그래서 나는 블록 MM 에서 그것을 이해합니까? 방향 예측기 가 필요하기 때문에

아니면 여전히 시장 동인 에 있습니까? 결국 트롤에는 현재 포즈가 필요합니다.

나는 또한 변동성 예측기를 도입하고 보호 정지의 다른 블록 수정 기를 밀어 넣을 것입니다. 정상적인 TS의 경우 TP 또는 SL에 의한 보호 TC(IMHO) 종료는 불가항력입니다.

그런 다음 몇 가지 블록이 더 있고 범프에 대한 전략이 서두를 것입니다 ... 처음에 전략의 한 부분을 설명하는 블록과 다른 부분을 설명하는 블록에 대해 완전히 정당화 된 질문이 있다면 계획이 모호하지 않습니다. 이것은 알려진 문제로 이어집니다.
 

다이어그램 그리기를 시작한 이후로 개선된 다이어그램이 있습니다. 이전 것보다 명확하기를 바랍니다.

혜택

  • 모듈은 두 개뿐입니다.
  • 관계가 명확하게 정의되고 모호하지 않음
  • 거래 전략은 4가지 방법을 설명하는 모든 클래스가 될 수 있습니다.
  • 모든 규칙에 대한 설명은 항상 거래 전략 클래스라는 한 곳에 저장됩니다. "변동성 모듈"을 찾기 위해 전체 프로젝트를 실행할 필요가 없습니다.
  • 전략 상태의 수는 일정합니다. TS의 규칙이 없으면 더 이상 할 수 없습니다. 추가 모듈이 있을 수 없으며 단순히 필요하지 않습니다.
  • 모든 공통 엔터티는 기본 제어 클래스*에서 설명할 수 있고 설명해야 합니다.

*따라서 모든 전략에 보편적인 "거래 세션 종료 시 종료" 규칙은 기본 클래스에서 설명할 수 있습니다. 그리고 이 규칙이 설정되면 전략 클래스에 설명된 오픈 포지션 유지 메소드를 다시 호출하는 대신 베이스 클래스는 하루가 끝날 때 클로징 포지션을 유지하는 메소드를 호출합니다. 그리고 기본 전략이 규칙에 이를 암시하지 않더라도 해당 포지션은 적시에 강제로 폐쇄될 것입니다.
 
C-4 :

네, 알겠습니다. 복잡성만이 어디에도 주어지지 않고, 추천 수정자와 마켓 드라이버에게 위임되었습니다.

이건 괜찮아. 목표는 객관적인 어려움을 없애는 것이 아니라 새로운 것을 만드는 것이 아닙니다.


이 계획에 따르면 정정자는 TS의 거래 내역을 파헤치고 실제로 어떤 상태인지 이해해야 합니다.

TS에 상태(메모리)가 없음을 이미 알아낸 것 같습니다. 교정자는 또한 역사를 파헤칠 의무가 없습니다. 일반적으로 그들은 귀하의 요청에 따라 계획에 의도적으로 그것을 붙였습니다. 나는 그것 없이는 잘 할 수 있습니다 ..))


마켓 드라이버는 여전히 전략의 현재 위치 를 정확하게 파악하고 수정해야 하지만, 네팅에서는 쉽지 않습니다.

:)

내 말을 받아들여야 합니까?

 double CMarketDriver::GetCurrentPos( string Sym)
  {
   if (!PosInfo.Select(Sym)) return 0 ; // DBL_MIN;
   double v=PosInfo.Volume();
   return (PosInfo.PositionType()== POSITION_TYPE_SELL ) ? -v : v;
  }
bool CMarketDriver::Synhronize( const SymbolPos  &sp, int   &Err)
  {
   Err= 0 ;
   bool res= true ;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
       double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
       double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
       if (pos> 0.000001 )
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
       if (pos<- 0.000001 )
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }