偉大で恐ろしいMT4の永遠(または移行の戦略方法) - ページ 27

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQL5でOrderModify()ですか?

エドワード・マンロー, 2021.05.27 00:51

シンプルな質問には、シンプルな答えが返ってくる!?mql5のほぼ全ての機能は、なぜこんなに雑になってしまったのでしょうか?

いい質問ですね。

 

伝統的に週末前の簡単な作業です。

オープンポジションは 1ロットです。スクリプトを実行した後、ポジションを0.9ロットにする必要があります。

いつスクリプトが起動してもおかしくない状態であることは明らかです。それだけに、さまざまなシチュエーションが想定されます。


いつも通り、古典的な方法で問題を解決しようとしました。

// Частичное закрытие позиции.

#include <Trade\Trade.mqh>

void OnStart()
{
  CTrade Trade;
  
  if (Trade.Buy(1)) // Пытаемся открыть позицию на 1 лот.
  {
    const ulong Ticket = Trade.ResultOrder();
    
    // Ждем, пока не появится.
    while (!IsStopped() && !PositionSelectByTicket(Ticket))
      Sleep(0);
      
    // А теперь просто закрываем 0.1 лота в случае, если объем позиции равен 1.
    // Цикл - для эмуляции запуска скрипта в любой момент.
    while (!IsStopped() && PositionSelectByTicket(Ticket) && (PositionGetDouble(POSITION_VOLUME) == 1))
      Trade.PositionClosePartial(Ticket, 0.1);
  }
}


このスクリプトでは、0.8ロットでのポジションを表示しています。0.9が必要です。

 
fxsaber:

このスクリプトを実行すると、0.8ロットのポジションが得られます。0.9が必要です。

2つのサーバーで何度かテストしましたが、0.9しか出ませんでした。


テストのロジックは明確で、1ティックでの非同期実行をなくそうとしています。この処理の一般的なスキーム(1ティックで同期する方法)を知っておくことは重要です。

 
fxsaber:

伝統的に週末前の簡単な作業です。


キタ━━━━(゚∀゚)━━━━!そして、私は0.8(MQDemoでは-0.9)です。この熊手はあと何本あるのでしょうか?

 
Igor Makanu:

2つのサーバーで数回チェックしたところ、0.9しかありません。

 
 

これは、このスレッドで簡単に定式化された課題の中で、現時点では最も難しい課題ではない でしょうか。

MQL5トレーディングパートの習得度を測る非常に強力なテストです。

 

SLとTPをゼロにして買い注文を 開き、SLとTPを30pipsに設定する(記憶が正しければ、これは市場執行口座タイプと呼ばれるもので、SLとTPを一度に設定できない)。

MT4では、このコードは動作します。

void OnStart()
{
   int ticket;
   if((ticket = OrderSend(_Symbol, OP_BUY, 0.1, Ask, 30, 0.0, 0.0)) < 0 ||
         !OrderSelect(ticket, SELECT_BY_TICKET) ||
         !OrderModify(ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - 300 * _Point, _Digits), NormalizeDouble(OrderOpenPrice() + 300 * _Point, _Digits), OrderExpiration()))
   {
      Print("Error Open order # ", GetLastError());
   }
}
 
Igor Makanu:

SLとTPをゼロにして買い注文を 開き、SLとTPを30pipsに設定する(記憶が正しければ、これは市場執行口座タイプと呼ばれるもので、SLとTPを一度に設定できない)。

MT4では、このコードは動作します。

2〜3年前、端末レベルで実行タイプの認識が導入されました。現在、成行注文でもSLとTPを設定すれば、ターミナル自体が注文を2つの取引注文に分割してくれます。

 
Igor Makanu:

SLとTPをゼロにして買い注文を 出し、30pipsのSLとTPを置く(記憶が正しければ、これは市場執行口座タイプと呼ばれるもので、SLとTPは同時に置くことができない)。

共通の課題です。