初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1402 1...139513961397139813991400140114021403140414051406140714081409...1503 新しいコメント Francois Dominique Izaak Huibregtse 2022.04.22 11:05 #14011 こんにちは。 私は、2つの終値を比較し、それに基づいて買いまたは売り注文を出す非常にシンプルなEAを作ろうとしています。 最初の注文はうまくいくのですが、条件が売りから買いに切り替わった途端、一度に複数の注文を出してしまいます。 m_tradeはCtradeオブジェクト です。 // Current position information bool Buy_openend = false; bool Sell_openend = false; double currentVolume = 0; if(PositionSelect(_Symbol) == true) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { Buy_openend = true; } if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) { Sell_openend = true; } currentVolume = PositionGetDouble(POSITION_VOLUME); } // Check for trade conditions bool SellCondition = close <= closeprev && bar[1].time == startTime; bool BuyCondition = close >= closeprev && bar[1].time == startTime; // Entering trade if(SellCondition) { if(Sell_openend) { Print("We already have a sell open"); return; } m_trade.Sell(TradeVolume+currentVolume,_Symbol,m_symbol.Ask(),NULL,NULL,NULL); } if(BuyCondition) { if(Buy_openend) { Print("We already have a buy open"); return; } m_trade.Buy(TradeVolume+currentVolume,_Symbol,m_symbol.Bid(),NULL,NULL,NULL); } Vladimir Karputov 2022.04.22 11:09 #14012 Divania111 Ctradeオブジェクト です。 startTime'時間をリセットする必要があることを忘れています。 Francois Dominique Izaak Huibregtse 2022.04.22 15:27 #14013 Vladimir Karputov #:startTime'の時間をリセットする必要があることを忘れています。 Vladimirさん、ありがとうございます!ヒントを元に修正してみます。 それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の注文の発注をチェックしているからです。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。 この考えは間違っているのでしょうか? Vladimir Karputov 2022.04.22 15:36 #14014 Divania111 # :ウラジミールさん、ありがとうございます!ヒントを元に修正してみます。それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の発注があるかどうかをチェックしています。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。この考えは間違っているのでしょうか? ORDERSを制御するのではなく、コード内のPOSITIONの番号と種類をチェックするのです。その上、あなたはポジションの扱いが間違っています(口座の種類がヘッジングの場合、'PositionSelect(_Symbol)'を使うのは間違いです)。あなたのアルゴリズムには重大な設計ミスがあります。 あなたがすべきこと 1.新しいバーの誕生時に排他的に動作します。新しいバーがない場合は、何もせず、不必要な動きをしないこと。 2.この項目は、項目1が完了した後に開示されます。 Marco Nicholas 2022.04.23 21:04 #14015 こんにちは。void OnTick()のCommentが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、より高速に動作します。 Nikita Chernyshov 2022.04.23 21:25 #14016 Marco Nicholas コメントが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、より高速に動作します。 はい、MT5では、かなり動作が遅くなります。 OnInitでは、初期化時に一度だけ動作し、それ以上は動作しない。 Fernando Carreiro 2022.04.23 21:46 #14017 Marco Nicholas Commentが EAを遅くしているのかどうか教えてください。int OnInit()に入れると、ずっと速く動作します。 Comment() 関数のことでしょうか? もしそうなら、それは明らかです。OnInit() では、コメントは一度だけ更新されますが、OnTick() では、コメントはすべてのティックで更新されることになるかもしれません。 解決策は、必要なときだけコメントを更新することです。静的なコメントであれば、OnInit() で更新し、OnDeinit() でクリアします。動的なコメントであれば、OnTick() で、変更する必要があるときだけコメントを更新します。 EDIT: この投稿は元々英語のフォーラムで行われました。 KUAGNRENRIJI 2022.04.24 10:32 #14018 先生方、こんにちは。クライアント側の SocketConnect() 関 数を 使用する際、 ユーザーの指示通りにパラメータを正しく埋めてもサーバーとの接続が確立できませんが、テストすると普通にサーバーが 使用できるようになります。 Sergey Li 2022.04.25 02:47 #14019 皆さん、ごきげんよう。 質問があります チケットから行を選択するためのSQLiteへの クエリを作成する方法。 データベースの構造は以下の通りである。 シンボルテキスト チケット - テキスト ピース・リアル s_l - 実数 t_p - 実数 チケットの文字列全体を構造体に取り込む必要があります。 Marco Nicholas 2022.04.25 08:25 #14020 こんにちは、switch()で同じPrintの代わりにComment() を使うことはできますか? 1...139513961397139813991400140114021403140414051406140714081409...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
私は、2つの終値を比較し、それに基づいて買いまたは売り注文を出す非常にシンプルなEAを作ろうとしています。
最初の注文はうまくいくのですが、条件が売りから買いに切り替わった途端、一度に複数の注文を出してしまいます。
m_tradeはCtradeオブジェクト です。
startTime'時間をリセットする必要があることを忘れています。
startTime'の時間をリセットする必要があることを忘れています。
Vladimirさん、ありがとうございます!ヒントを元に修正してみます。
それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の注文の発注をチェックしているからです。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。
この考えは間違っているのでしょうか?
ウラジミールさん、ありがとうございます!ヒントを元に修正してみます。
それでも、まだ驚いています。なぜなら、取引に入るためのif文の中で、同じ種類の既存の発注があるかどうかをチェックしています。もし、これが真であれば、注文は出さないはずです。そこで、このステートメントでは、同時に発注できるのは1種類だけだと思ったのです。
この考えは間違っているのでしょうか?
ORDERSを制御するのではなく、コード内のPOSITIONの番号と種類をチェックするのです。その上、あなたはポジションの扱いが間違っています(口座の種類がヘッジングの場合、'PositionSelect(_Symbol)'を使うのは間違いです)。あなたのアルゴリズムには重大な設計ミスがあります。
あなたがすべきこと
1.新しいバーの誕生時に排他的に動作します。新しいバーがない場合は、何もせず、不必要な動きをしないこと。
2.この項目は、項目1が完了した後に開示されます。
はい、MT5では、かなり動作が遅くなります。
OnInitでは、初期化時に一度だけ動作し、それ以上は動作しない。
Comment() 関数のことでしょうか?
もしそうなら、それは明らかです。OnInit() では、コメントは一度だけ更新されますが、OnTick() では、コメントはすべてのティックで更新されることになるかもしれません。
解決策は、必要なときだけコメントを更新することです。静的なコメントであれば、OnInit() で更新し、OnDeinit() でクリアします。動的なコメントであれば、OnTick() で、変更する必要があるときだけコメントを更新します。
EDIT: この投稿は元々英語のフォーラムで行われました。
皆さん、ごきげんよう。
質問があります
チケットから行を選択するためのSQLiteへの クエリを作成する方法。
データベースの構造は以下の通りである。
シンボルテキスト
チケット - テキスト
ピース・リアル
s_l - 実数
t_p - 実数
チケットの文字列全体を構造体に取り込む必要があります。