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

 
Top2n:

この関数は,配列中のセルの数を返すものであり,充填されたセルの数を返すものではない。

ループのみで大丈夫です。通して数える
 

初心者のためのアドバイス、お願いします

私の仕事は、Expert Advisorからサブウィンドウ(子ウィンドウ)を、それがアタッチされているチャートウィンドウに作成することです。

いろいろ調べてみたが、やり方がわからない。オブジェクトの作成/編集が可能

他のインジケータで既に作成されているサブウィンドウがあるが、必要なものがない......。

どうしたらこの状況から抜け出せるのか?

 
boroda4:

初心者のためのヒント、お願いします

私の仕事は、Expert Advisorからサブウィンドウ(子ウィンドウ)を、それがアタッチされているチャートウィンドウに作成することです。

いろいろ調べてみたが、やり方がわからない。オブジェクトの作成/編集が可能

他のインジケータで既に作成されているサブウィンドウがあるが、必要なものがない...。

どうしたらこの状況から抜け出せるのか?


この記事を ご覧になれば、何か発見があるかもしれません。
 
Vinin:

ループのみで大丈夫です。通して数える。

配列の中で埋まっているセルの数を計算する方法を教えてください。

配列には、現在のバーからの相対的なトレンドライン 価格が含まれます。

 sch=ObjectsTotal(OBJ_TREND);//количество трендовы линий
for(int s=0;s<sch;s++) 
 {
 
// ArraySort(masS,WHOLE_ARRAY,0,MODE_DESCEND);
// ArraySort(masB,WHOLE_ARRAY,0,MODE_DESCEND);
  
   DWnem=ObjectName(s); //Текущее имя объекта
   DW="downtrendline"+IntegerToString(s);//Для фильтрации запроса
   DW2="uptrendline"+IntegerToString(s);//
  if(DWnem="")//если объекта уже нет, то обнуляем ячейку массива
   {
   masS[s]=0;
   masB[s]=0;
   }
 if(DWnem=DW)//если имя совпадает с фильтром, то запоминаем в массив
{
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Goldenrod) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Gainsboro) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==White) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
}   
for(int a=0;a<20;a++)// ну а тут счетчик, чтоб посчитать сколько ячеек записано в масив { if(mas[a]>0) sch++; } Как остановить счетчик?

解らないんです。

解らなくてそれっきりです、助けてください!!!!

 

TerminalTesterの終端信号をターミナルで取得する方法を教えてください。

int start()
   {
    //---------------------------------- Из Терминала запустим ТерминалТестер -------------------------
    Start   = ShellExecuteW(0, "Open", "terminal.exe", "D:\\Alpari_Terminal_Tester\\tester\\optimise.ini", "D:\\Alpari_Terminal_Tester", 3);
    while(STOP)
        {
         //------ Функция запроса проверки состояния ТерминалТестера ------
         // STOP=?????????????????????????????????????????????????;
         Sleep(1000);
        }
    return(0);
   }
 
Top2n:

配列の中で埋まっているセルの数を計算する方法を教えてください。

配列には、現在のバーからの相対的なトレンドライン価格が含まれます。

解らないんです。

解らなくてそれっきりです、助けてください!!!!

こんな風に試してみてください。

int limit = ...; //до какого числа нужно
MathMin(sch++,limit); //если это будет работать, не пробовал

もしかしたら、うまくいくかもしれない。がんばってください。

削除済み  
Top2n:

配列の中で埋まっているセルの数を計算する方法を教えてください。

配列には、現在のバーからの相対的なトレンドライン価格が含まれます。

解らないんです。

どうしても分からなくてそれっきりです、助けてください!!!!


おそらく、時間内にカウンターを無効にする必要があるため、それ以上巻かないし、ゼロから再計算されます?

キロメートル単位の関数は良くない。たとえ一部が一度だけ呼ばれるとしても、完成した動作の断片を別の関数に入れる方が良い。そして、これらの別個の関数は、メイン関数から呼び出すのがよいでしょう。

このカウントでいいのか?

#property strict

/******************************************************************************/
uint getFilledCellsNumber(double &array[]) { // Массив принимается по ссылке, то есть, НЕ копируется
  uint cnt = 0;

  for (int i = 0, limit = ArraySize(array); i < limit; i++) {
    if (array[i] > 0) {
      cnt++;
    }
  }

  return cnt;
}

/******************************************************************************/
void OnStart() {
  double a[] = {0, 1.2, 1.3, 0, 1.1};
  uint filledCellsNumber = getFilledCellsNumber(a); // Массив передаётся по ссылке, то есть, НЕ копируется

  Print("Number of filled cells: ", filledCellsNumber);
}

起動すると、以下のようになります。

00:24:46 Script 1 EURUSDm,H1: loaded successfully
00:24:46 1 EURUSDm,H1: initialized
00:24:46 1 EURUSDm,H1: Number of filled cells: 3
00:24:46 1 EURUSDm,H1: uninit reason 0
00:24:46 Script 1 EURUSDm,H1: removed

正しくカウントされているようだ。

 

こんにちは。

2012年に作成されたプログラムをコンパイルすると、警告が表示される。

タイプ変換によりデータが失われる可能性が ある FinBuy1531.mq4 144 7

その意味と回避方法について教えてください。

追伸:テスターでは、プログラムが正常に動作しています。

 
simpleton:

おそらく、カウンターは時間内にゼロにすることで、それ以上追加してまた一からカウントすることはないのでは?

キロメトリック関数はよくありません。アクションの完全なチャンクは、たとえその一部が一度だけ呼ばれるとしても、別の関数に配置する方がよいでしょう。そして、メイン関数から、それらの別々のものを呼び出す。

このカウントはうまくいくのでしょうか?

起動すると、以下のようになります。

正しくカウントされているようです。


OOO ありがとうございました!!))一般的に素晴らしい働きをします。

皆さん、ありがとうございました!)

 
Shurkin:

こんにちは。

2012年に作成されたプログラムをコンパイルすると、警告が表示される。

タイプ変換によりデータが失われる可能性がある FinBuy1531.mq4 144 7

その意味と回避方法について教えてください。

追伸:テスターでは、プログラムが正常に動作しています。

コード内で正しくType変換を 行う必要があります。