初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 441 1...434435436437438439440441442443444445446447448...1504 新しいコメント Aleksey Vyazmikin 2015.09.18 08:57 #4401 何が間違っているのか、教えていただけませんか?価格が最後にMAを越えてから、ゼロバーを除いて何本経過したかを計算する必要があります。 if(Bars>1400) { int Stop; double MATcycle; for(int i=0;i!=1000 || Stop!=1; i++) { MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1); if(MATcycle<High[i+1] && MATcycle>Low[i+1]) { Stop=1; Print("MATcycle=",MATcycle," i=",i); } else return (0); } 削除済み 2015.09.18 09:31 #4402 -Aleks-:何が間違っているのか、教えていただけませんか?あなたは - 価格が最後にMAを越えてから何バーが経過したかを数える必要があります - ゼロバーを含まず。 if(Bars>1400) { int Stop; double MATcycle; for(int i=0;i<1000 || Stop==1; i++) { MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1); if(MATcycle<High[i+1] && MATcycle>Low[i+1]) { Stop=1; Print("MATcycle=",MATcycle," i=",i); } else return (0); }私が理解する限り、クロスを識別してstop=1を設定した時点で、サイクルから即座に終了があります。OK、それならさらに踏み込んで、クロスが発生したローソクの番号を覚えておく必要があります。すなわち自分で書いた方が簡単です。for( int i = 1; i < 1000; i++ ) { iMaValue = ...; // Значение МА на i свече if( iMaValue < High[ i ] && iMaValue > low[ i ] ) { num = i; // Запоминаем номер свечи, на котором произошло пересечение break; // Выходим из цикла } }これは、あなたがキャンドルの番号を特定したことです。数= 2と現在のものを考慮しない場合は、交差1キャンドルが形成されたので(またはあなたが好きなようにそれを解釈する)。 Aleksey Vyazmikin 2015.09.18 10:17 #4403 Tapochun:私が理解する限り、クロスオーバーを確認し、stop=1を設定した時点で、サイクルから即座に終了があります。よし、それならもっと踏み込んで、クロスオーバーが発生したローソク足の番号を覚えておく必要がありますね。すなわち自分で書いた方が簡単です。これは、あなたがキャンドルの番号を特定したことです。数字=2で現在を無視すれば、クロスから1本のローソク足が形成されたことになる(まあ、好きなように解釈すればいいのだが)。ありがとうございます。int Stop=0; if(Bars>1400) { double MATcycle; for(int i=1;(i!=1000 || Stop==0); i++) { MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i); if(MATcycle<=High[i] && MATcycle>=Low[i]) { Print("MATcycle=",MATcycle," i=",i); Stop=i; break; } } } Ruslan Kuchma 2015.09.18 10:35 #4404 alph: リアルなテスターフィギュアなのかどうか、教えてください。また、3,000円のデポで1年というのは、良い結果なのか悪い結果なのか? 答えは簡単で、EAをテストしている場合、テスターの性能は本物ではありません。ストラテジーテスターは、トレーダーがATCのパフォーマンスをチェックしたり、オンラインでマニュアルストラテジーをテストするために使用します。 削除済み 2015.09.18 10:54 #4405 -Aleks-:ありがとうございました。int Stop=0; if(Bars>1400) { double MATcycle; for(int i=1;(i!=1000 || Stop==0); i++) { MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i); if(MATcycle<=High[i] && MATcycle>=Low[i]) { Print("MATcycle=",MATcycle," i=",i); Stop=i; break; } } }そのように書いてはいけません。なぜなら、最後の1000バーの間にクロスオーバーがなかった場合、まず、ループが継続され、次に、ストーリーが終了してクロスオーバーがない場合、ストップ=0なので、ループからの出口がないため、ループ/エラーになることがあります。上に書いたような書き方をしたほうがいいんです。 Aleksey Vyazmikin 2015.09.18 12:35 #4406 Tapochun:そのように書いてはいけません。なぜなら、最後の1000バーの間にクロスオーバーがなかった場合、第一に、サイクルは継続され、第二に、ループ/エラーになる可能性があります。ストーリーが終了してクロスオーバーが発生しなかった場合、Stop = 0なので、サイクルからの出口がないことになるからです。上に書いたような書き方をしたほうがいいんです。 or "記号は機能しません。式によると、ループは1000小節でオーバーシュートするか、必要な結果が見つかり次第、終了します。それとも、必要な結果、つまりMAが交差すれば、1000バーより前に終わるのでしょうか? 削除済み 2015.09.18 13:59 #4407 -Aleks-: or」記号は機能しないのでしょうか - 条件では、1000本のバーに達するか、目的の結果が見つかり次第終了するとあります。またはそれは望ましい結果、すなわちMAの交差の場合、1000バー前に終わるのだろうか?|| は、括弧内の条件の少なくとも1つが真であれば、サイクルを繰り返すことを意味します。 したがって、i >= 1000 であっても stop = 0 であれば、サイクルは続き、i は増分し続けるので、(履歴から外れた場合に)間違った MA 値を引き起こすことになります。そして、break演算 子は、目的の結果が出たときにループを終了させる役割を担っている。 Aleksey Vyazmikin 2015.09.18 14:22 #4408 Tapochun:|| は、括弧内の条件の少なくとも一つが真であれば、ループが繰り返されることを意味します。したがって、i >= 1000 であっても stop = 0 であれば、ループは継続し、i は増分し続け、(履歴に異常値がある場合)間違った MA 値を引き起こすことになります。また、break演算 子は、目的の結果を見つけたときにループを終了させる役割を担っている。 了解です!分かりやすい説明ありがとうございます。どちらかの条件が悪いとループが止まってしまうと思ったのですが...。 Николай Никитюк 2015.09.18 23:57 #4409 こんにちは2015.09.19_02:13AM MSCです。ArrayResize()関数の 中で、コンパイラは次のように記述しています。 は,配列のサイズと逆である.int と書いても書かなくても,カンマが必要である.intを書かないと、「-」と表示されます。 タイプ無しで変更しました。そして、&参照と角括弧を削除したところ、うまくいきました。 警告:普通に書いた場合、 -- コンパイラが書いた場合:識別子を隠す グローバルレベルの宣言です。そして、グローバルレベルでの識別子宣言を削除したところ、-が書き込まれました。 エラー、未宣言の識別子です。そして、配列のHigh[]とLow[]をHighP[]とLowP[]に変更しました。ない を助けました。コンパイラが同じことを書いている。02:27 MSC。スクリーンショットのファイルを添付します。 ファイル: 4juvbxf_7yy4ltx_mo3w58r551k.png 117 kb Vladimir Karputov 2015.09.19 02:16 #4410 Николай Никитюк:こんにちは2015.09.19_02:13AM MSCです。ArrayResize()関数の 中で、コンパイラはとにかくこう書きます。 は,配列のサイズと逆である.int と書いても書かなくても,カンマが必要である.intを書かないと、「-」と表示されます。 "タイプなし "です。そして、&参照と角括弧を削除しました〜!助かりました。 警告:普通に書いた場合、 -- コンパイラが書いた場合:識別子を隠す グローバルレベルの宣言です。そして、グローバルレベルでの識別子宣言を削除したところ、-が書き込まれました。 エラー、未宣言の識別子です。そして、配列のHigh[]とLow[]をHighP[]とLowP[]に変更しました。ない を助けました。コンパイラが同じことを書いている。02:27 MSC。スクリーンショットのファイルを添付します。 画像はこのように挿入してください:フォーラム:画像の挿入方法アドバイスされていることを全く読まないのですか? トレーディング、自動売買システム、ストラテジーテストに関するフォーラム 初心者の方からの質問 カルプトフ ウラジミール さん 2015.09.17 18:46ArrayResize のスペルが間違っている。そうあるべきなのです。 //--- устанавливаю размеры массивов с запасом (reserve) ArrayResize(mrate,16,9); ArrayResize(maVal,16,9); ArrayResize(fVal,3,2); ArrayResize(zVal,3); そして、配列に時系列フラグを設定すると、次のようになります。//--- массив максимальных цен баров ArraySetAsSeries(High,true); //--- ArraySetAsSeries(Low,true); 1...434435436437438439440441442443444445446447448...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
何が間違っているのか、教えていただけませんか?
価格が最後にMAを越えてから、ゼロバーを除いて何本経過したかを計算する必要があります。
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i!=1000 || Stop!=1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
何が間違っているのか、教えていただけませんか?
あなたは - 価格が最後にMAを越えてから何バーが経過したかを数える必要があります - ゼロバーを含まず。
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i<1000 || Stop==1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
私が理解する限り、クロスを識別してstop=1を設定した時点で、サイクルから即座に終了があります。OK、それならさらに踏み込んで、クロスが発生したローソクの番号を覚えておく必要があります。すなわち
自分で書いた方が簡単です。
これは、あなたがキャンドルの番号を特定したことです。数= 2と現在のものを考慮しない場合は、交差1キャンドルが形成されたので(またはあなたが好きなようにそれを解釈する)。
私が理解する限り、クロスオーバーを確認し、stop=1を設定した時点で、サイクルから即座に終了があります。よし、それならもっと踏み込んで、クロスオーバーが発生したローソク足の番号を覚えておく必要がありますね。すなわち
自分で書いた方が簡単です。
これは、あなたがキャンドルの番号を特定したことです。数字=2で現在を無視すれば、クロスから1本のローソク足が形成されたことになる(まあ、好きなように解釈すればいいのだが)。
ありがとうございます。
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
リアルなテスターフィギュアなのかどうか、教えてください。また、3,000円のデポで1年というのは、良い結果なのか悪い結果なのか?
ありがとうございました。
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
そのように書いてはいけません。なぜなら、最後の1000バーの間にクロスオーバーがなかった場合、まず、ループが継続され、次に、ストーリーが終了してクロスオーバーがない場合、ストップ=0なので、ループからの出口がないため、ループ/エラーになることがあります。上に書いたような書き方をしたほうがいいんです。
そのように書いてはいけません。なぜなら、最後の1000バーの間にクロスオーバーがなかった場合、第一に、サイクルは継続され、第二に、ループ/エラーになる可能性があります。ストーリーが終了してクロスオーバーが発生しなかった場合、Stop = 0なので、サイクルからの出口がないことになるからです。上に書いたような書き方をしたほうがいいんです。
or」記号は機能しないのでしょうか - 条件では、1000本のバーに達するか、目的の結果が見つかり次第終了するとあります。またはそれは望ましい結果、すなわちMAの交差の場合、1000バー前に終わるのだろうか?
|| は、括弧内の条件の少なくとも一つが真であれば、ループが繰り返されることを意味します。したがって、i >= 1000 であっても stop = 0 であれば、ループは継続し、i は増分し続け、(履歴に異常値がある場合)間違った MA 値を引き起こすことになります。また、break演算 子は、目的の結果を見つけたときにループを終了させる役割を担っている。
こんにちは2015.09.19_02:13AM MSCです。ArrayResize()関数の 中で、コンパイラは次のように記述しています。
は,配列のサイズと逆である.int と書いても書かなくても,カンマが必要である.intを書かないと、「-」と表示されます。
タイプ無しで変更しました。そして、&参照と角括弧を削除したところ、うまくいきました。
警告:普通に書いた場合、 -- コンパイラが書いた場合:識別子を隠す
グローバルレベルの宣言です。そして、グローバルレベルでの識別子宣言を削除したところ、-が書き込まれました。
エラー、未宣言の識別子です。そして、配列のHigh[]とLow[]をHighP[]とLowP[]に変更しました。ない
を助けました。コンパイラが同じことを書いている。02:27 MSC。スクリーンショットのファイルを添付します。
こんにちは2015.09.19_02:13AM MSCです。ArrayResize()関数の 中で、コンパイラはとにかくこう書きます。
は,配列のサイズと逆である.int と書いても書かなくても,カンマが必要である.intを書かないと、「-」と表示されます。
"タイプなし "です。そして、&参照と角括弧を削除しました〜!助かりました。
警告:普通に書いた場合、 -- コンパイラが書いた場合:識別子を隠す
グローバルレベルの宣言です。そして、グローバルレベルでの識別子宣言を削除したところ、-が書き込まれました。
エラー、未宣言の識別子です。そして、配列のHigh[]とLow[]をHighP[]とLowP[]に変更しました。ない
を助けました。コンパイラが同じことを書いている。02:27 MSC。スクリーンショットのファイルを添付します。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
初心者の方からの質問
カルプトフ ウラジミール さん 2015.09.17 18:46