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

 
Alexey Viktorov:

GIFがあることにすら気づかなかった...今見てみたけど、速すぎて理解する暇がない。ただ、「Swap」の欄が表示されていないことに気づいたのですが、これはまさにストーリー上別個にカウントされるものなのですね。あるいは、言葉や図で説明する。

無効化されたスワップ欄に自分が気づかなかったことに驚き。

ありがとうございます、問題は解決しました。

 
Andrey Khatimlianskii:

自分でも無効化されたスワップ欄に気づかなかったのが不思議なくらいです。

ありがとうございます、問題は解決しました。

やったー、勝ったー。

 
ChartSetSymbolPeriod を使用すると、OnDeinit 関数は 1 プログラムがチャートから削除されたことを返しますが、論理的には 3 チャートのシンボルまたは周期が 変更 れたことを返すはず です。
 

このバグは、if(...)条件が満たされた場合、何もループを中断してはいけないというものです

if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };


以下はビデオです。



以下は、スクリプトの全コードです。

void OnStart()
  {
//---
   
   double tvp  = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE_LOSS),
          vm   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          vs   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          ml   = AccountInfoDouble(ACCOUNT_EQUITY) * 0.015,
          cv   = -1.0,
          loss = 0.0;
   
   for(int i = 0; i < 20000; i++)
     {
      Print(i);
      //if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };
      /*loss = cv * tvp * 250.0;
      Print(NormalizeDouble(loss,2));
      Print(NormalizeDouble(ml,2)); Print(" ");
     */};
   
  }
 
Alexandr Sokolov:

このバグは、if(...)条件が満たされた場合、何もループを中断してはいけないというものです

あなたのコードは次のようなものです。

double a = 3;

for(int i = 0; a > 300; i++)
{
 if(a != 3)
  Print("Никогда такого не будет");
}
 

私のインジケータは、何らかの理由でグラフィカルオブジェクトを失うようになり、それらを削除しないようになりました。クラスのデストラクタで自動削除するようにしています。と呼んでいます。

ObjectDelete(chartID, name);

その結果、誤検出をしてしまうのです。GetLastError()を呼び出すと、エラー4101("Errorychart identifier")が表示されます。仮に削除されるグラフィカルオブジェクトのchartIDとChartID()関数の結果を比較すると、全く同じです。チャートからオブジェクトが削除されない理由は何でしょうか、またそれを回避するにはどうしたらよいでしょうか。

 
Mihail Matkovskij:

私のインジケータは、何らかの理由でグラフィカルオブジェクトを失うようになり、それらを削除しません。クラスのデストラクタで自動削除するようにしています。と呼んでいます。

その結果、誤検出をしてしまうのです。GetLastError()を呼び出すと、エラー4101("Errorychart identifier")が表示されます。仮に削除されるグラフィカルオブジェクトのchartIDとChartID()関数の結果を比較すると、全く同じです。チャートからオブジェクトが削除されない理由は何でしょうか、またそれを回避するにはどうしたらよいでしょうか。

似たような問題がある https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

クリエイターが何とかしてくれるかもしれない )

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.06.22
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

フィードバックがないのは、まるでこのトピックが、他の不愉快な発見のネガティブな感情を発散するために必要なのだと言っているようだ )


#include <Arrays\ArrayObj.mqh>

class CPosition:public CObject
{
   public:
      string      meTicket;
      CPosition::CPosition(string inT)
      {this.meTicket = inT;}         
};

class CColl:public CArrayObj
{
public:
   string   meWrongProperty;
CPosition  *operator[](const int index) const { return (CPosition*)At(index);} 
};

class CCollOfColl:public CArrayObj
{
public:
CColl  *operator[](const int index) const { return (CColl*)At(index);} 
};



void OnStart()
{
   CCollOfColl lCOC;
   CColl       *lC;
   
   lC = new CColl();
   lC.Add(new CPosition("00"));
   lC.Add(new CPosition("01"));
   lCOC.Add(lC);
   
   lC = new CColl();
   lC.Add(new CPosition("10"));
   lC.Add(new CPosition("11"));
   
   lCOC.Add(lC);
   
   for(int i=0;i<lCOC.Total();i++)
     {
       for(int j=0;j<lCOC[i].Total();j++)
         {
          printf(lCOC[i][j].meTicket);
          lCOC[i][j].me
         }
     }
}


編集者はmeWrongPropertyの代わりにmeTicketを提案すべきだったと思う )

 

2530

3枚目のアタッチメントには、インテリジェントが表示されません。

//+------------------------------------------------------------------+
//|                                                   TestStruct.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------------------------------------------------
struct STRUCT_TIME_IN_FORCE
{
   string GTC; 
   string IOC;  
   string FOK; 
}; 
//----------------------------------------------------
struct STRUCT_SYMBOLS  
{
   string               symbol;                
   STRUCT_TIME_IN_FORCE timeInForce;            
};

//----------------------------------------------------
struct STRUCT_EXCH_INFO  
{
   string         timeZone;      
   long           serverTime;     
   STRUCT_SYMBOLS symbols[];  
};


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   STRUCT_EXCH_INFO Info;
   ArrayResize(Info.symbols, 10);
   
   Info.symbols[0].timeInForce. //??? На третьем вложении не появляется интеллесенс

}
//+------------------------------------------------------------------+
 
Dmytryi Voitukhov:

EAマーケットプレイスで確認すると、ロット計算でエラーが発生する。

テスターにエラーはありません。

コードは限りなくシンプルです。どうして間違いがあるのでしょうか?

記事を読むトレーディングロボットがマーケットに公開される前に通過しなければならないテストとは

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...