[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 587 1...580581582583584585586587588589590591592593594...1145 新しいコメント Craft 2010.06.01 14:18 #5861 OK、もしダメだったら、今夜、解決するのを手伝ってくれ。 Artyom Trishkin 2010.06.01 18:44 #5862 計算結果であるdoubleの 値をintの 代用値としてさらに計算することは可能かどうか教えてください。 例 ATR_Din=iATR(NULL,PERIOD_M5,14,1); Din_Per210= MathRound(6000*ATR_Din+210); Din_Per5 = MathRound(6000*ATR_Din+5); MA210_DIN =iMA(NULL,PERIOD_M5,Din_Per210,0,MODE_SMA,PRICE_CLOSE,1); MA5_DIN =iMA(NULL,PERIOD_H1,Din_Per5,0,MODE_SMA,PRICE_CLOSE,1); ここでは、私の選択した変数はdouble 型ですが、iMAでは int 値が必要なところ(MAの周期として)でその値が使用されます。 問題は、この使い方が正しいのか、それとも値をint 型に変換する必要があるのか、ということです。 nexus 2010.06.01 19:13 #5863 皆さん、こんにちは。最適化の結果 に対してエキスパートテストを実行し、各テスト結果を個別のファイル(htmレポート)に保存するスクリプトがあるかどうか、ご存知の方は教えてください。 Alexey Subbotin 2010.06.01 19:26 #5864 Craft: 構わないのですが、動作例やリンクはありますか? コードを渡すか、タスクを渡せば修正します。 Alexey Subbotin 2010.06.01 19:28 #5865 artmedia70: 計算結果であるdoubleの 値をintの 代用値としてさらに計算することは可能かどうか教えてください。例ここでは、私の選択した変数は double 型ですが、iMAでは int 値が必要なところ(MAの周期として)でその値が使用されます。このような使い方は正しいのでしょうか?それとも int 型への変換が必要なのでしょうか? 変換は端数部分を切り落とすだけで自動的に行われます。私が遭遇した唯一の制限は、配列のインデックスに doubleを入れることができないことです。 Artyom Trishkin 2010.06.01 19:54 #5866 alsu: 変換は端数部分を切り落とすだけで自動的に行われます。私が見たこの使用法の唯一の制限は、配列のインデックスにdoubleを入れることができないことです。 ありがとうございます、心強いです...。:) もう1つ質問です。 MA200_DIN =iMA(NULL,PERIOD_M5,Din_Per200,0,MODE_SMA,PRICE_CLOSE,1); MA200_UP =MA200_DIN+20*pt; MA200_DN =MA200_DIN-20*pt; MA5_DIN =iMA(NULL,PERIOD_H1,Din_Per5,0,MODE_SMA,PRICE_CLOSE,1); MA5_UP =MA5_DIN+20*pt; MA5_DN =MA5_DIN-20*pt; コンストラクション MA200_UP=MA200_DIN+20*pt; MA200_DN=MA200_DIN-20*pt; и MA5_UP=MA5_DIN+20*pt; MA5_DN=MA5_DIN-20*pt; は動作しません。その値をチャートに表示する場合、それらはすべて同じ値を持つ。 MA200_DIN、MA200_UP、MA200_DNは1.4118、MA200_UP、MA200_DNは1.4118 MA5_DIN, MA5_UP, MA5_DNは1.4106です。 レベル+20点、-20点の計算式がうまくいかないことが判明。 私は何を間違えているのだろう? Alexey Subbotin 2010.06.01 19:57 #5867 ptは何に相当するのでしょうか?NormalizeDouble()で出力してみてください。 Artyom Trishkin 2010.06.01 20:03 #5868 OK、ありがとう、わかったよ...。pt=Pointとし、値を計算したところ ...。 マトロスキンが言ったように、あなたは愚か者です...。:) Craft 2010.06.01 20:12 #5869 alsu: コードを教えていただくか、タスクを設定していただければ、修正します WelsLabでは、問題のアナログは次のようになります。 MyATR = SMA.Series(((High-Low)/Low), PerB)[i-1] ; if (BuyAtStop(i,(Open[i] + Open[i]*MyATR), ""))。; すなわち、バーの開始時にストップポジションが設定され、指定されたレベルに達すると、現在のバーのOpen[i]価格+トリガー(同じオープン価格に、閉じたバーの期間[i-1]で計算したMyATRをかけたもの)で売買ポジションが一度オープンされます。 こちらは、WellLabを例にmql4で得たいものを示しています。 現場の資料を調べ、アナログを作ろうとした。 MyATR = ((High[0] - Low[0])/Low[0]); BT = Open[0] + Open[0]*iMAOnArray(MyATR ,0,PerB,0,MODE_SMA,1); ST = Open[0] - Open[0]*iMAOnArray((MyATR ,0,PerS,0,MODE_SMA,1); if (Ask >= BT) // Если разница между { // Opn_B=true; // Критерий откр. Buy Cls_S=true; // Критерий закр. Sell } if (Bid <= ST) // Если разница между { // Opn_S=true; // Критерий откр. Sell Cls_B=true; // Критерий закр. Buy } 結果:注文が山積みになっているのですが、どのような条件を追加(または変更)すれば、指定したレベルで一度だけ注文が執行されるようになるのか、ご教示ください。 Alexey Subbotin 2010.06.01 20:26 #5870 注:iMAOnArray関数の最初のパラメータは配列でなければならず、MyATRはスカラーである。正しく理解するためには 1. double MyATR[]を宣言する。 2. 配列のサイズをArrayResize(MyATR,PerB)に設定します。 3. 配列を埋める for(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i]; インデックス i は閉じたバーだけが 必要なので 1 から開始する。 4. この後、iMAOnArray(MyATR,0,PerB,0,MODE_SMA,0) を読みます。ここでは、ステップ3でシフトha1をすでに考慮したので、最後のパラメータは0です。 動作確認をしてみてください、もしかしたらこの部分にエラーがあるかもしれません。 1...580581582583584585586587588589590591592593594...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
例
ここでは、私の選択した変数はdouble 型ですが、iMAでは int 値が必要なところ(MAの周期として)でその値が使用されます。
問題は、この使い方が正しいのか、それとも値をint 型に変換する必要があるのか、ということです。
構わないのですが、動作例やリンクはありますか?
計算結果であるdoubleの 値をintの 代用値としてさらに計算することは可能かどうか教えてください。例ここでは、私の選択した変数は
double 型ですが、iMAでは int 値が必要なところ(MAの周期として)でその値が使用されます。このような使い方は正しいのでしょうか?それとも
int 型への変換が必要なのでしょうか?
変換は端数部分を切り落とすだけで自動的に行われます。私が見たこの使用法の唯一の制限は、配列のインデックスにdoubleを入れることができないことです。
もう1つ質問です。
コンストラクション
は動作しません。その値をチャートに表示する場合、それらはすべて同じ値を持つ。
MA200_DIN、MA200_UP、MA200_DNは1.4118、MA200_UP、MA200_DNは1.4118
MA5_DIN, MA5_UP, MA5_DNは1.4106です。
レベル+20点、-20点の計算式がうまくいかないことが判明。
私は何を間違えているのだろう?
マトロスキンが言ったように、あなたは愚か者です...。:)
コードを教えていただくか、タスクを設定していただければ、修正します
WelsLabでは、問題のアナログは次のようになります。
MyATR = SMA.Series(((High-Low)/Low), PerB)[i-1] ;
if (BuyAtStop(i,(Open[i] + Open[i]*MyATR), ""))。;
すなわち、バーの開始時にストップポジションが設定され、指定されたレベルに達すると、現在のバーのOpen[i]価格+トリガー(同じオープン価格に、閉じたバーの期間[i-1]で計算したMyATRをかけたもの)で売買ポジションが一度オープンされます。
こちらは、WellLabを例にmql4で得たいものを示しています。
現場の資料を調べ、アナログを作ろうとした。
結果:注文が山積みになっているのですが、どのような条件を追加(または変更)すれば、指定したレベルで一度だけ注文が執行されるようになるのか、ご教示ください。
注:iMAOnArray関数の最初のパラメータは配列でなければならず、MyATRはスカラーである。正しく理解するためには
1. double MyATR[]を宣言する。
2. 配列のサイズをArrayResize(MyATR,PerB)に設定します。
3. 配列を埋める for(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i]; インデックス i は閉じたバーだけが 必要なので 1 から開始する。
4. この後、iMAOnArray(MyATR,0,PerB,0,MODE_SMA,0) を読みます。ここでは、ステップ3でシフトha1をすでに考慮したので、最後のパラメータは0です。
動作確認をしてみてください、もしかしたらこの部分にエラーがあるかもしれません。