初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 202 1...195196197198199200201202203204205206207208209...260 新しいコメント Vladimir Simakov 2020.05.11 10:58 #2011 Yurij Kozhevnikov: = これは、私が置換原理を正しく理解していれば、そうなるようです。 中括弧の後に余分なセミコロンがある。そして、他に何を指しているのかは不明です。 マクロ展開を自動化してどうなるかを簡単に確認する方法がないようなのが残念です。自分でスクリプトを作れれば別ですが。 ありがとうございました。マクロでwhileの後にセミコロンがないのは理由があります。 マクロは良いものですが、善と悪の境界線は、彼らの場合、女性以上に細かいです)))とても、慎重に扱わなければならないのです。そして、そう、私の例では、';'ではなく、まさにelseで、;を削除した後に、マクロにあるifを参照し始めたのです。 私はマクロが得意なので、あなたのようなケースは、もう1年半くらい使うのを諦めています、最適なんですけどね。 inline bool CheckRead(){ ... } if (!CheckRead()) return; Yurij Kozhevnikov 2020.05.11 11:11 #2012 ただし、ここにはインラインに関する記述が見当たらない。 C++は知らないし。 Viktor Timofeev 2020.05.12 18:13 #2013 こんにちは! 助けてください 注文を開いたり変更したりするためのかなり簡単なコードがあります。OrderSend, OrderSelect, OrderModify の各関数は、ループに入れられ、試行錯誤の間にわずかな遅延が発生します。通信エラーなどを最小限にするため 注文が正常に開始され、StopLossの変更に成功し、TakeProfitの変更に成功する、という奇妙なことが起こります。しかし、TPを設定するとStopLossがゼロになってしまう。その理由がわからない。 以下、この部分のコードです。 send = 5; //注文を設定する最大試行回数 tick=0です。 sendschet=0; //トライカウンタ while(!tick && sendschet<=send) { tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0,0.0,komm,MagNum,0,Yellow)。 sendschet++; Sleep(1000); //次の試行までの時間を1秒遅らせる } select = 5; //注文を選択する最大試行回数 slschet=0; //オーダー選択用トライカウンタ while(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=select) { slschet++です。 Sleep(500); //次の試行まで0.5秒待つ } if(slschet<select) //試行回数が最大値より少ない場合、注文の選択が成功したことを意味します。 { modify = 5; //注文を変更する最大試行回数 mdschet=0です。 while(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Yellow) && mdschet<=modify) { mdschet++です。 Sleep(500); //次の試行まで0.5秒待つ } *ここではすべてうまくいっています。 mdschet=0; //TPを変更する前にカウンタをリセットする。 while(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Digits),0,Yellow) && mdschet<=modify) { mdschet++です。 Sleep(500)です。 } } *TPは正常に設定されているが、SLはすでに0.0に等しいので、OrderStopLoss()は0.0に等しいことが判明している。 注文の選び方は変わっていないのですが。 SLとTPを設定する間にもう一度OrderSelectを追加すると、すべてがうまくいくようです。しかし、それは論理的に矛盾している。 この度は、ご協力いただきありがとうございました。 Questions from Beginners MQL4 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 アドバイザーの戦略リファイン Oleg_Ko 2020.05.12 23:38 #2014 こんにちは。 動的配列の サイズを変更する場合の対処法を教えてください。 例えば、私が配列を設定するとします。 int DB[][8]; そして、ループ内の最初のサブルーチンで、おそらく数回(これについては質問はありません -- 今のところ意図したとおりに動作しています)。 ushort i = 0; ArrayResize(DB,i+1); 次のサブルーチンでは、ループ内の最初の次元に要素を追加することにします。事前に何本かわからない。あらかじめ次元を宣言する場合よりも遅くなるのはわかる。でも、年間500枚までの追加では、差はつかないと思います。 問題は、このサブルーチンで、既存の配列のサイズを調べるにはどうしたらいいかということです。それを基本サイズとして、新たに1つの値を追加すること。 ArraySize()をとって8で割ること?それとも、もっと私に合った他の機能があるのでしょうか? ありがとうございました。 Artyom Trishkin 2020.05.13 06:37 #2015 Oleg_Ko: こんにちは。 動的配列の サイズを変更する場合の対処法を教えてください。 例えば、私が配列を設定するとします。 そして、ループ内の最初のサブルーチンで、おそらく数回(これについては質問はありません -- 今のところ意図したとおりに動作しています)。 次のサブルーチンでは、ループ内の最初の次元に要素を追加することにします。事前に何本かわからない。あらかじめ次元を宣言する場合よりも遅くなるのはわかる。でも、年間500枚までの追加では、差はつかないと思います。 問題は、このサブルーチンで、既存の配列のサイズを調べるにはどうしたらいいかということです。それを基本サイズとして、新たに1つの値を追加すること。 ArraySize()をとって8で割ること?それとも、もっと私に合った他の機能があるのでしょうか? ありがとうございました。 ArrayRange() Документация по MQL5: Операции с массивами / ArrayRange www.mql5.com Операции с массивами / ArrayRange - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Oleg_Ko 2020.05.13 14:43 #2016 Artyom Trishkin: ArrayRange() アルテム ありがとうございます。 radywek 2020.05.14 04:36 #2017 こんにちは。 MT4での取引は長い間していなかったのですが、またやってみようと思いました。以前は添付のスクリプトを使用していましたが、現在では実行できません。 ファイル: RiskAdvisor.mq4 12 kb Nauris Zukas 2020.05.15 11:39 #2018 Nauris Zukas: こんにちは。 任意の時間帯の配列の要素 数をすぐにCopyHighで知る方法はないでしょうか? 自分で答える、もしかしたら誰かが検索エンジンでこの質問に行き当たるかもしれない。 SeriesInfoInteger(symbol_name,timeframe,SERIES_BARS_COUNT); Artyom Trishkin 2020.05.15 18:07 #2019 Nauris Zukas:自分で答える、もしかしたら誰かが検索エンジンでこの質問に行き当たるかもしれない。 Bars()、iBars()も。 Nauris Zukas 2020.05.16 09:09 #2020 Artyom Trishkin: Bars()、iBars()も。 Bars()では、どの時間 帯の配列要素 数も調べることはできず、現在のグラフのみです。 1...195196197198199200201202203204205206207208209...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
=
これは、私が置換原理を正しく理解していれば、そうなるようです。
中括弧の後に余分なセミコロンがある。そして、他に何を指しているのかは不明です。
マクロ展開を自動化してどうなるかを簡単に確認する方法がないようなのが残念です。自分でスクリプトを作れれば別ですが。
ありがとうございました。マクロでwhileの後にセミコロンがないのは理由があります。
マクロは良いものですが、善と悪の境界線は、彼らの場合、女性以上に細かいです)))とても、慎重に扱わなければならないのです。そして、そう、私の例では、';'ではなく、まさにelseで、;を削除した後に、マクロにあるifを参照し始めたのです。
私はマクロが得意なので、あなたのようなケースは、もう1年半くらい使うのを諦めています、最適なんですけどね。
ただし、ここにはインラインに関する記述が見当たらない。
C++は知らないし。
こんにちは! 助けてください
注文を開いたり変更したりするためのかなり簡単なコードがあります。OrderSend, OrderSelect, OrderModify の各関数は、ループに入れられ、試行錯誤の間にわずかな遅延が発生します。通信エラーなどを最小限にするため
注文が正常に開始され、StopLossの変更に成功し、TakeProfitの変更に成功する、という奇妙なことが起こります。しかし、TPを設定するとStopLossがゼロになってしまう。その理由がわからない。
以下、この部分のコードです。
send = 5; //注文を設定する最大試行回数
tick=0です。
sendschet=0; //トライカウンタ
while(!tick && sendschet<=send)
{
tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0,0.0,komm,MagNum,0,Yellow)。
sendschet++;
Sleep(1000); //次の試行までの時間を1秒遅らせる
}
select = 5; //注文を選択する最大試行回数
slschet=0; //オーダー選択用トライカウンタ
while(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=select)
{
slschet++です。
Sleep(500); //次の試行まで0.5秒待つ
}
if(slschet<select) //試行回数が最大値より少ない場合、注文の選択が成功したことを意味します。
{
modify = 5; //注文を変更する最大試行回数
mdschet=0です。
while(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Yellow)
&& mdschet<=modify)
{
mdschet++です。
Sleep(500); //次の試行まで0.5秒待つ
}
*ここではすべてうまくいっています。
mdschet=0; //TPを変更する前にカウンタをリセットする。
while(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Digits),0,Yellow)
&& mdschet<=modify)
{
mdschet++です。
Sleep(500)です。
}
}
*TPは正常に設定されているが、SLはすでに0.0に等しいので、OrderStopLoss()は0.0に等しいことが判明している。
注文の選び方は変わっていないのですが。
SLとTPを設定する間にもう一度OrderSelectを追加すると、すべてがうまくいくようです。しかし、それは論理的に矛盾している。
この度は、ご協力いただきありがとうございました。
こんにちは。
動的配列の サイズを変更する場合の対処法を教えてください。
例えば、私が配列を設定するとします。
そして、ループ内の最初のサブルーチンで、おそらく数回(これについては質問はありません -- 今のところ意図したとおりに動作しています)。
次のサブルーチンでは、ループ内の最初の次元に要素を追加することにします。事前に何本かわからない。あらかじめ次元を宣言する場合よりも遅くなるのはわかる。でも、年間500枚までの追加では、差はつかないと思います。
問題は、このサブルーチンで、既存の配列のサイズを調べるにはどうしたらいいかということです。それを基本サイズとして、新たに1つの値を追加すること。
ArraySize()をとって8で割ること?それとも、もっと私に合った他の機能があるのでしょうか?
ありがとうございました。
こんにちは。
動的配列の サイズを変更する場合の対処法を教えてください。
例えば、私が配列を設定するとします。
そして、ループ内の最初のサブルーチンで、おそらく数回(これについては質問はありません -- 今のところ意図したとおりに動作しています)。
次のサブルーチンでは、ループ内の最初の次元に要素を追加することにします。事前に何本かわからない。あらかじめ次元を宣言する場合よりも遅くなるのはわかる。でも、年間500枚までの追加では、差はつかないと思います。
問題は、このサブルーチンで、既存の配列のサイズを調べるにはどうしたらいいかということです。それを基本サイズとして、新たに1つの値を追加すること。
ArraySize()をとって8で割ること?それとも、もっと私に合った他の機能があるのでしょうか?
ありがとうございました。
ArrayRange()
ArrayRange()
こんにちは。
MT4での取引は長い間していなかったのですが、またやってみようと思いました。以前は添付のスクリプトを使用していましたが、現在では実行できません。
こんにちは。
任意の時間帯の配列の要素 数をすぐにCopyHighで知る方法はないでしょうか?
自分で答える、もしかしたら誰かが検索エンジンでこの質問に行き当たるかもしれない。
自分で答える、もしかしたら誰かが検索エンジンでこの質問に行き当たるかもしれない。
Bars()、iBars()も。
Bars()では、どの時間 帯の配列要素 数も調べることはできず、現在のグラフのみです。