目利きの方に質問です - ページ 13 1...6789101112131415161718192021 新しいコメント 削除済み 2009.08.28 04:34 #121 専門家の皆様、OrderCloseBy()関数を理解するのにお役立てください。完全に混乱しています。Expert Advisorを使用しており、逆行する条件でポジションをオープン、クローズします。つまり、OPEN BUYとCLOSE SELL、OPEN SELLとCLOSE BUYの条件は同じで、あるポジションを同じ価格で決済した直後に、同じ大きさで反対方向のポジションを建てるということです。そこで、OrderClose()の代わりに、ダブルボリュームで反対方向のポジションを建て、OrderCloseBy()で反対方向の注文を決済してみることにしたのです。つまり、同じアルゴリズムを適用しても、取引ごとにスプレッドが1つ節約できるはずですが、テスターでは全く異なる結果が表示されています。コードの書き方が間違っているのか、考え方を勘違いしているのか判断がつきません...。説明をしていただけるとありがたいのですが...。 Rid 2009.08.28 04:40 #122 まず、この機能が端末でサポートされているかどうか、証券会社のテクニカルサポートに確認してください。すべての証券会社でOrderCloseBy()関数を使用できるわけではありません。 削除済み 2009.08.28 05:05 #123 デモではOrderCloseBy()がサポートされています。 Rid 2009.08.28 05:28 #124 私は専門家ではありません。私はこの機能に関するこのメモを、「正常な」もの全てに加えて、「ヘルプ」フォルダに置いています(ここにもコピーしました - どの枝か忘れました)-。 また、OrderCloseBy 関数は、2つの注文を同時に決済する場合にのみ使用され、その際、1つのスプレッドが保存されます。 プログラム的にターミナルを歩き、すべてのオープンオーダー番号とその特徴を記憶し、メインオーダー番号を選択し、希望(利用可能な中から)カウンターオーダーとマッチさせ、その番号を貼り付ける必要があります。 // つまり、この機能では、あらかじめ選択された2つのカウンタ位置しか閉じることができないのです。 それだけなんです。 kombat 2009.08.28 05:34 #125 ええ、まあ... だから、そう呼ばれているんです。 削除済み 2009.08.28 05:36 #126 ここで、次の2つの立場逆転の可能性に経済的な違いがあるのか、という問いに言い換えよう。 1)OrderClose 関数で売りを1ロットで決済し、その後買いを1ロットで建てる。 2) 1ロットのSELLが開いている間に、まず2ロットのBUYを開き、OrderCloseBy関数でSELLを閉じると、1ロットのBUYも空いたままになります。 ワークブックの例によると、2)バリアントでは1つのスプレッドが残ります。 kombat 2009.08.28 05:39 #127 つまり、1+1のスプレッドが補填され、残りの1が通常の取引スプレッドとなるのです。 削除済み 2009.08.28 08:01 #128 https://book.mql4.com/ru/trading/orderclose -OrderCloseBy()関数の説明はこちらです。デモで同じことをやってみましたが、本当にスプレッドがかなり狭くなりますね。しかし、Expert Advisorではまだ動作しない...。私はとても混乱しています... Mislaid 2009.08.28 18:04 #129 Dmirtiy писал(а)>> https://book.mql4.com/ru/trading/orderclose - ここでは、OrderCloseBy()関数がどのように動作するかを見ることができます。デモで同じことをやってみましたが、本当にスプレッドが小さくなっていますね。しかし、Expert Advisorではまだ動作しない...。本当に困っています...。 この質問で2ちゃんねるに出没していますね。好奇心旺盛なんですね。 単純な解決策はありません。MQL5のリリースにより、この問題は完全に解消されます。 私がEAで使用しているいくつかの手順を提案することができます。 //未決済注文の現在の状態を検出する。 void CheckOrders() { int i; BuyOrder = false。 SellOrder = false とした。 バイロット=0.0 SellLots = 0.0; for ( i=0; i < オーダー合計(); i++) { OrderSelect(i, SELECT_BY_POS); if ( OrderSymbol() == Symbol()) { if ( OrderType() == OP_BUY ) ) { BuyOrder = true。 LastBuyLots = OrderLots(); BuyLots += LastBuyLots; // 買いのポジションの総数 BuyTicket = OrderTicket(); } if ( OrderType() == OP_SELL) { SellOrder = true。 LastSellLots = OrderLots(); SellLots += LastSellLots; // 売りポジションの総数 SellTicket = OrderTicket(); } } } } //Open (close) 命令。 void TradeVariant( int variant ) { switch( variant ) { // if (Pattern < 0 && !BuyOrder && !SellOrder && !FridayLastHour) variant = 1; // 売りシグナル、注文はオープンでなく、金曜日の最終時間でもない。 // 売り注文を出す ケース1 OpenSellOrder(Lots)です。 が壊れる。 // if (Pattern < 0 && BuyOrder && !SellOrder && !FridayLastHour) variant = 2; // 売りのシグナルは、買い注文があり、売り注文はない。 // 金曜日の最後の時間ではありませんが、私たちは寝返りを打っています。 の場合 2. OpenSellOrder(Lots+BuyLots)。 が壊れる。 // if (Pattern < 0 && BuyOrder && !SellOrder && FridayLastHour) variant = 3; // 売りのシグナルは、買い注文があり、売り注文はない。 // 金曜日の最後の時間です - 買い注文を終了します。 ケース 3. CloseBuyOrders()。 が壊れる。 // if (Pattern > 0 && !SellOrder && !BuyOrder && !FridayLastHour) variant = 4; // 買いシグナル、注文はオープン、金曜日の最終時間ではない // 買い注文を出す ケース 4. OpenBuyOrder(Lots)です。 が壊れる。 // if (Pattern > 0 && SellOrder && !BuyOrder && !FridayLastHour) variant = 5; // 買いシグナル、売り注文があり、買い注文はない。 // 金曜日の最後の時間ではありませんが、私たちは寝返りを打っています。 ケース 5. OpenBuyOrder(Lots + SellLots)。 が壊れる。 // if (Pattern > 0 && SellOrder && !BuyOrder && FridayLastHour) variant = 6; // 買いシグナル、売り注文があり、買い注文はない。 // 金曜日の最後の時間帯に売り注文を終了します。 ケース 6. CloseSellOrders()。 が壊れる。 case 7:// if (SellOrder && BuyOrder) variant = 7;// クロス注文をオープンしている if (WaitBeforeTransaction(WaitSeconds) == 1) // リクエスト間に一時停止{ if (LastBuyLots <= LastSellLots) OrderCloseBy( BuyTicket, SellTicket); else OrderCloseBy( SellTicket, BuyTicket);} break // 他のバリエーションでは何もしない のデフォルトになります。 が壊れる。 } } 変数で何とかしてほしい。 >> グッドラック! オープンされたポジションの二段階の修正 インディケータコードの Expert Advisor コードへの変換おわりに MQL 4 で信頼性ある安全な売買ロボットを作成する方法 削除済み 2009.08.30 15:16 #130 Спасибо большое! 1...6789101112131415161718192021 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私は専門家ではありません。私はこの機能に関するこのメモを、「正常な」もの全てに加えて、「ヘルプ」フォルダに置いています(ここにもコピーしました - どの枝か忘れました)-。
また、OrderCloseBy 関数は、2つの注文を同時に決済する場合にのみ使用され、その際、1つのスプレッドが保存されます。
プログラム的にターミナルを歩き、すべてのオープンオーダー番号とその特徴を記憶し、メインオーダー番号を選択し、希望(利用可能な中から)カウンターオーダーとマッチさせ、その番号を貼り付ける必要があります。
// つまり、この機能では、あらかじめ選択された2つのカウンタ位置しか閉じることができないのです。
それだけなんです。
ええ、まあ...
だから、そう呼ばれているんです。
ここで、次の2つの立場逆転の可能性に経済的な違いがあるのか、という問いに言い換えよう。
1)OrderClose 関数で売りを1ロットで決済し、その後買いを1ロットで建てる。
2) 1ロットのSELLが開いている間に、まず2ロットのBUYを開き、OrderCloseBy関数でSELLを閉じると、1ロットのBUYも空いたままになります。
ワークブックの例によると、2)バリアントでは1つのスプレッドが残ります。
https://book.mql4.com/ru/trading/orderclose - ここでは、OrderCloseBy()関数がどのように動作するかを見ることができます。デモで同じことをやってみましたが、本当にスプレッドが小さくなっていますね。しかし、Expert Advisorではまだ動作しない...。本当に困っています...。
この質問で2ちゃんねるに出没していますね。好奇心旺盛なんですね。
単純な解決策はありません。MQL5のリリースにより、この問題は完全に解消されます。
私がEAで使用しているいくつかの手順を提案することができます。
//未決済注文の現在の状態を検出する。
void CheckOrders()
{
int i;
BuyOrder = false。
SellOrder = false とした。
バイロット=0.0
SellLots = 0.0;
for ( i=0; i < オーダー合計(); i++)
{
OrderSelect(i, SELECT_BY_POS);
if ( OrderSymbol() == Symbol())
{
if ( OrderType() == OP_BUY ) )
{
BuyOrder = true。
LastBuyLots = OrderLots();
BuyLots += LastBuyLots; // 買いのポジションの総数
BuyTicket = OrderTicket();
}
if ( OrderType() == OP_SELL)
{
SellOrder = true。
LastSellLots = OrderLots();
SellLots += LastSellLots; // 売りポジションの総数
SellTicket = OrderTicket();
}
}
}
}
//Open (close) 命令。
void TradeVariant( int variant )
{
switch( variant )
{
// if (Pattern < 0 && !BuyOrder && !SellOrder && !FridayLastHour) variant = 1;
// 売りシグナル、注文はオープンでなく、金曜日の最終時間でもない。
// 売り注文を出す
ケース1
OpenSellOrder(Lots)です。
が壊れる。
// if (Pattern < 0 && BuyOrder && !SellOrder && !FridayLastHour) variant = 2;
// 売りのシグナルは、買い注文があり、売り注文はない。
// 金曜日の最後の時間ではありませんが、私たちは寝返りを打っています。
の場合 2.
OpenSellOrder(Lots+BuyLots)。
が壊れる。
// if (Pattern < 0 && BuyOrder && !SellOrder && FridayLastHour) variant = 3;
// 売りのシグナルは、買い注文があり、売り注文はない。
// 金曜日の最後の時間です - 買い注文を終了します。
ケース 3.
CloseBuyOrders()。
が壊れる。
// if (Pattern > 0 && !SellOrder && !BuyOrder && !FridayLastHour) variant = 4;
// 買いシグナル、注文はオープン、金曜日の最終時間ではない
// 買い注文を出す
ケース 4.
OpenBuyOrder(Lots)です。
が壊れる。
// if (Pattern > 0 && SellOrder && !BuyOrder && !FridayLastHour) variant = 5;
// 買いシグナル、売り注文があり、買い注文はない。
// 金曜日の最後の時間ではありませんが、私たちは寝返りを打っています。
ケース 5.
OpenBuyOrder(Lots + SellLots)。
が壊れる。
// if (Pattern > 0 && SellOrder && !BuyOrder && FridayLastHour) variant = 6;
// 買いシグナル、売り注文があり、買い注文はない。
// 金曜日の最後の時間帯に売り注文を終了します。
ケース 6.
CloseSellOrders()。
が壊れる。
case 7:
// if (SellOrder && BuyOrder) variant = 7;
// クロス注文をオープンしている
if (WaitBeforeTransaction(WaitSeconds) == 1) // リクエスト間に一時停止
{
if (LastBuyLots <= LastSellLots)
OrderCloseBy( BuyTicket, SellTicket);
else
OrderCloseBy( SellTicket, BuyTicket);
}
break
// 他のバリエーションでは何もしない
のデフォルトになります。
が壊れる。
}
}
変数で何とかしてほしい。
>> グッドラック!