どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 590

 
Barbarian:

CListNode クラスでオーバーライドされた仮想 Compare メソッドが無視されるのはなぜですか?

デバッガで確認したところ、常にCObjectからのCompareが使用されていました。


CDataクラスでCompareをオーバーライドする必要があります。
 
artmedia70:

奇跡は起きない。

File --> Open Data Folder --> Window --> MQL4 --> で、いつものフォルダがあります。フォーラムのメインページにあるこの記事へのリンクです。ただ、怠け者の私には無理です。



ありがとうございます。正直なところ、何か間違っているのではないかと思っていました。これですべて納得です。
 
スクリプトを実行する際、条件が成立した時にアイコン(マーカー)を付ける必要があります。どうすればいいのでしょうか?
 
Forexman77:
スクリプトを実行する際、条件が成立した時にアイコン(マーカー)を付ける必要があります。どうすればいいのでしょうか?
条件が成立したらすぐに - マークを付ける。間違いなく。
 
Forexman77:
スクリプトを実行する際、条件が成立したときのアイコン(ラベル)を設定する必要があります。どうすればいいのでしょうか?
artmedia70 です。
条件が成立したらすぐに - マークを付ける。曖昧にしない。

アルチョムの言う「...」とはcondition triggered - put a mark.」と、コンディションが発生したときにスクリプトのコードにマークを設定することを意味した。

MQL4言語ガイドに、バッジ作成スクリプトの非常に良い例があります。例えば、チャート上に「買い」のアイコンを作成し、移動させるスクリプト です。
 
DiPach:

アルチョムの言う「...」とはcondition triggered - put a mark.」とありますが、彼が言いたかったのは、条件が成立したときにアイコン(マーカー)をセットするようにスクリプトコードに書いておけ、ということです。

MQL4 Referenceには、アイコンを作成するためのスクリプトの非常に良い例が掲載されています。例えば、チャート上に「買い」のアイコンを作成し、移動さ せる スクリプト です。

良いスクリプトは、そこから必要な関数を引っ張ってくる。

と、こんな感じです。

//+------------------------------------------------------------------+
void OnStart()
  {
 
  if(Signal == Buy_)   //условия
     ArrowBuyCreate(0,"ArrowBuy_"+(string)Time[0],0,Time[0],Ask);

  if(Signal == Sell_)  //условия
     ArrowSellCreate(0,"ArrowSell_"+(string)Time[0],0,Time[0],Bid);
   
  }
//+------------------------------------------------------------------+
//====================================================================
//+------------------------------------------------------------------+
//| Создает знак "Buy"                                               |
//+------------------------------------------------------------------+
bool ArrowBuyCreate(const long            chart_ID=0,        // ID графика
                    const string          name="ArrowBuy",   // имя знака
                    const int             sub_window=0,      // номер подокна
                    datetime              time=0,            // время точки привязки
                    double                price=0,           // цена точки привязки
                    const color           clr=C'3,95,172',   // цвет знака
                    const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                    const int             width=1,           // размер линии (при выделении)
                    const bool            back=false,        // на заднем плане
                    const bool            selection=false,   // выделить для перемещений
                    const bool            hidden=true,       // скрыт в списке объектов
                    const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_BUY,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Buy\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Создает знак "Sell"                                              |
//+------------------------------------------------------------------+
bool ArrowSellCreate(const long            chart_ID=0,        // ID графика
                     const string          name="ArrowSell",  // имя знака
                     const int             sub_window=0,      // номер подокна
                     datetime              time=0,            // время точки привязки
                     double                price=0,           // цена точки привязки
                     const color           clr=C'225,68,29',  // цвет знака
                     const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                     const int             width=1,           // размер линии (при выделении)
                     const bool            back=false,        // на заднем плане
                     const bool            selection=false,   // выделить для перемещений
                     const bool            hidden=true,       // скрыт в списке объектов
                     const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Sell\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
 

テストモードで*.txtファイルを開こうとすると、エラーが発生することがあるのですが、その原因を教えてください。

このオプションは完璧に機能します。

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";"); 

でも、これではダメなんです。

Handle2=FileOpen(File_Name2,FILE_TXT|FILE_READ);

5004エラー、関数FileIsExist(File_Name2)が何らかの理由でfalseを返す (wtf????)

両方のファイル(csvとtxt)はtesterのtemptyfilesフォルダ(Dドライブのターミナル)にあり、それらの名前は変数File_NameとFile_Name 2に対応しています - 私はそれらを何度も確認しました。

 
DiPach:

アルチョムの言う「...」とはcondition triggered - put a mark. "のように、条件が成立したときにバッジ(マーカー)をセットするようにスクリプトコードに記述することです。

MQL4のリファレンスブックには、アイコンを作成するためのスクリプトの非常に良い例が掲載されています。例えば、チャート上に「買い」のアイコンを作成し、移動さ せる スクリプト です。

いいえ、ディナ、私が言ったことはそのままの意味です;)

具体的な質問と具体的な答え」をほのめかしました。今日は意地悪なんです :)

 
artmedia70:

今日は意地悪なんです :)

今日は熱い手に乗らないように、じゃあ静かにします、:)。:)

 
DiPach:

その時は何も言いませんよ :) 誤って今日のホットハンドに入ってしまわないようにね。:)

いや...私はもともと女の子が好きなんです。