エラー、バグ、質問 - ページ 886

削除済み  
Yedelkin:
理由はいくつもありそうですが...。最もよく知られているのは、ゼロによる除算で、配列を残すものです。

ありがとうございます。

アレイの外には 何が出力されるのですか?私の無知をお詫びします。

私は3部門しか持っていません。

TradeLot=AccountInfoDouble(ACCOUNT_BALANCE)*(PercentSize/100)/(100); 
MaxLotAllowed=MathFloor((MeansFree/MeansOneLot)*100)/100;
(PositionVolume()+Volume())*(100)*(100))/AccountInfoDouble(ACCOUNT_BALANCE)
 
G001: 私は3部門しか持っていません。

ここでゼロによる除算が発生する可能性がある。

/AccountInfoDouble(ACCOUNT_BALANCE)

基本的なチェックが必要です。

G001 : アレイの外には何が出力されているのですか?私の無知をお詫びします。

それは、たとえば、こんなときです。

double array[3];
for (int i=0; i<=3; i++) array[i];

最後の反復では、配列の外側に 出口があります。

削除済み  
Yedelkin:

ここで、ゼロによる除算が発生する可能性がある。

基本的なチェックが必要です。

例えばこんな時です。

最後の反復では、配列の外側に出口があります。

ありがとうございます。

クール、機能が正しく動作するかどうか確認しましょうか。

AccountInfoDouble(ACCOUNT_BALANCE)

 
G001: クール、機能が正常に動作するかどうか確認する必要があるのでは?
さて、残高がゼロになり、機能が正常に働くとどうなるのでしょうか?:)
削除済み  

このようなメーターで問題ないのでしょうか?

int TotalBullStopOrders()
{
  int BullCounter=0;
  int Total = OrdersTotal();
  for(i = 0; i < Total; i++)
  {
    if(OrderSelect(OrderGetTicket(i)))
    {
      if(OrderGetString(ORDER_SYMBOL)==Symbol() && OrderGetInteger(ORDER_MAGIC)==Magic)
      {
        if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP)
        {
          BullCounter++;
        }
      }
    }
  }
  return(BullCounter);
}
削除済み  
Yedelkin:
さて、残高がゼロになり、機能が正常に働くとどうなるのでしょうか?:)
おっしゃるとおり、そこで修正します。
しかし、現在、私の残高はゼロではなく、私のEAは緑色に微笑んでいるが、警告もなく、異常に、動作しなくなった、微笑まない方が良いのでは...。:)
 
G001: このカウンターに問題はないのでしょうか?

for文には、変数iの型が定義されていません。変数Magicが定義されていない。行列の中に。

if(OrderSelect(OrderGetTicket(i)))
OrderSelect() 関数は不要 です。他には何も気づいていません。
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
AndreyS:

エラー(Error CopyBuffer - エラー番号:4806)の問題 - 私はそれを削除し、私はSleep(1000);でそれを治す - 私は、インジケータが作成するのに十分な時間を持っていないにそれを置く。

エラー(4194304バイトが使用できません)が発生する問題は残っています。

作成される可能性が高いです。しかし、データをコピーする前に、受け取りたいデータがあるかどうか(インジケータが計算する時間があったかどうか)を確認する必要があります。BarsCalculated関数が 役に立つはずです。

次に、シンボルごとにすべてのタイムフレームを要求します。このデータの準備ができている場合 - それは、ディスクからメモリにダウンロードされ、そうでない場合 - それは(メモリも消費される)+各TFの異なる周期で100指標、およびメモリ内のすべてのこのを構築するために開始されます。データはすぐにメモリからアンロードされない(再度要求する場合に備えて)...。

チャートのバーの本数を減らす。

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
削除済み  
Yedelkin:

for文には、変数iの型が定義されていません。変数Magicが定義されていない。ライン内

OrderSelect()は冗長 です。他には何も気づいて いません。

ありがとうございます。

オペレーターの外に1台あります。

input int    Magic          = 55;

MqlTradeRequest request={0};
MqlTradeResult result={0};
MqlTradeCheckResult check={0};
//-----
int LotsDigits;
int Indicator;
double IndicatorVal[5];
double Ask;
double Bid;
int i;
int pos;
double TradeLot;
ulong StopLevel;
double MeansFree;
double MaxLotAllowed;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
 
alexvd:

作成されたものと思われます。データをコピーする前にだけ、データが利用可能かどうか(インジケータが決済されたかどうか)を確認する必要があります。BarsCalculated関数が 役に立つはずです。

次に、シンボルごとにすべてのタイムフレームを要求します。データの準備ができている場合 - それは、ディスクからメモリにダウンロードされ、そうでない場合 - それは(メモリも消費される)+各TFの異なる周期で100指標、およびメモリ内のすべてのこのを構築するために開始されます。データはすぐにメモリからアンロードされない(再度要求する場合に備えて)...。

チャートのバーの本数を減らす。

        while(BarsCalculated(m_handle)==-1 && !IsStopped()) Sleep(1); // Спасибо alexvd - откоректировал строку с учётом замечаний

バーの本数は何も変わりません。

問題はピリオドに隠されている、バリアント用

for(int iperiod=5; iperiod<=19; iperiod++) 

が機能しない、19-5=14 - 期間が異なる。

4に減らせば、すべてがうまくいく、といった具合です。

for(int iperiod=16; iperiod<=19; iperiod++)

foru IndicatorRelease(m_handle) -は確かに不正確ですが。

IndicatorRelease関数でハンドルを解放しなくても、とりあえず動くはずだと思うのですが、どうでしょうか?

つまり、問題は異なる期間の数にあるのです。

あるいは...