ライブラリ: MT4Orders - ページ 5 123456789101112...95 新しいコメント fxsaber 2016.11.04 14:16 #41 -Aleks-:エラーはほとんどなくなりましたが、1つだけ残っています:'OrderCloseBy' - 関数が定義されていません cPoza13-1.mqh 1885 8 //+------------------------------------------------------------------------------------------------------------------------------------+//| Возвращает TRUE, если один ордер закрылся другим//+------------------------------------------------------------------------------------------------------------------------------------+ bool cPoza::closeBy(int ticketB, int ticketA){ if(ticketB > 0 && ticketA > 0) { if(OrderCloseBy(ticketB, ticketA)) return true; else Print("Magic=", mMagic, " ",__FUNCTION__, " Встречное закрытие не вышло ticketB=", ticketB, " ticketA=", ticketA, " вызвало ошибку-", _LastError); } else return false; return false;}// 実現しないこと: // クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になったら。// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。このライブラリは自分のために書いたもので、CloseByは使っていません。だから実装していない。もしかしたら、スピードアップして追加するかもしれない。一時的な解決策として、ライブラリをインクルードする前に以下の行を追加してください。#ifdef __MQL5__ bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE ) { return(false); } #endif MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第25部): 取引サーバから返されたエラーの処理 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第10部): MQL4との互換性 - ポジションオープンイベントと指値注文発動イベント クロスプラットフォームEA:MQL5標準ライブラリからコンポーネントの再利用 Aleksey Vyazmikin 2016.11.04 14:20 #42 fxsaber:もちろん可能だ。私はその必要性を感じなかった。 どうやらそうすべきらしい。私はまた、平均化でグリッドを構築するとき、積極的に履歴を操作する必要があります。事実は、DCが注文の 最大数を制限していることであり、アカウントがグリッドを持つ15〜20のExpert Advisorを持っている場合、解決策は、注文の限界に近づいた瞬間にグリッドのいくつかを最小限に抑えることです。 Aleksey Vyazmikin 2016.11.04 14:22 #43 fxsaber:// 実現しないこと: // クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になれば。// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。 このライブラリは自分のために書いたもので、CloseByを使うことはない。だから実装していないんだ。多分、高速化したら、これも追加すると思う。それはとても良いことだ。CloseByは、計算されたポイントの位置の一部を固定するのに便利なんだ。 fxsaber 2016.11.04 14:24 #44 -Aleks-:また、平均化でグリッドを構築する際には、積極的に履歴を扱う必要があります。DCは注文の 最大数を制限しており、アカウントにグリッドを持つ15〜20のExpert Advisorsがある場合、解決策は、それぞれ注文の限界に近づいた時点でグリッドの一部が崩壊しているように見られ、我々はポジションの実際の財務結果を理解するために履歴を掘る必要があります。 次のビルドでは、CloseByとヒストリーアクセラレーションを追加する予定です。ただ、それが需要なのか(ライブラリが使用されている)、それとも念のための推奨なのかがわかりません。 Aleksey Vyazmikin 2016.11.04 14:25 #45 fxsaber:// 実現しないこと: // クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になったら。// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。このライブラリは自分のために書いたもので、CloseByを使うことはない。だから実装していないんだ。おそらく、スピードが上がり次第、追加すると思います。一時的な解決策として、ライブラリを有効にする前に以下の行を追加してください。#ifdef __MQL5__ bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE ) { return(false); } #endifありがとう - オーダーを扱う部分ではコンパイルが成功しました!言語の非互換性に起因するエラーの残りを解決します。 Aleksey Vyazmikin 2016.11.04 14:27 #46 fxsaber: 次のビルドでは、CloseByと履歴アクセラレーションを追加するつもりだ。ただ、これは需要がある(ライブラリーが使われている)のか、それとも念のための推奨なのかがわかりません。私はこれを使用しており、非常に興味深い結果が得られているが、まだ実際のアカウントでは 使用していない。 fxsaber 2016.11.07 08:31 #47 fxsaber: うまくいくでしょう!私はMT4Ordersで株式市場のすべてを行います。私はオープンポジションの数によって自分自身を制限しません。 しかし、MT4Ordersを介して証券取引所で履歴を扱うことはお勧めしません。つまり、MODE_TRADE - 問題なし、MODE_HISTORY -取引 所では不要です。 Maxim Dmitrievsky 2016.11.07 11:55 #48 証券取引所でストップロスを設定することはできませんが、取引を開始することはできます。2016.11.07 10:41:20.468 Trades '4974': failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 10407.00000, tp: 0.00000 [Invalid request]そして私の意見では、あなたは修正のためのリブにそれを持っていません。if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) Request.type_filling = ORDER_FILLING_RETURN;私はあなたがここでそれを追加する必要があることを理解しています: static bool MT4OrderModify( const int Ticket, const double Price, const double SL, const double TP, const datetime Expiration, const color Arrow_Color = clrNONE ) { MqlTradeRequest Request = {0}; // 同じチケットの注文とポジションが存在する場合を考慮する。 bool Res = ((Ticket != MT4ORDERS::Order.Ticket) || (MT4ORDERS::Order.Ticket <= OP_SELL)) ? (MT4ORDERS::ModifyPosition(Ticket, Request) ? true : MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request)) : (MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request) ? true : MT4ORDERS::ModifyPosition(Ticket, Request)); if (Res) { Request.tp = TP; Request.sl = SL; if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) Request.type_filling = ORDER_FILLING_RETURN; Res = MT4ORDERS::NewOrderSend(Request); } return(Res); } はまだ動作しません。 エラー、バグ、質問 Errors, bugs, questions MQL4 to MQL5 fxsaber 2016.11.07 13:40 #49 Maxim Dmitrievsky:彼は証券取引所でストップロスを設定することはできないが、取引を開始することはできる。2016.11.07 10:41:20.468 Trades '4974': failed modify buy 0.00 sl: 0.00000, tp: 0.00000 -> sl: 10407.00000, tp: 0.00000 [Invalid request]実際、これは開発者のバグに近い。次の行を追加する。 static bool ModifyPosition( const int Ticket, MqlTradeRequest &Request ) { const bool Res = ::PositionSelectByTicket(Ticket); if (Res) { Request.action = TRADE_ACTION_SLTP; Request.position = Ticket; Request.symbol = ::PositionGetString(POSITION_SYMBOL); // チケットは1枚だけでは不十分だ! } return(Res); }そして、私の意見では、 libでは、修正のためにそれを指定しないでください。 すべてそこにある。 Maxim Dmitrievsky 2016.11.07 14:09 #50 fxsaber:実際、これはほとんど開発者のバグ だ。次の行を追加する static bool ModifyPosition( const int Ticket, MqlTradeRequest &Request ) { const bool Res = ::PositionSelectByTicket(Ticket); if (Res) { Request.action = TRADE_ACTION_SLTP; Request.position = Ticket; Request.symbol = ::PositionGetString(POSITION_SYMBOL); // チケットは1枚だけでは不十分だ! } return(Res); } そこですべてが正しい。 はい、そのように動作します、ありがとうございます...そして、オーダーピッキングが遅くなっています、はい...しかし、今のところ他のバグには気づいていません...。実際、オーダーピッキングを速くするのは理にかなっていると思う。 123456789101112...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
エラーはほとんどなくなりましたが、1つだけ残っています:
'OrderCloseBy' - 関数が定義されていません cPoza13-1.mqh 1885 8
//+------------------------------------------------------------------------------------------------------------------------------------+
//| Возвращает TRUE, если один ордер закрылся другим
//+------------------------------------------------------------------------------------------------------------------------------------+
bool cPoza::closeBy(int ticketB, int ticketA)
{
if(ticketB > 0 && ticketA > 0)
{
if(OrderCloseBy(ticketB, ticketA)) return true;
else Print("Magic=", mMagic, " ",__FUNCTION__, " Встречное закрытие не вышло ticketB=", ticketB, " ticketA=", ticketA, " вызвало ошибку-", _LastError);
}
else return false;
return false;
}
// クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になったら。
// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。
このライブラリは自分のために書いたもので、CloseByは使っていません。だから実装していない。もしかしたら、スピードアップして追加するかもしれない。
一時的な解決策として、ライブラリをインクルードする前に以下の行を追加してください。
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
もちろん可能だ。私はその必要性を感じなかった。
どうやらそうすべきらしい。私はまた、平均化でグリッドを構築するとき、積極的に履歴を操作する必要があります。事実は、DCが注文の 最大数を制限していることであり、アカウントがグリッドを持つ15〜20のExpert Advisorを持っている場合、解決策は、注文の限界に近づいた瞬間にグリッドのいくつかを最小限に抑えることです。
// クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になれば。
// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。
それはとても良いことだ。CloseByは、計算されたポイントの位置の一部を固定するのに便利なんだ。
また、平均化でグリッドを構築する際には、積極的に履歴を扱う必要があります。DCは注文の 最大数を制限しており、アカウントにグリッドを持つ15〜20のExpert Advisorsがある場合、解決策は、それぞれ注文の限界に近づいた時点でグリッドの一部が崩壊しているように見られ、我々はポジションの実際の財務結果を理解するために履歴を掘る必要があります。
// クローズバイの瞬間......まだ時間がないんだ。おそらく将来、必要になったら。
// クローズしたポジションのTPとSLを決定する - 現在(ビルド1368)、MQL5はこの方法を知りません。
このライブラリは自分のために書いたもので、CloseByを使うことはない。だから実装していないんだ。おそらく、スピードが上がり次第、追加すると思います。
一時的な解決策として、ライブラリを有効にする前に以下の行を追加してください。
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
ありがとう - オーダーを扱う部分ではコンパイルが成功しました!言語の非互換性に起因するエラーの残りを解決します。
次のビルドでは、CloseByと履歴アクセラレーションを追加するつもりだ。ただ、これは需要がある(ライブラリーが使われている)のか、それとも念のための推奨なのかがわかりません。
私はこれを使用しており、非常に興味深い結果が得られているが、まだ実際のアカウントでは 使用していない。
うまくいくでしょう!私はMT4Ordersで株式市場のすべてを行います。私はオープンポジションの数によって自分自身を制限しません。
証券取引所でストップロスを設定することはできませんが、取引を開始することはできます。
そして私の意見では、あなたは修正のためのリブにそれを持っていません。
Request.type_filling = ORDER_FILLING_RETURN;
私はあなたがここでそれを追加する必要があることを理解しています:
{
MqlTradeRequest Request = {0};
// 同じチケットの注文とポジションが存在する場合を考慮する。
bool Res = ((Ticket != MT4ORDERS::Order.Ticket) || (MT4ORDERS::Order.Ticket <= OP_SELL)) ?
(MT4ORDERS::ModifyPosition(Ticket, Request) ? true : MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request)) :
(MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request) ? true : MT4ORDERS::ModifyPosition(Ticket, Request));
if (Res)
{
Request.tp = TP;
Request.sl = SL;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Request.type_filling = ORDER_FILLING_RETURN;
Res = MT4ORDERS::NewOrderSend(Request);
}
return(Res);
}
彼は証券取引所でストップロスを設定することはできないが、取引を開始することはできる。
実際、これは開発者のバグに近い。次の行を追加する。
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // チケットは1枚だけでは不十分だ!
}
return(Res);
}
そして、私の意見では、 libでは、修正のためにそれを指定しないでください。
実際、これはほとんど開発者のバグ だ。次の行を追加する
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // チケットは1枚だけでは不十分だ!
}
return(Res);
}