初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1097 1...109010911092109310941095109610971098109911001101110211031104...1503 新しいコメント fxsaber 2019.07.21 10:12 #10961 Vladimir Karputov: 取引注文の 執行後、注文ではなくポジションが表示される! そのような状況を再現できるサーバーがあります PositionGetTicket(0) = 73401069 PositionSelect(_Symbol) = true OrderGetTicket(0) = 73401069 PositionsTotal() = 1 OrdersTotal() = 1, ORDER_STATE_STARTED つまり、次のような順番で端末に同時に入って いるのです。 #73401069 2019.06.08 21:42:42 buy 1.00 BO Volatility 100 Index 0.5150 0.0000 0.0000 0.5150 0.00 0.00 0.00 Hello! 0 と同じ位置から #73401069 2019.06.08 21:42:42 buy 1.00 BO Volatility 100 Index 0.5150 0.0000 0.0000 0.5150 0.00 0.00 0.00 Hello! 0 Igor Makanu 2019.07.21 10:33 #10962 Vladimir Karputov: だから、まず自分が何をしているのか、何を得たいのかを言葉で表現してください。ORDERの代わりに「買付取引注文」「売付取引注文」を使用します。その結果、「買いポジション」または「売りポジション」になります。 以下はMQL4で書かれたコードですが、テスター版、つまり最小限のチェックなどに興味があります。 //+------------------------------------------------------------------+ //| tst__.mq4 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict int ticket1=-1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ticket1=-1; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(ticket1<0) ticket1=OrderSend(_Symbol,OP_BUY,0.1,Ask,30,NormalizeDouble(Ask-100*_Point,_Digits),NormalizeDouble(Ask+100*_Point,_Digits)); if(OrderSelect(ticket1,SELECT_BY_TICKET)) { if(OrderCloseTime()>0) { int cmd=OrderType()==OP_BUY ? OP_SELL : OP_BUY; double tp = cmd==OP_BUY ? NormalizeDouble(Ask+100*_Point,_Digits) : NormalizeDouble(Bid-100*_Point,_Digits); double sl = cmd==OP_BUY ? NormalizeDouble(Ask-100*_Point,_Digits) : NormalizeDouble(Bid+100*_Point,_Digits); ticket1=OrderSend(_Symbol,cmd,0.1,Ask,30,sl,tp); } } } //+------------------------------------------------------------------+ TSの本質:あなたは最初のスタートで買い注文を開き、注文のチケット(チケットでの作業)を覚えているときに、順序が閉じている場合は、チェック - 注文の種類があったと反対の順序を入れて、チケットなどを覚えてラウンドを見てください。 SB CTradeを使用してMQL5で同様の例を再現してほしい。 Alexey Viktorov 2019.07.21 10:43 #10963 Igor Makanu: OK、コード内の例に議論を単純化しましょう、ここにMQL4で書かれたコードがあります - 私はテスター用のバージョンに興味があります、すなわち、最小限のチェックなどです。 TSの本質:あなたが最初の開始時に買い注文を開き、注文のチケット(チケットでの作業)を覚えているときに、順序が閉じている場合は、チェック - 注文の種類を見て、反対の順序を置くとチケットなどを覚えているラウンド SB CTradeを使用してMQL5で同様の例を再現してほしい。 ここで小太鼓が感想を言います)))) Igor Makanu 2019.07.21 10:51 #10964 Alexey Viktorov: 今度はリトルドラマーがあなたのことをどう思っているか教えてくれます)))) しかし、チケット番号がオープンかクローズかを知る必要があります。クローズであれば、クローズしたポジションが どのような種類のトレードオーダー であったかを知る必要があります。 (太字は-とにかく注文です!-TCヘッダーアカウントのため)。 fxsaber 2019.07.21 10:54 #10965 Igor Makanu:私はMQL4でコードを書きましたが、テスターのバージョン、つまりチェックの最小化などに興味があります。 2回目のOrderSendには エラーが含まれています。そして、ノーマライゼーションは不要です。フォーラムでは(に限らず)、コードは短い方が読みやすいのです。 void OnTick() { static int ticket1 = -1; if(ticket1<0) ticket1=OrderSend(_Symbol,OP_BUY,0.1,Ask,30,Ask-100*_Point,Ask+100*_Point); if(OrderSelect(ticket1,SELECT_BY_TICKET) && OrderCloseTime()) { int cmd=1-OrderType(); double open = cmd ? Bid : Ask; double tp = open - (cmd ? 1 : -1) * 100 * _Point; double sl = open + (cmd ? 1 : -1) * 100 * _Point; ticket1=OrderSend(_Symbol,cmd,0.1,open,30,sl,tp); } } CTrade SBを使用してMQL5で同様の例を再現してほしい。 CTrade SBを使用してMQL5で同様の例を再現して欲しいのですが。 Vladimir Karputov 2019.07.21 10:56 #10966 つまり、基本はPOSITION_IDENTIFIER ですが、ポジションチケットではありません。これは、ネットだからこそ重要な ことです。 position_identifier ポジション識別子は一意の番号であり、新しく開設されたポジションに割り当てられ、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。 ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。 ネッティングモード(単一イン/アウト取引)でポジションを反転させる場合、ポジションのPOSITION_IDENTIFIER識別子は変更されません。ただし、POSITION_TICKETは逆転を招いたオーダーチケットに変更されます。ヘッジモードでは、ポジションの反転はありません。 長 そこで、位置の識別子(POSITION_IDENTIFIER)を記録しておく必要がある。 さて、より正確なタスクです。最初の実行で、買いポジションをオープンし、それを記憶します(警告:チケットではなく、ポジションIDを記憶すべきです)。例えば、昔、買いポジションがあり、それがクローズされた場合、すぐに売りポジションをオープンすることになります。 これで問題解決はかなり楽になる。 fxsaber 2019.07.21 11:00 #10967 Vladimir Karputov: これで問題解決はかなり楽になる。 例文を書くときは、少し先を見て書いて ください。 Igor Makanu 2019.07.21 11:06 #10968 fxsaber: 2回目のOrderSendにはエラーが含まれています。ノーマライゼーションは必要ない。フォーラムでは(に限らず)、コードは短い方が読みやすいんです。 はい、わかりました、私はその場でコードを書きました - テスターで実行 - それは動作し、フォーラムにコピーします。 fxsaber もうちょっと頑張らないとね。 だからフォーラムで相談したんです!- SB CTradeの能力を推定することにしました。初歩的なタスクを例として取り上げましたが、これまでのところ結果はマイナスでした ウラジーミル・カルプトフ これで、問題解決はぐっと楽になるはずです。 フォーラムのアクティブなメンバーとしてあなたを知っています。 私の、というか修正したfxsaberの コードを、MQL5下のCTrade Serverを使って再現していただけませんか? fxsaber 2019.07.21 11:09 #10969 Igor Makanu: はい、わかりました、私はその場でコードを書きました - テスターで実行 - それは動作し、フォーラムにコピーします。 私はEAを書き始めるとき、いつも白紙から始めます(お勧めします)。おそらく、ほとんどの場合、On-functionsを含むヘッダーから始まります。 fxsaber 2019.07.21 11:16 #10970 Igor Makanu: だからフォーラムで相談したんです!- 私はCTradeの能力を評価することにしました。初歩的なタスクを例として取り上げましたが、これまでのところ結果はマイナスでした。 さらに短い例もあります。 トレーディング、自動売買システム、トレーディングストラテジーのテストに関するフォーラム mql5言語の特徴、複雑な仕組みとコツ fxsaber さん 2018.02.15 11:48 OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0)); テスターでないとMT5では対応しにくい。 1...109010911092109310941095109610971098109911001101110211031104...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
取引注文の 執行後、注文ではなくポジションが表示される!
そのような状況を再現できるサーバーがあります
つまり、次のような順番で端末に同時に入って いるのです。
と同じ位置から
だから、まず自分が何をしているのか、何を得たいのかを言葉で表現してください。ORDERの代わりに「買付取引注文」「売付取引注文」を使用します。その結果、「買いポジション」または「売りポジション」になります。
以下はMQL4で書かれたコードですが、テスター版、つまり最小限のチェックなどに興味があります。
TSの本質:あなたは最初のスタートで買い注文を開き、注文のチケット(チケットでの作業)を覚えているときに、順序が閉じている場合は、チェック - 注文の種類があったと反対の順序を入れて、チケットなどを覚えてラウンドを見てください。
SB CTradeを使用してMQL5で同様の例を再現してほしい。
OK、コード内の例に議論を単純化しましょう、ここにMQL4で書かれたコードがあります - 私はテスター用のバージョンに興味があります、すなわち、最小限のチェックなどです。
TSの本質:あなたが最初の開始時に買い注文を開き、注文のチケット(チケットでの作業)を覚えているときに、順序が閉じている場合は、チェック - 注文の種類を見て、反対の順序を置くとチケットなどを覚えているラウンド
SB CTradeを使用してMQL5で同様の例を再現してほしい。
今度はリトルドラマーがあなたのことをどう思っているか教えてくれます))))
しかし、チケット番号がオープンかクローズかを知る必要があります。クローズであれば、クローズしたポジションが どのような種類のトレードオーダー であったかを知る必要があります。
(太字は-とにかく注文です!-TCヘッダーアカウントのため)。
私はMQL4でコードを書きましたが、テスターのバージョン、つまりチェックの最小化などに興味があります。
CTrade SBを使用してMQL5で同様の例を再現してほしい。
CTrade SBを使用してMQL5で同様の例を再現して欲しいのですが。
つまり、基本はPOSITION_IDENTIFIER ですが、ポジションチケットではありません。これは、ネットだからこそ重要な ことです。
position_identifier
ポジション識別子は一意の番号であり、新しく開設されたポジションに割り当てられ、その生涯を通じて変更されることはありません。ポジションが開設された注文のチケットに対応します。
ポジション識別子は、各注文(ORDER_POSITION_ID)と、それをオープン、変更、クローズした各取引(DEAL_POSITION_ID)に指定されています。このプロパティは、ポジションに関連する注文や取引を検索するために使用します。
ネッティングモード(単一イン/アウト取引)でポジションを反転させる場合、ポジションのPOSITION_IDENTIFIER識別子は変更されません。ただし、POSITION_TICKETは逆転を招いたオーダーチケットに変更されます。ヘッジモードでは、ポジションの反転はありません。
長
そこで、位置の識別子(POSITION_IDENTIFIER)を記録しておく必要がある。
さて、より正確なタスクです。最初の実行で、買いポジションをオープンし、それを記憶します(警告:チケットではなく、ポジションIDを記憶すべきです)。例えば、昔、買いポジションがあり、それがクローズされた場合、すぐに売りポジションをオープンすることになります。
これで問題解決はかなり楽になる。
これで問題解決はかなり楽になる。
例文を書くときは、少し先を見て書いて ください。
2回目のOrderSendにはエラーが含まれています。ノーマライゼーションは必要ない。フォーラムでは(に限らず)、コードは短い方が読みやすいんです。
はい、わかりました、私はその場でコードを書きました - テスターで実行 - それは動作し、フォーラムにコピーします。
もうちょっと頑張らないとね。
だからフォーラムで相談したんです!- SB CTradeの能力を推定することにしました。初歩的なタスクを例として取り上げましたが、これまでのところ結果はマイナスでした
これで、問題解決はぐっと楽になるはずです。
フォーラムのアクティブなメンバーとしてあなたを知っています。 私の、というか修正したfxsaberの コードを、MQL5下のCTrade Serverを使って再現していただけませんか?
はい、わかりました、私はその場でコードを書きました - テスターで実行 - それは動作し、フォーラムにコピーします。
私はEAを書き始めるとき、いつも白紙から始めます(お勧めします)。おそらく、ほとんどの場合、On-functionsを含むヘッダーから始まります。
だからフォーラムで相談したんです!- 私はCTradeの能力を評価することにしました。初歩的なタスクを例として取り上げましたが、これまでのところ結果はマイナスでした。
さらに短い例もあります。
トレーディング、自動売買システム、トレーディングストラテジーのテストに関するフォーラム
mql5言語の特徴、複雑な仕組みとコツ
fxsaber さん 2018.02.15 11:48
テスターでないとMT5では対応しにくい。