[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 447

 
Yulia:
多分私は間違って何かを説明した、あなたは16:00モスクワ時間で始まるm1 m5 m15 m30 h1 h4の最初のろうそくをマークする必要があるだけで、指標は(よく例えばm15に4キャンドル)マークを付けます。

助けることと、やることは少し違う。そう思いませんか?
 
Vinin:

配列のサイズを設定する必要はないのですか?


はい、本当に忘れてました、泥沼にはまりそうです。これでアレイはいっぱいになりましたが、行はまだ表示されません。アレイはバッファにリンクされる

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

void init()
        {
        SetIndexBuffer(0, HighMass);
        SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
        SetIndexBuffer(1, LowMass);
        SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);
        }
 
sss2019:


はい確かに、忘れてました、もう疲れました。これでアレイはいっぱいになったが、まだ線は表示されない。アレイはバッファにリンクされる


コードを全部教えてくれればよかったのに。明確なものを当てにするのではなく
 
Vinin:

助けるとやるは少し違う。そう思いませんか?

私は完全にあなたに同意します、私は助けを求めました、私は2週間の間あちこちをつつきましたが結果は出ませんでした、だからあなたのオプションは私にも合いません、まあどうもありがとう、私は自分自身で解決しますよ。
 

こんにちは...ArrayGetAsSeries 関数について質問です。ArrayGetAsSeries 関数の動作を理解するために、 、以下のスクリプトを書きました。

//+------------------------------------------------------------------------------------------+
//|                                                                ArrayGetAsSeries_плюс.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                           //функция start
  {                                                   //начало start
   double Timestart=GetTickCount();                   //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   double array1[];                                   //объявляем массив-приемник (массив, куда будут скопированы данные)
   int element=ArrayCopy(array1,Open,0,0,WHOLE_ARRAY);//копируем данные по ценам открытия в пользовательский массив (начиная с нулевого бара)
   int size=ArraySize(array1);                        //устанавливаем количество элементов массива array1
   for(int i=0;i<=4;i++)                              //цикл по просмотру скопированных значений (первых пяти)
       {                                              //начало for
        Alert("Значение цены открытия бара № ",i," равно ",array1[i],
              "\nВремя цены открытия бара № ",i,": ",TimeToStr(iTime(NULL,0,i),TIME_DATE|TIME_MINUTES));//cообщение на экран
       }                                                                 //конец for
//----------------------------------------------------------------------------------------- 2 -
   Comment("\nФункция ArrayCopy(array1[],Open,0,0,WHOLE_ARRAY) вернула: ",element,
           "\nФункция ArraySize(array1) вернула: ",size,
           "\nФункция ArrayGetAsSeries(array1) вернула: ",ArrayGetAsSeries(array1),
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000),
           " секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать 
           //сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

このスクリプトは、バーの始値の配列-時系列をカスタム配列にコピーしています。配列要素が最後から最初のインデックスを持つため、このカスタム配列は明らかに時系列配列として構成されています これは、Alert 関数 が4番目のバーの始値と時間を出力したスクリーンショットで実証 されています)。このバーはチャート上に縦線で表示されます。このバーのオープン価格も確認でき、プロパティウィンドウではバーのオープン時間がアラート 機能で設定したものと同じであることがわかります)。しかし、ArrayGetAsSeries 関数は0を返します。これは、ユーザー配列が時系列配列として整理されていないことを意味します(スクリーンショットの左上隅)。

質問:ユーザー配列が時系列配列として構成されているにもかかわらず、ArrayGetAsSeries 関数はなぜ0を返したのでしょうか?

P.S. フォーラムを乱雑にしないために、事前に回答をお願いします。


 
7777877:
Q: ユーザー配列が時系列配列として構成されているのに、ArrayGetAsSeries 関数が0を返すのはなぜですか?
データをある順番でコピーしたからといって、配列が時系列で構成されているとは限りません
 
ilunga:
データをある順番でコピーしたからといって、配列が時系列に整理されているとは限りません

しかし、ポイントは、すでにコピーされたバーからforループで再現される始値の値は、最後から最初のものにインデックスが付けられていることです。しかし、私が理解する限り、これは(つまり、最後から最初のインデックス)配列が時系列で構成されていることを意味するのでしょうか?

P.S.FileIsEndingと FileIsLineEnding関数について、前回の質問への回答ありがとうございました。

 
7777877:

しかし、ポイントは、すでにコピーされたバーからforループで再現される始値の値は、最後から最初のものにインデックスが付けられていることです。しかし、私が理解する限り、これは(つまり、最後から最初のインデックス)配列が時系列として整理されることを意味するのでしょうか?

P.S. FileIsEndingとFileIsLineEnding関数について、前回の質問への回答ありがとうございました。

いや、あくまでもデータが歴史の一コマと一致したということだ。

手動で入力するなどの方法もあったはずです。またはテキストファイルから書き込む。または計算で受け取った。


結局、「1.25 1.16 1.73 1.35」という条件付きのデータを入力しても、何年も前の通貨の履歴にたどり着くかもしれない。しかし、だからといって配列の時系列を設定したわけではありません

 

質問が重複して申し訳ないのですが、これが解決しないと以下の例ができないのです。

どうかご教授ください。

MQL4のチュートリアルから)注文を開くための簡単なスクリプトを書きました。

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

4桁の楽器用にコーディングしてみました。

ドットの後が5桁の会社のアカウントを持っています。

また、スクリプト実行時にエラー4109(trading not allowed)が表示されるのはなぜですか?


 
Pacman:

質問が重複して申し訳ないのですが、これが解決しないと以下の例ができないのです。

どうかご教授ください。

MQL4のチュートリアルから)注文を開くための簡単なスクリプトを書きました。

4桁の楽器用にコーディングしてみました。

ドットの後が5桁の会社のアカウントを持っています。

スクリプトの実行時にエラー4109(取引不可)が表示されるのですが、5桁のコードを修正することはできますか?

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-150*Point,Bid+150*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

ただし、それが全く機能しないわけではありません。証券会社でストップ&テイクのサイズが有効かどうか確認する必要がある

err_trade_not_allowed 4109 貿易は禁止されています。EAのプロパティで「EAに取引を許可する」オプションを有効にする必要があります。