[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 656 1...649650651652653654655656657658659660661662663...1145 新しいコメント Igor Makanu 2010.06.29 05:13 #6551 artmedia70: スタックオーバーフローの原因となるものは何ですか?大きなテイク(テイクはボラティリティから計算し100倍したもの、サイズは41*100)でポジションを開くと、スタックオーバーフローがログに書き込まれ、.........ただ、それを取る。このポジションが閉じるまで、これ以上ポジションを建てない、そしてこのポジションはもちろん巨大なTPのため閉じない...。そして、EAは全く正しく動作しません。なぜなら、あらかじめ定義されたオープンポジションの合計利益に達したときに、すべてのポジションをクローズする必要があるからです...。でも、この1つのポジションがずっと2,000ポイントくらいの大きな利益を出しているのに、そうはならない...。どう戦えばいいのか?すべてのオープンポジションがスタックから溢れ出し、すべてがひっくり返るという事態を防ぐことはできませんが... 型範囲外の数値でスタックをオーバーフローさせることはできません - 別のエラーが発生します。 関数に渡されたデータや、終了せずに関数を再帰的に呼び出すと、スタックがオーバーフローすることがあります。 start() も関数です。たぶん、そこにはたくさんの変数があります。 スタックとは、関数の中間値(ローカル変数)を格納するメモリ領域のことです。動的配列を使用していて、配列のスコープを正しくチェックしていない場合、つまり、配列ではなく、配列の直後のメモリ領域にデータを書き込んでいる場合、自分でスタックを壊している可能性があります。 配列のいくつかをグローバル変数に 移動して、ボードの一番上に置いてみてください。 ZS: 少なくとも、どのプログラミング言語でも同じだと思います。 Artyom Trishkin 2010.06.29 05:28 #6552 IgorM: 型範囲外の数値でスタックをオーバーフローさせることはできません - 別のエラーが発生します。関数に渡されたデータや、終了せずに関数を再帰的に呼び出すと、スタックがオーバーフローすることがあります。start() も関数です。たぶん、そこにはたくさんの変数があります。スタックとは、関数の中間値(ローカル変数)を格納するメモリ領域のことです。動的配列を使用していて、配列のスコープを正しくチェックしていない場合、つまり、配列ではなく、配列の直後のメモリ領域にデータを書き込んでいる場合は、スタックを自分で壊している可能性があります。配列のいくつかをグローバル変数に移動して、ボードの一番上に置いてみてください。Lf: 少なくとも、どのプログラミング言語でも同じだと思います。 イゴール 私がこれまで配列の使用を避けてきたことはご存じでしょうが......。私のコードには、ティック前の注文の配列とティック後の注文の配列という2つの配列しかありません。グローバル変数のところに定義してあるんです。面白いのは、これらのポジションを開くコードをEA内の別の場所に移動させたら、エラーが消えたことです。特に気にしていなかったのですが、オープンオーダーの再帰的な呼び出しの ようです。単純に、トータルで利益が出たかどうかを確認するコードで、全てのポジションを決済した後、すぐにオープニングを置くのは適切ではないと判断し、全てのポジションを決済してしまいました...。散々な目に遭わせてしまった...。:) Igor Makanu 2010.06.29 05:36 #6553 artmedia70: イゴール 私がこれまで配列の使用を避けてきたことはご存じでしょうが......。私のコードには、ティック前の注文の配列とティック後の注文の配列という2つの配列しかありません。グローバル変数のところに定義してあるんです。面白いのは、これらのポジションを開くコードをEA内の別の場所に移動させたら、エラーが消えたことです。オープンオーダーの再帰的な呼び出しがあったようですが、特に気にしていませんでした。単純に、トータルで利益が出たかどうかを確認するコードで、全てのポジションを決済した後、すぐにオープニングを置くのは適切ではないと判断し、全てのポジションを決済してしまいました...。散々な目に遭わせてしまった...。:) 私はEAを作成 するためのテンプレートを作成しました - 注文が発注されると、その注文のフラグが直ちに設定され、その後、このタイプの新しい注文を開く前に、私は常にフラグ - 注文が存在するかどうかをチェックしますが、私は1つだけの注文でEAを記述しています。 Artyom Trishkin 2010.06.29 06:05 #6554 IgorM: 私はずいぶん前にEAを作成するためのテンプレートを作りました。注文を出すと、すぐにそのような注文が存在するというサイン(フラグ)を設定し、このタイプの新しい注文を開く前に必ずフラグをチェックします - そのような注文が存在するかどうか、しかし私は一つの注文でEAを書きます。 まあ、私も、そして皆さんも、それぞれの開発、テンプレート、その他のグッズをお持ちだと思います。これでは意味がない。まだドローダウンに悩んでいて、いろいろな手法や関数などを試しているところです。トレンドに忠実な場合、古いTFではトレンドが既に横ばいになっているのに、若いTFではトレンドが残っているのに終わりつつある場合、トレンドの枯渇をどう捉えるか理解できない。低次のポジションを建てる場合、ドローダウンを引き起こし、時間内に決済できない可能性が高くなります。今は、4時間足チャートを起点に、方向性を定めて、この方向性だけで仕事をするように、すべてのジュニアで心がけています。トレンドからフラットに移行する瞬間は、なんとなくわかったので、その結果を見ていきたいと思います。 削除済み 2010.06.29 10:52 #6555 Craft: 確かに "0 "になってしまいましたが、どうすればいいのでしょうか? 両方の方法でやるのは無理で(イコールピリオドも試しました)、両方試してみました Print("NormalizeDouble(c1b_1..."), しかしゼロになってしまいました(c1b[i]のみ値を表示、c1s[i]など他はゼロ)。どちらかを動く状態にするためのヘルプやヒント、何か欠陥がありましたら教えてください。 新品です。 古い。 全体。 Yuri、将来的には、もしコードが少なくとも2回繰り返されるなら、 、メソッドに割り当てられるべきで、コードを乱雑にする配列のヒープは必要ないでしょう。 その方法をご紹介します。 //+------------------------------------------------------------------+ double iCCIAverage(string cci_symbol, int cci_timeframe, int cci_period, int cci_applied_price, int ma_period, int ma_method, int ma_shift){ double array[]; int loop_array; ArrayResize(array,ma_period + ma_shift); for(int loop = ma_period + ma_shift - 1; loop >= 0; loop--, loop_array++)array[loop_array] = iCCI(cci_symbol, cci_timeframe, cci_period, cci_applied_price, loop); return(iMAOnArray(array, 0, ma_period, 0, ma_method, ma_shift)); } //+------------------------------------------------------------------+ データを入力し、ma_shiftパラメータを変化させることで、必要なシフトを得ることができる、パラメータですべてが明らかになると思います。このメソッドはテンプレートとして使用することができます。これで、あなたの取引判断のブロックは、あるべき姿になりました。 //--------------------------------------------------------------- 5 -- // Торговые критерии if (NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodB, PRICE_TYPICAL, AvgB, MODE_SMA, 1),4)<NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodB, PRICE_TYPICAL, AvgB, MODE_SMA, 2),4) && NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodB, PRICE_TYPICAL, AvgB, MODE_SMA, 2),4)>NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodB, PRICE_TYPICAL, AvgB, MODE_SMA, 3),4)) { // Opn_B=true; // Критерий откр. Buy Cls_S=true; // Критерий закр. Sell } if (NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodS, PRICE_TYPICAL, AvgS, MODE_SMA, 1),4)>NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodS, PRICE_TYPICAL, AvgS, MODE_SMA, 2),4) && NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodS, PRICE_TYPICAL, AvgS, MODE_SMA, 2),4)<NormalizeDouble(iCCIAverage(Symbol(), 0, PeriodS, PRICE_TYPICAL, AvgS, MODE_SMA, 3),4)) { // Opn_S=true; // Критерий откр. Sell Cls_B=true; // Критерий закр. Buy } //--------------------------------------------------------------- 6 -- したがって、「古い」「新しい」バリエーションは必要なく、取引は与えられた基準に従って行われます(私の理解では、トップ/トラフの3本のバーパターンをiCCで平滑化したもの)。ファイルには修正されたバリアントがあります。 ファイル: 21_2.mq4 14 kb Aliaksei Zeliankou 2010.06.29 11:17 #6556 こんにちは。 注文が開始 されてからの価格を配列に書き込むコードを教えてください。 新しい価格ごとに配列に追加されるようにする方法。 Igor Makanu 2010.06.29 12:44 #6557 zelek:こんにちは。注文が開始されてからの価格を配列に書き込むコードを教えてください。新しい価格ごとに配列に追加されるようにする方法。 ご質問の内容をもう少し具体的にご記入ください。 注文時の現在の価格に興味がある場合は、配列のインデックス カウンターを変更しながらグローバル配列に現在の価格を格納する役割を担うコードに呼び出しを追加し、後でコード内の任意の場所から表示できるようにすることができます。 Igor Makanu 2010.06.29 12:47 #6558 EAのパフォーマンスを確認する方法 - コード実行時間をミリ秒で表示したいだけです。 MT5とMT4の性能の比較 DDFedor 2010.06.29 13:00 #6559 IgorM: EAのパフォーマンスを確認する方法 - コード実行時間をミリ秒で表示したいだけです。 MT5とMT4の性能の比較 GetTickCountがあれば、https://docs.mql4.com/ru/common/GetTickCount Igor Makanu 2010.06.29 13:20 #6560 DDFedor: GetTickCountは、https://docs.mql4.com/ru/common/GetTickCount。 ありがとうございます、そうです、私が探していたものです、どなたかmt4とmt5で同じタイプのコードの速度を測定された方はいらっしゃいますか? 1...649650651652653654655656657658659660661662663...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
スタックオーバーフローの原因となるものは何ですか?大きなテイク(テイクはボラティリティから計算し100倍したもの、サイズは41*100)でポジションを開くと、スタックオーバーフローがログに書き込まれ、.........ただ、それを取る。このポジションが閉じるまで、これ以上ポジションを建てない、そしてこのポジションはもちろん巨大なTPのため閉じない...。そして、EAは全く正しく動作しません。なぜなら、あらかじめ定義されたオープンポジションの合計利益に達したときに、すべてのポジションをクローズする必要があるからです...。でも、この1つのポジションがずっと2,000ポイントくらいの大きな利益を出しているのに、そうはならない...。どう戦えばいいのか?すべてのオープンポジションがスタックから溢れ出し、すべてがひっくり返るという事態を防ぐことはできませんが...
型範囲外の数値でスタックをオーバーフローさせることはできません - 別のエラーが発生します。
関数に渡されたデータや、終了せずに関数を再帰的に呼び出すと、スタックがオーバーフローすることがあります。
start() も関数です。たぶん、そこにはたくさんの変数があります。
スタックとは、関数の中間値(ローカル変数)を格納するメモリ領域のことです。動的配列を使用していて、配列のスコープを正しくチェックしていない場合、つまり、配列ではなく、配列の直後のメモリ領域にデータを書き込んでいる場合、自分でスタックを壊している可能性があります。
配列のいくつかをグローバル変数に 移動して、ボードの一番上に置いてみてください。
ZS: 少なくとも、どのプログラミング言語でも同じだと思います。
型範囲外の数値でスタックをオーバーフローさせることはできません - 別のエラーが発生します。
関数に渡されたデータや、終了せずに関数を再帰的に呼び出すと、スタックがオーバーフローすることがあります。
start() も関数です。たぶん、そこにはたくさんの変数があります。
スタックとは、関数の中間値(ローカル変数)を格納するメモリ領域のことです。動的配列を使用していて、配列のスコープを正しくチェックしていない場合、つまり、配列ではなく、配列の直後のメモリ領域にデータを書き込んでいる場合は、スタックを自分で壊している可能性があります。
配列のいくつかをグローバル変数に移動して、ボードの一番上に置いてみてください。
Lf: 少なくとも、どのプログラミング言語でも同じだと思います。
イゴール 私がこれまで配列の使用を避けてきたことはご存じでしょうが......。私のコードには、ティック前の注文の配列とティック後の注文の配列という2つの配列しかありません。グローバル変数のところに定義してあるんです。面白いのは、これらのポジションを開くコードをEA内の別の場所に移動させたら、エラーが消えたことです。オープンオーダーの再帰的な呼び出しがあったようですが、特に気にしていませんでした。単純に、トータルで利益が出たかどうかを確認するコードで、全てのポジションを決済した後、すぐにオープニングを置くのは適切ではないと判断し、全てのポジションを決済してしまいました...。散々な目に遭わせてしまった...。:)
私はEAを作成 するためのテンプレートを作成しました - 注文が発注されると、その注文のフラグが直ちに設定され、その後、このタイプの新しい注文を開く前に、私は常にフラグ - 注文が存在するかどうかをチェックしますが、私は1つだけの注文でEAを記述しています。
私はずいぶん前にEAを作成するためのテンプレートを作りました。注文を出すと、すぐにそのような注文が存在するというサイン(フラグ)を設定し、このタイプの新しい注文を開く前に必ずフラグをチェックします - そのような注文が存在するかどうか、しかし私は一つの注文でEAを書きます。
確かに "0 "になってしまいましたが、どうすればいいのでしょうか? 両方の方法でやるのは無理で(イコールピリオドも試しました)、両方試してみました Print("NormalizeDouble(c1b_1..."), しかしゼロになってしまいました(c1b[i]のみ値を表示、c1s[i]など他はゼロ)。どちらかを動く状態にするためのヘルプやヒント、何か欠陥がありましたら教えてください。
新品です。
古い。
全体。
Yuri、将来的には、もしコードが少なくとも2回繰り返されるなら、 、メソッドに割り当てられるべきで、コードを乱雑にする配列のヒープは必要ないでしょう。
その方法をご紹介します。
データを入力し、ma_shiftパラメータを変化させることで、必要なシフトを得ることができる、パラメータですべてが明らかになると思います。このメソッドはテンプレートとして使用することができます。これで、あなたの取引判断のブロックは、あるべき姿になりました。
したがって、「古い」「新しい」バリエーションは必要なく、取引は与えられた基準に従って行われます(私の理解では、トップ/トラフの3本のバーパターンをiCCで平滑化したもの)。ファイルには修正されたバリアントがあります。
こんにちは。
注文が開始 されてからの価格を配列に書き込むコードを教えてください。
新しい価格ごとに配列に追加されるようにする方法。
こんにちは。
注文が開始されてからの価格を配列に書き込むコードを教えてください。
新しい価格ごとに配列に追加されるようにする方法。
ご質問の内容をもう少し具体的にご記入ください。
注文時の現在の価格に興味がある場合は、配列のインデックス カウンターを変更しながらグローバル配列に現在の価格を格納する役割を担うコードに呼び出しを追加し、後でコード内の任意の場所から表示できるようにすることができます。
EAのパフォーマンスを確認する方法 - コード実行時間をミリ秒で表示したいだけです。
MT5とMT4の性能の比較
EAのパフォーマンスを確認する方法 - コード実行時間をミリ秒で表示したいだけです。
MT5とMT4の性能の比較
GetTickCountがあれば、https://docs.mql4.com/ru/common/GetTickCount
GetTickCountは、https://docs.mql4.com/ru/common/GetTickCount。
ありがとうございます、そうです、私が探していたものです、どなたかmt4とmt5で同じタイプのコードの速度を測定された方はいらっしゃいますか?