MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1896

 
Vitaly Muzichenko # :

문제 해결 방법을 알 수 없음

틱 차트가 필요합니다. 즉, 틱이 도착했습니다. 버퍼를 1만큼 이동하고 그립니다.

마지막 60틱, 즉 60개의 막대를 그려야 합니다.

---

"티키" 창의 터미널에 구현되어 있으므로 수행해야 합니다.


막대가 아니라 선이 있습니다.

바코드가 새 창에 그려집니다. 도움이 될 수 있습니다.

파일:
SaveTicks.mq4  6 kb
 
Vitaly Muzichenko # :

문제 해결 방법을 알 수 없음

틱 차트가 필요합니다. 즉, 틱이 도착했습니다. 버퍼를 1만큼 이동하고 그립니다.

마지막 60틱, 즉 60개의 막대를 그려야 합니다.

---

"티키" 창의 터미널에 구현되어 있으므로 수행해야 합니다.


이 문제를 해결하려면 다른 배열이 필요합니다. 예를 들어 60과 같이 고정된 길이를 가질 수 있습니다. 루프를 사용하여 데이터를 1씩 이동할 때마다 눈금으로 채워야 합니다. 각 틱을 기록한 후 이 배열을 버퍼 배열로 복사해야 하며 해당 데이터가 차트에 표시됩니다.

 
Valeriy Yastremskiy   # :

막대가 아니라 선이 있습니다.

바코드가 새 창에 그려집니다. 도움이 될 수 있습니다.

거기에서 아무것도 얻을 수 없습니다. 내가 잘못된 방향을 보고 있는 것은 아닐까?


마이클 마트코프스키 :

이 문제를 해결하려면 다른 배열이 필요합니다. 예를 들어 60과 같이 고정된 길이를 가질 수 있습니다. 루프를 사용하여 데이터를 1씩 이동할 때마다 눈금으로 채워야 합니다. 각 틱을 기록한 후 이 배열을 버퍼 배열로 복사해야 하며 해당 데이터가 차트에 표시됩니다.

어떻게 전환해야 할지 모르겠습니다.

어렵지 않다면 코드를 보여주세요

 
Vitaly Muzichenko # :

거기에서 아무것도 얻을 수 없습니다. 내가 잘못된 방향을 보고 있는 것은 아닐까?


어떻게 전환해야 할지 모르겠습니다.

어렵지 않다면 코드를 보여주세요

A[0]=입찰가;

for(i=0;i<60;i++){A[i+1]=A[i]}

 
Valeriy Yastremskiy # :

A[0]=입찰가;

for(i=0;i<60;i++){A[i+1]=A[i]}

내가 해냈어, 효과가 있어

 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[])
{
   if (prev_calculated== 0 ) {
     ArrayInitialize (Buffer1, EMPTY_VALUE );
  }
   double b= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
  Buffer1[ 0 ]=b;
   for ( int j= 10 ; j> 0 ; j--) {
    Buffer1[j]=Buffer1[j- 1 ];
  }
   return (rates_total);
}

---

사이클 없이도 할 수 있다는 말이 있습니다.

그렇습니까?

 
Vitaly Muzichenko # :

내가 해냈어, 효과가 있어

---

사이클 없이도 할 수 있다는 말이 있습니다.

그렇습니까?

이 주기는 시계열에 숨겨져 있습니다. 어느 쪽으로 움직여도 상관없습니다. 0이 더 논리적이고 이해하기 쉽습니다. MCL에서 시프트 기능을 본 적이 없습니다. 인덱스 작업입니다. 가장 먼저 들어간 것, 마지막으로 나온 것입니다. 파이썬에 있습니다. MKL에는 없습니다.

 

그게 무슨 잘못이야?

정상적으로 작동하기 시작하지만 각각의 새로운 막대에는 범위에서 이동 및 종료가 있습니다.

그것을 피하는 방법?

---

추신 모든 것이 잘 작동하는 것 같습니다 추가

   if (rates_total-prev_calculated== 1 ) {
    Buffer1[H+ 1 ]= EMPTY_VALUE ;
  }
 
Vitaly Muzichenko # :

그게 무슨 잘못이야?

정상적으로 작동하기 시작하지만 각각의 새 막대에는 범위에서 이동 및 종료가 있습니다.

그것을 피하는 방법?

---

추신 모든 것이 잘 작동하는 것 같습니다 추가

인덱스의 작은 쪽에서 0보다 작은지 확인하고 큰 쪽에서 배열 차원보다 큰지 확인합니다. 배열이나 마지막 값을 0으로 만드는 것은 매 틱마다 논리적이지 않습니다.

 
Valeriy Yastremskiy # :

인덱스의 작은 쪽에서 0보다 작은지 확인하고 큰 쪽에서 배열 차원보다 큰지 확인합니다. 배열이나 마지막 값을 0으로 만드는 것은 논리적이지 않습니다.

사용 가능한 전체 기록에 대한 배열, 필요하지 않습니다.

말 그대로 50-100 바 필요

이와 같이


 

좋은 시간입니다.

나는 일일 프랙탈의 값을 그 값이나 수직선의 형태로 모니터에 표시합니다. 라인이 표시되지 않고 값은 0입니다.

다음은 코드의 일부입니다.

 double FractalDayUpper = iFractals ( Symbol (), PERIOD_D1 , MODE_UPPER, 0 );
   ObjectCreate ( "signal00" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal00" , OBJPROP_XDISTANCE , 600 );
   ObjectSet( "signal00" , OBJPROP_YDISTANCE , 100 );
   ObjectSetText( "signal00" , DoubleToString (FractalDayUpper, 5 ), 18 , "Times New Roman" , clrRed );


무슨 일이야