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

 

안녕하세요!

도와주세요: 목표는 가격이 MA를 넘을 때 포지션 청산을 구현하는 것입니다.

이 코드 섹션에서

if(Bid<iMA(Symbol(),0,Fast_Ma_Period,Fast_Ma_Shift,Fast_Ma_Method,Fast_Ma_Price,0) && CountBuy()>0)
          
           
     {
     for(int i=OrdersTotal ()-1; i>=0; i--)
     {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderMagicNumber ()== MagicNumber && OrderType() == OP_BUY)
       if(!OrderClose(OrderTicket(), OrderLots(),Bid, Slippage, Black))
       Print("Ошибка");

테스터에서 다음과 같은 그림이 표시됩니다. 가격이 MA를 교차하고 원하는 종가 수준 (MA 경계)에서 이미 멀리 떨어진 캔들 종가 / 다음 캔들 개장시 포지션을 닫습니다 ....

파일:
 
rex1818 포지션 청산을 구현하는 것이 목표입니다.

이 코드 섹션에서

테스터에서 다음 그림이 표시됩니다. 가격이 MA를 교차하고 원하는 종가 수준 (MA 경계)에서 이미 멀리 떨어져있는 캔들 종가 / 다음 캔들 개장시 포지션을 닫습니다 ....

틱은 틱 클로즈의 평균 MA보다 훨씬 더 변동성이 크므로 MA 값이 나타난 틱 사이의 스프레드는 일반적인 것입니다. 가격은 불연속적이며, 매수호가와 매도호가를 혼동하지 않으셨으면 합니다(즉, 매수호가와 종가도 매수호가이고 매도호가와 가격도 매도호가입니다).

자이, 매수 또는 매도 호가 기준으로 호가를 다시 계산할 수는 없지만 스프레드를 더하고 빼면 오차가 최소화됩니다.
 
Valeriy Yastremskiy #:

틱은 틱 클로즈의 평균 MA보다 훨씬 더 변동성이 크므로 MA 값이 나타난 틱 사이의 스프레드는 일반적인 것입니다. 가격은 불연속적이며, 매수호가와 매도호가를 혼동하지 않으셨으면 합니다(즉, 매수호가와 종가도 매수호가이고 매도호가와 가격도 매도호가입니다).

자이님, 매수 또는 매도 호가 기준으로 매수 호가를 다시 계산할 수는 없지만 스프레드를 더해서 빼면 오차가 최소화됩니다.

답변 주셔서 감사합니다!

오늘은 귀하의 권장 사항을 고려하여 알아 내려고 노력할 것입니다.

 
rex1818 포지션 청산을 구현하는 것이 목표입니다.

이 코드 섹션에서

테스터에서 다음 그림이 표시됩니다. 가격이 MA를 교차하고 원하는 종가 수준 (MA 경계)에서 이미 멀리 떨어져있는 캔들 종가 / 다음 캔들 개장시 포지션을 닫습니다 ....

종가 막대 테스트가 선택되지 않았나요?

 
Alexey Viktorov #:

막대 닫기별 테스트가 선택되어 있지 않나요?

안녕하세요!

테스트 모델: 모든 틱(.....). 가장 정확한...

 
rex1818 #:

안녕하세요!

테스트 모델: 모든 틱(.....). 나는 가장 정확한 ...

그리고 전문가 조언자는 새 바의 열림을 기반으로 작성되지 않았습니까?

보여 주신 코드의 일부만으로는 이러한 동작의 원인을 더 정확하게 추정하기에는 충분하지 않습니다.

 

응답해 주신 모든 분들께 감사드립니다!

오류를 찾았습니다.

이제 모든 것이 정상적으로 작동합니다.

 

차트의 제한이 3000 막대이고 2000000 막대의 기록을 가져와야하는 경우 매개 변수 (창에서 최대 막대)를 변경하지 않고 기록 데이터를 가져올 수있는 가능한 옵션 (????)을 조언해 주시겠습니까?


배열이 2백만 개의 인덱스가 되면 시스템이 과부하됩니다. 차트를 우회하여 기록을 언로드할 수 있는 해결책을 찾아야 합니다.

   void SMA(const int aRatesTotal,const int aPrevCalc,const double  &aData[], double  &aMA[])
     {
      int Start=0;
      if(aPrevCalc==0)
        {
         for(int i=0;i<aRatesTotal;i++)
           {
            if(aData[i]!=0 && aData[i]!=EMPTY_VALUE)
              {
               Start=i+m_MAPeriod-1;
               break;
              }
           }
         aMA[Start]=0;
         for(int i=Start;i>Start-m_MAPeriod;i--)
           {
            aMA[Start]+=aData[i];
           }


하지만 그 전에 이 배열에 데이터를 공급합니다.


   rt=aRatesTotal;
   prv=aPrevCalc;
   for(int i=0; i<m_max_period; i++)
     {
      ArrayResize(d[i].m,rt);
      ArrayResize(d[i].f,rt);
     }

   chsma.Solve(rt,prv,aData,d[m_max_period-1].m);
하나의 배열 때문에 시스템이 충돌하는 것이 아니라 그러한 크기의 배열을 만들기 시작하기 때문에 시스템이 충돌하는 것 같습니다.
 

안녕하세요 여러분!

Mql4에서 Mql5로 전환하고 싶습니다. Mql5 참조 매뉴얼을 읽기 시작했습니다. 불행히도 나는 이해하지만 모든 것을 이해하지는 못합니다. 기본부터 시작하여 Mql5의 기능을 자세히 설명하고 가장 중요하게는 가장 간단하고 일반적인 작업 코딩의 구체적인 예를 제공하는 Mql4에 대한 Kovalev의 교과서와 같은 정보를 어디에서 찾을 수 있습니까? 즉, 고급 사용자가 아니라 기본을 배우고 그 다음 단계로 나아가야 하는 초보자를 위한 교육 정보가 필요합니다.

도움을 주셔서 감사합니다.

 
ANDREY #:

안녕하세요, 여러분!

Mql4에서 Mql5로 전환하고 싶습니다. Mql5 참조 매뉴얼을 읽기 시작했습니다. 불행히도 나는 이해하지만 모든 것을 이해하지는 못합니다. 기본부터 시작하여 Mql5의 기능을 자세히 설명하고 가장 중요하게는 가장 간단하고 일반적인 작업 코딩의 구체적인 예를 제공하는 Mql4에 대한 Kovalev의 교과서와 같은 정보를 어디에서 찾을 수 있습니까? 즉, 고급 사용자가 아니라 기본을 배우고 그 다음 단계로 나아가야 하는 초보자를 위한 교육 정보가 필요합니다.

도움을 주셔서 감사합니다.

코드베이스에는 원래 MT4에서 작성된 후 MT5에서 재작성된 전문가 자문 및 보조지표가 있으므로 교육에 사용할 수 있습니다.

여러 면에서 언어가 유사하므로 MT5에서 이해한 코드를 다시 작성하는 작업을 설정하고 지침 및 포털에서 검색을 적극적으로 사용하면 기사를 포함하여 항상 답을 찾을 수 있습니다.

사유: