どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 899 1...892893894895896897898899900901902903904905906...1178 新しいコメント [Deleted] 2015.06.03 07:48 #8981 プログラマー同志、ロボットのコードを書くのに協力してください!という大変なお願いです。ロボットは2つのミューウィングで取引します。クロスするとポジションを開き、反対側のクロスで閉じます。しかし、それは反対のクロスオーバーで別のポジションを開く必要があります。つまり、「買い」を閉じたら、ロボットはすぐに「売り」を開くべきで、逆もまた然りなのです ファイル: schumacher-v1.3_1.mq4 6 kb Alexey Viktorov 2015.06.03 08:24 #8982 lufer: ありがとうございます、でもOnInit()のMas[N];ではうまくいきません、もう試しました。 さて、昨日はあまり酔いが回っていなかったようで、申し訳ありません。あるいは、あまりシラフでない。 lufer 2015.06.04 08:59 #8983 AlexeyVik: そうですね......すみません、昨夜はあまりシラフではなかったので。あるいは、あまりシラフでない。))のようなことが起こります。 lufer 2015.06.04 09:23 #8984 例えば、最初に形成されたバー(#1)から始まる各バーからインジケータ(例えばATR)から取得したデータで配列を満たしたいとします。つまり、配列が宣言され、スタート関数ですでに初期化されているのです。正しいやり方は?このように?for(int i=0; i<N; i=i++){Mas[i]=iATR(NULL,0,1,i+1); }または経由することができます。for(int i=0; i<N; i=i++){ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))}または完全に他の何か?、これまでのところ、私はどのような方法で成功していない(、何かが間違っている、アドバイスしてください、事前にありがとうございました。 Vitalie Postolache 2015.06.04 10:49 #8985 lufer:例えば、最初に形成されたバー(#1)から始まる各バーからインジケータ(例えばATR)から取得したデータで配列を満たしたいとします。つまり、配列が宣言され、スタート関数ですでに初期化されているのです。正しいやり方は?このように?for(int i=0; i<N; i=i++){Mas[i]=iATR(NULL,0,1,i+1); } 最初のケースで十分です。しかし、最初の小節から始まる値が必要な場合、ループも1から数えた方が賢明です。 lufer 2015.06.04 11:27 #8986 evillive: 最初の選択肢で十分です。しかし、最初のバーから始まる値が必要な場合、1からのサイクルを数える方が合理的です。 1と0の両方を試してみましたが、やはり何かおかしい、値が書き込まれない、出力を要求しても0しか出ない Vitalie Postolache 2015.06.04 11:39 #8987 lufer: 1と0の両方で試してみましたが、やはりうまくいきません。値が書き込まれず、何か出力するように要求しても、ゼロが出力されるだけです。 出力されたコードを表示してください。 lufer 2015.06.04 14:35 #8988 evillive: コードを表示して出力を求めます。念のため、すべてのコードをお見せします。//+------------------------------------------------------------------+ extern int N =100; // Количество баров int Mas[]; // Объявление массива //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ArrayResize(Mas,N,0); // Установка размера массива } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { for(int i=0; i<N; i=i++) // Цикл записи данных { Mas[i]=iATR(NULL,0,1,i+1); // Вычисление значений } Alert(Mas[0],"," ,Mas[50],"," ,Mas[99]); // Вывод на экран return; // Выход из start } //+------------------------------------------------------------------+ SRCを使用してコードを挿入 する Vitalie Postolache 2015.06.04 15:42 #8989 lufer:念のため、すべてのコードをお見せします。double 型の配列を作る lufer 2015.06.04 18:37 #8990 evillive: double 型の配列を作るターミナルウィンドウでEAをロードしても何も起こらないし、削除しようとすると、ターミナルが非常に長い間停止して、しばらくしてから削除 されます。いくつかの要素に手動で値を割り当てて みましたが、すべてOKです。配列の初期化ループの何かが間違っているようです。 1...892893894895896897898899900901902903904905906...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ありがとうございます、でもOnInit()のMas[N];ではうまくいきません、もう試しました。
そうですね......すみません、昨夜はあまりシラフではなかったので。あるいは、あまりシラフでない。
例えば、最初に形成されたバー(#1)から始まる各バーからインジケータ(例えばATR)から取得したデータで配列を満たしたいとします。つまり、配列が宣言され、スタート関数ですでに初期化されているのです。正しいやり方は?
このように?
for(int i=0; i<N; i=i++)
Mas[i]=iATR(NULL,0,1,i+1);
}
または経由することができます。
for(int i=0; i<N; i=i++)
{
ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))}
または完全に他の何か?、これまでのところ、私はどのような方法で成功していない(、何かが間違っている、アドバイスしてください、事前にありがとうございました。
例えば、最初に形成されたバー(#1)から始まる各バーからインジケータ(例えばATR)から取得したデータで配列を満たしたいとします。つまり、配列が宣言され、スタート関数ですでに初期化されているのです。正しいやり方は?
このように?
for(int i=0; i<N; i=i++)
Mas[i]=iATR(NULL,0,1,i+1);
}
最初の選択肢で十分です。しかし、最初のバーから始まる値が必要な場合、1からのサイクルを数える方が合理的です。
1と0の両方で試してみましたが、やはりうまくいきません。値が書き込まれず、何か出力するように要求しても、ゼロが出力されるだけです。
コードを表示して出力を求めます。
念のため、すべてのコードをお見せします。
SRCを使用してコードを挿入 する
念のため、すべてのコードをお見せします。
double 型の配列を作る