"ダミー "からの質問 - ページ 266

 
amidmir:
クレジットの為替レートは?

1クレジット=1ドル

 
DC2008:

動的配列を 使用したり、静的配列の次元を変更する。

ありがとうございました。
 

EAで最後のフラクタルの価格を探そうとしているのですが、うまくいきません...。

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:

EAで最後のフラクタルの価格を探そうとしているのですが、何かうまくいきません...。

アレイの 外に出てしまうのです。こんな風に試してみてください。

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/ru/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/ru/articles/35

添付のインジケータをチャートに貼り付けると、意味のないものが表示され、本来表示されるはずのものが表示されません。

その理由は何でしょうか。

出力では、CopyBufferが正しく動作していないように見えます。

チャート上にATRを表示し、D1をtf、次にこのインジケータをtf変更し、動作するはずです。

 
Silent:

週末になると、CopyBufferが正常に動作したがらないようです。

ATRチャートに投げて、差分D1、そしてこのインジケータ、差分を変更してみてください、うまくいくはずです。

平日も、見積もりがあるときは、同じです。

時々スリップして、必要なものが表示されるのですが、TFを変更したり、新しい見積もりを取ると、また無意味なものを表示し始めるのです。