찻주전자의 질문 - 페이지 266

 
amidmir :
대출 금리는 얼마입니까?

1크레딧=1$

 
DC2008 :

동적 배열 을 사용하거나 정적 배열의 크기를 조정합니다.

정말 감사합니다!
 

Expert Advisor에서 마지막 프랙탈의 가격을 찾으려고 하는데 뭔가 안되네요...

 int Fractals;
double UpVal[];
double DnVal[];
Fractals=iFractals(Symbol(),TimeFrame);
if(Fractals==INVALID_HANDLE) Print("HandleError = ",_LastError);
double FractalUp()
{
//-----
  CopyBuffer(Fractals,0,0,5,UpVal);
  ArraySetAsSeries(UpVal,true);
//-----
  for(i=0; i < 13; i++)
  {
    if(UpVal[i] != 0) return(NormalizeDouble(UpVal[i],_Digits));
  }
  return(0);
}
double FractalDn()
{
//-----
  CopyBuffer(Fractals,1,0,5,DnVal);
  ArraySetAsSeries(DnVal,true);
//-----
  for(i=0; i < 13; i++)
  {
    if(DnVal[i] != 0) return(NormalizeDouble(DnVal[i],_Digits));
  }
  return(0);
}
 
G001 :

Expert Advisor에서 마지막 프랙탈의 가격을 찾으려고 하는데 뭔가 안되네요...

배열 범위를 벗어났습니다. 다음과 같이 시도하십시오.

 double FractalUp()
{
//-----
   int n = 100 ; 
   CopyBuffer (Fractals, 0 , 0 , n ,UpVal);
   ArraySetAsSeries (UpVal, true );
//-----
   for (i= 0 ; i < n - 1 ; i++)
  {
     if (UpVal[i] != 0 ) return ( NormalizeDouble (UpVal[i], _Digits ));
  }
   return ( 0 );
}
 
DC2008 :

배열 범위를 벗어났습니다. 다음과 같이 시도하십시오.

고맙습니다. 불행히도 제대로 작동하지 않습니다.
 
G001 :
고맙습니다. 불행히도 제대로 작동하지 않습니다.

프랙탈이 없으면 0이 반환되지 않지만 EMPTY_VALUE

스크립트의 작업 버전

 input ENUM_TIMEFRAMES TimeFrame= PERIOD_CURRENT ;
void OnStart ()
  {
//---
int Fractals= iFractals ( _Symbol ,TimeFrame);
if (Fractals== INVALID_HANDLE ) Print ( "HandleError = " , _LastError );
 double DnVal[];
   CopyBuffer (Fractals, 1 , 0 , 30 ,DnVal);
   ArraySetAsSeries (DnVal, true );
//-----
   for ( int i= 0 ; i < 30 ; i++)
  {
     if (DnVal[i] != EMPTY_VALUE ) Print ( NormalizeDouble (DnVal[i], _Digits ));
  }
  
  }
//+------------------------------------------------------------------+
 
_Techno_ :

프랙탈이 없으면 0이 반환되지 않지만 EMPTY_VALUE

스크립트의 작업 버전

모든 것을 얻었습니다... :) 감사합니다.
 

안녕하세요!

다음 기사를 분석 중입니다 - https://www.mql5.com/en/articles/35

첨부된 지표를 차트에 첨부할 때 표시해야 할 내용이 아닌 일부 넌센스를 보여줍니다.

이유는 무엇입니까?

 #property copyright "Denis Zyatkevich"
#property description "Это индикатор, вычисляющий уровни TakeProfit на основе"
#property description "средней волатильности рынка. При расчете индикатора"
#property description "используется значение индикатора Average True Range (ATR),"
#property description "вычисленного по дневным ценовым данным. Значение"
#property description "индикатора откладывается от минимального и"
#property description "максимального значения цены за день."
#property version    "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2
#property indicator_type1   DRAW_LINE
#property indicator_color1   C'127,191,127'
#property indicator_style1   STYLE_SOLID
#property indicator_label1   "Buy TP"
#property indicator_type2   DRAW_LINE
#property indicator_color2   C'191,127,127'
#property indicator_style2   STYLE_SOLID
#property indicator_label2   "Sell TP"

input int              ATRper       = 5 ;         //ATR Period
input ENUM_TIMEFRAMES ATRtimeframe = PERIOD_D1 ; //Indicator timeframe

double bu[],bd[];
int hATR;

void OnInit ()
  {
   SetIndexBuffer ( 0 ,bu, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,bd, INDICATOR_DATA );
   hATR= iATR ( NULL ,ATRtimeframe,ATRper);
  }

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[])

  {
   int i,day_n,day_t;
   double atr[],h_day,l_day;

   CopyBuffer (hATR, 0 , 0 , 2 ,atr);
   ArraySetAsSeries (atr, true );

   for (i=prev_calculated;i<rates_total;i++)
     {
      day_t= int (time[i]/ PeriodSeconds (ATRtimeframe));
       if (day_n<day_t)
        {
         day_n=day_t;
         l_day=low[i];
         h_day=high[i];
        }
         else
        {
         if (high[i]>h_day) h_day=high[i];
         if (low[i]<l_day) l_day=low[i];
        }
      bu[i]=l_day+atr[ 1 ];
      bd[i]=h_day-atr[ 1 ];
     }
   return (rates_total);
  }

void OnDeinit ( const int reason)
  {
   IndicatorRelease (hATR);
  }
Знакомство с MQL5: написание простого советника и индикатора
Знакомство с MQL5: написание простого советника и индикатора
  • 2010.03.16
  • Denis Zyatkevich
  • www.mql5.com
В этой статье проведен краткий обзор языка MQL5, приведен пример написания советника и индикатора. Данная статья ориентирована как на читателей, знакомых с программированием на языке MQL4, так и на тех, кто только начинает знакомство с программированием торговых систем и индикаторов.
 
pavelrev :

안녕하세요!

다음 기사를 분석 중입니다 - https://www.mql5.com/en/articles/35

첨부된 지표를 차트에 첨부할 때 표시해야 할 내용이 아닌 일부 넌센스를 보여줍니다.

이유는 무엇입니까?

주말에 CopyBuffer가 제대로 작동하지 않는 것 같습니다.

ATR 차트에 tf D1을 입력한 다음 이 표시기를 사용하여 tf를 변경하려고 하면 작동해야 합니다.

 
Silent :

주말에 CopyBuffer가 제대로 작동하지 않는 것 같습니다.

ATR 차트에 tf D1을 입력한 다음 이 표시기를 사용하여 tf를 변경하려고 하면 작동해야 합니다.

평일에는 따옴표가 있어도 마찬가지입니다.

때론 미끄러져 필요한 것만 보여주지만, TF를 바꾸거나 새로운 견적이 나오면 또 헛소리를 하기 시작한다.