MQL5で学び、共に書く - ページ 45

 
Dimka-novitsek:
パソコンがとても遅い・・・。

いいえ、コンプではありません :)

出力 yu (GBPUSD,H1) 配列が 'Output yu.mq5' (4873,19) で範囲外 - 言葉は明確ではありません...。

配列の要素に アクセスしたが、配列のサイズがアクセスした要素のインデックス番号より小さい。

配列ar[10]があって、項目ar[11]を取得したいが、要素が10個しかないような場合です。

ということを言われています。

5000行のうち4873行でエラーになるとのことですが、行番号まで書いてありますね :)

 
ありがとうございます!!!
 
11個あるすべての配列に、適切な条件を与えるようにしたのです。しかし、ここでも同じようなエラーが発生するのですが、教えてください。И
double      ATR[];                // массив для индикатора iATR
//---- handles for indicators
int         ATR_handle;           // указатель на индикатор iATR


..................................................
..................................................

///////////////////////////////////////////////////////////////////////////////////////////////  
double iStdDevf(        string symbol, int timeframe, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method,  ENUM_APPLIED_PRICE applied_price, int shift){
     SymbolSelect(
  symbol,       // имя символа
  true      // включить или выключить
   );
 StdDev_handle= iStdDev(
               symbol,            // имя символа
       periodd(timeframe),            // период
                   ma_period,         // период усреднения
                 ma_shift,          // смещение индикатора по горизонтали
         ma_method,         // тип сглаживания
    applied_price      // тип цены или handle
   );   
  
   if(StdDev_handle==INVALID_HANDLE)     
     {
     return (0.0);}                     //Если массив не был создан, то 0          
      
    CopyBuffer(StdDev_handle,0,0,100,ATR);
    if(shift>99)return(0);
    ArraySetAsSeries(ATR,true);         // Установим порядок расположения массива от 0 к 100
    return( StdDev[shift]); }           //Вывод ризультата
///////////////////////////////////////////////////////////////////////////////////////////////  

この関数では,パラメータとして非負の整数を受け取り,それが99を超えないことを関数内でチェックします. [shift-これは同じ数で,配列 StdDev number shiftの要素を指します.では、数の問題ではないのですか?double ATR[100];と宣言するのが正しいのでしょうか?п.p. エラーは行番号で、文字は正確にシフトする

2012.09.29 20:56:26 出力yu (GBPUSD,H1) '出力yu.mq5'の配列が範囲外 (4886,19)

間違った配列要素にアクセスすることはありえないですよね?

 
Dimka-novitsek:
11個あるすべての配列に、適切な条件を与えるようにしたのです。しかし、ここでも同じようなエラーが発生するのですが、教えてください。И

この関数では,パラメータとして非負の整数を受け取り,それが99を超えないことを関数内でチェックします. [shift-これは同じ数で,配列 StdDev number shiftの要素を指します.では、数の問題ではないのですか?double ATR[100];と宣言するのが正しいのでしょうか?п.p. エラーは行番号で、文字は正確にシフトする

2012.09.29 20:56:26 出力yu (GBPUSD,H1) '出力yu.mq5'の配列が範囲外 (4886,19)

間違った配列要素にアクセスすることはありえないですよね?


StdDev
それは何なのか、どこに宣言されているのか、その大きさは?
 
皆さん、本当にありがとうございました昨日は悪夢でした、今また整理してスッキリしています。以上、今回はこの辺で。
 
すべてがきちんと動いているようで、見たことのないものまで全部描いてくれましたねまた、この質問に関連して、教えていただきたいのですが、新しいティックが到着すると、プログラムはその作業を早々に終了してしまうのでしょうか?
 
Dimka-novitsek: また、新しいダニの登場により、プログラムが早々に終了してしまうのでは?
リファレンスマニュアル参照、検索語:NewTick
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Изучаем и пишем вместе на MQL5

Yedelkin , 2011.04.30 08:47

Вопрос

ENUM_DEAL_ENTRY

 

Идентификатор

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_STATE

Признак статусной записи

Что такое " статусная запись", и когда может потребоваться (необходимо использовать) признак этой записи?
ウライン:
例えば、どの口座でも最初の行は残高になっていますが、これがステータス・エントリーです。

そんなことはないようです。


void OnStart()
  {
//---
   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         printf("Deal ticket#%u entry=%s",ticket,EnumToString(deal_entry));
        }
     }
  }

リターンです。

2014.08.27 19:15:42.163 Deal_Entry_State (AUDUSD,D1) Deal ticket#3879156 entry=DEAL_ENTRY_IN

が何であるかは誰にもわからない。 deal_entry_state ?

 
angevoyageur:

これは事実とは異なるようです。

論理的に考えて、BALACEがDEAL_ENTRY_INという 方向性を持っているなら、なぜ "Direction "の欄にないんだ!?

この場合、DEAL_ENTRY_INの 方向も持っています。

 
A100:

論理的に考えて、もしバレイスがDEAL_ENTRY_INの 方向を持つなら、なぜ「方向」/Directionの欄にないのでしょうか!

この場合、DEAL_ENTRY_INの 方向も持っている、例えばbuyに指定されているように

   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         ENUM_DEAL_TYPE  deal_type=(ENUM_DEAL_TYPE) HistoryDealGetInteger(ticket,DEAL_TYPE);
         printf("Deal ticket#%u type=%s entry=%s",ticket,EnumToString(deal_type),EnumToString(deal_entry));
        }
     }


2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) ディールチケット#3892717 type=DEAL_TYPE_BUY entry=DEAL_ENTRY_OUT

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3892714 type=DEAL_TYPE_SELL entry=DEAL_ENTRY_IN(ディールエントリーイン

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3879156type=DEAL_TYPE_BALANCE entry=DEAL_ENTRY_IN(ディールエントリーイン

DEAL_ENTRY_STATEとは何なのか?DEAL_ENTRY_STATEとは 何なのか疑問が 残ります