MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1259

 
Yevhenii Levchenko:
mt5では、終値の代わりにPOSITION_TIME_UPDATEを 見るべきという理解で正しいですか?
いいえ、終値取引は必要です。
 
Valerius:

TakeProfitはpips単位で、Trailing TakeProfitは入金通貨単位で計算されます。Trailing TakeProfitは、1つまたは複数の注文から預金の通貨で利益であり、設定で指定された金額で注文の停止を置く、すなわち、計算された距離である。

例えば、Trailing Take Profitを$100で指定する設定です。価格が100$の利益に達し、さらに進むと、プログラムは100$の距離を計算し、計算されたスポットにすべてのストップロスの注文を配置します(可能な場合)。価格がストップ高までロールバックされると同時に、すべての注文がクローズされます。基本的にはトレーリングストップと同じですが、デポ通貨で計算され、利益をトレールするのが特徴です。どこかで間違えているかもしれませんが、これが原則です。説明できたでしょうか。

トレーリング - 動き。トレーリングストップ - アルゴリズムに従ってストップを移動させます。Trailing TakeProfit - 何らかのアルゴリズムに従って、レベルが近づいたときに移動させます。

 
Artyom Trishkin:
いいえ、終値取引は必要です。

ありがとうございました。

最後の取引で利益を確認するmartinの関数を紹介します。不採算の場合は、取引量を返します。このやり方がいかに正しいか。

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

ポジション全体の利益を知りたい場合。

-> 全トレードを検索し、最後のトレードのDEAL_POSITION_IDを 取得;
-> DEAL_POSITION_IDを使って再度全ポジションの利益を検索して取得?

それとももっと近道があるのでしょうか?

 
Yevhenii Levchenko:

ありがとうございました。

最後の取引で利益を確認するmartinの関数を紹介します。不採算の場合は、取引量を返します。このやり方がいかに正しいか。

ポジション全体の利益を知りたい場合。

-> 全トレードを検索し、最後のトレードのDEAL_POSITION_IDを 取得;
-> DEAL_POSITION_IDを使って再度全ポジションの利益を検索して取得?

それとももっと近道があるのでしょうか?

問題を別の角度から見てみましょう。もし、ポジションがクローズした瞬間にポジションIDを取得し、そのポジションの注文や取引を選択できるのであれば、なぜ履歴を見る必要があるのでしょうか。

 
Alexey Viktorov:

問題を別の角度から見てみましょう。ポジションを決済した瞬間にポジションIDを取得し、そのポジションの注文や取引を選択することができれば、すでにすべてがわかっているのに、なぜ履歴を検索するのでしょうか。

取引開始前に確認する必要があることです :(

でも、短いのがなければ、いつでも遠回りをすることができますよ :)

 
Yevhenii Levchenko:

取引開始前に確認する必要があることです :(

でも、短いのがなければ、遠回りでもいいんですよ :)

OnInit で Expert Advisor を再起動するときだけ、そのように探す必要があるのです。そして、EAの動作の過程で、ポジションを閉じる ときに必要なデータを取得します。でも、これはみんな次第なんです。不要なアクションでプロセッサに負荷をかけるのが好きな人もいますし......。

 
Alexey Viktorov:

これはOnInitでExpert Advisorを再起動するときにのみ検索されるはずです。また、Expert Advisorの作業の過程で、ポジションを閉じる ときに必要なデータを取得する。でも、これはすべてみんなの問題なんです。不要なアクションでプロセッサに負荷をかけるのが好きな人もいますし......。

ちょっとわからないのですが、1tickごとにポジションの状態を要求する以外に、ポジションを閉じる瞬間をトレースするにはどうしたらいいのでしょうか?それは確かにすべてのポジションを尋問するのではなく、各ティックリクエストにすべて同じです。

 
Valerius:

TakeProfitはpips単位で、Trailing TakeProfitは入金通貨単位で計算されます。Trailing TakeProfitは、1つまたは複数の注文から預金の通貨で利益であり、設定で指定された金額で注文の停止を置く、すなわち、計算された距離である。

例えば、Trailing Take Profitを$100で指定する場合、設定で指定します。価格が100$の利益に達し、さらに進むと、プログラムは100$の距離を計算し、計算されたスポットにすべてのストップロスの注文を配置します(可能な場合)。価格がストップ高までロールバックされると同時に、すべての注文がクローズされます。基本的にはトレーリングストップと同じですが、デポ通貨で計算され、利益をトレールするのが特徴です。どこかで間違えているかもしれませんが、これが原則です。説明できたでしょうか。

Valeriy Yastremskiy:

トレーリング - 動き。トレーリングストップ - アルゴリズムに従ってストップを移動させます。Trailing TakeProfit - 何らかのアルゴリズムに従って、レベルが近づいたときに移動させます。

蹴らないでください、でも、わからないんです。MetaEditorが生成するExpert Advisorのうち、trailingモジュールを含むものの設定では、trailing levelをポイント単位で指定します。例えば、Take Profittrailing level (in points)」=100と 設定しました。このトレーリングストッパーはどのように機能するのでしょうか?間違っていたら訂正してください。現在の価格が、指定したTake Profitレベルの100pips手前に到達すると、トレーリングオーダーが有効になります。価格がTPに到達し、それを越えても、ポジションはクローズされません。トロールは単純に100pipsの距離で価格を追いかけ始める。価格が反転してポジションに逆行した場合、TPか、TPよりさらに進んだ場合はトロールで設定されたSLでポジションが閉じられます。そうだろ?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
あまり蹴らないでください、でも、わからないんです。MetaEditorで生成され、トレイリングモジュールを含むExpert Advisorの設定において、トレイリングレベルをポイントで指定します。例えば、Take Profittrailing level (in points)」=100と 設定しました。このトレーリングストッパーはどのように機能するのでしょうか?間違っていたら訂正してください。現在の価格が、指定したTake Profitレベルの100pips手前に到達すると、トレーリングオーダーが有効になります。価格がTPに到達し、それを越えても、ポジションはクローズされません。トロールは単純に100pipsの距離で価格を追いかけ始めます。価格が反転してポジションに逆行した場合、TPでポジションを決済し、トロールがTPよりさらに動いた場合はSLで決済します。そだろ?

コードがないと、答えようがない。

 
Alexey Viktorov:

これはOnInitでExpert Advisorを再起動するときにのみ、この方法で探す必要があります。また、Expert Advisorの作業の過程で、ポジションを閉じる ときに必要なデータを取得する。でも、これはすべてみんなの問題なんです。不要なアクションでプロセッサに負荷をかけるのが好きな人もいますし......。

すべてのティックでチェックされているわけではありません。シグナルがあればチェックを開始し、トレードを開始します。以上です :)