初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 611

 
Vladimir Zubov:

それはどうでしょう。私は通常、「チェックする準備ができた」段階までブラウザを閉じないのです。タブで "my products "を探してみてください。通常、下書きはそこにありますが、ない場合は最初からやり直す必要があるかもしれません。公開したい商品名が占められていない場合、下書きが保存されていない可能性があります。

ありがとうございました。見つけた!
 
皆さん、ごきげんよう。
昔々、クラスオブジェクトの 配列をファイルに保存できないかという質問をしたところ、コミュニティから肯定的な回答が返ってきたことがあります。やっと全部確認することができました。そして、そう、まさに「THAT-救われる」のです。そして、それすらも読み取るのです。いずれにしても、FileWriteArray、FileReadArrayともに、書き込んだ数、読み込んだ数で正しい値を返す。しかし、クラスメソッドで配列の最初の要素にアクセスしようとすると、Invalid pointer access error に続いて OnTick critical error が発生し、終了してしまいます。ただし、書き込みと読み込みを繰り返す配列ではなく、メモリ上に作成されたものだけを扱う場合は、すべてうまくいきます。何が問題なのでしょうか?保存したオブジェクトの配列を復元する正しい方法は?
 
BlackTomcat:
皆さん、ごきげんよう。
昔々、クラスオブジェクトの 配列をファイルに保存できないかという質問をしたところ、コミュニティから肯定的な回答が返ってきたことがあります。やっと全部確認することができました。そして、そう、まさに「THAT-救われる」のです。そして、それすらも読み取るのです。いずれにしても、FileWriteArray、FileReadArrayともに、書き込んだ数、読み込んだ数で正しい値を返す。しかし、クラスメソッドで配列の最初の要素にアクセスしようとすると、Invalid pointer access error に続いて OnTick critical error が発生し、終了してしまいます。ただし、書き込みと読み込みを繰り返す配列ではなく、メモリ上に作成されたものだけを扱う場合は、すべてうまくいきます。何が問題なのでしょうか?保存したオブジェクトの配列を正しく復元する方法は?
コードを送ってください
 
こんにちは!MT4は結構知っているのですが、MT5は初心者です。注文をクローズするコマンドを教えてください!こちらの操作の種類のリストには見つかりませんでした https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions.CLOSE_BYだけ で、クローズしたいだけなのです。
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Kharlamov:
こんにちは、MT4は結構知っているのですが、MT5は初心者なんです。注文をクローズするコマンドを教えてください!操作の種類のリストでどのコマンドも見つかりませんでした。https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions。唯一のコマンドはCLOSE_BYで、ただ注文をクローズする必要があります。

mt5では、そんなに簡単ではありません。

クローズとは、同じロットで反対売買をすることです。

つまり、TRADE_ACTION_DEAL 操作です。

 
Vladislav Andruschenko:

mt5では、そんなに簡単ではありません。

クローズとは、同じロットで反対売買をすることです。

つまり、TRADE_ACTION_DEAL 操作です。

お返事ありがとうございます!でもまだよくわかりません...。反対売買をしたのですが、その間にTRADE_ACTION_CLOSE_BYを する必要があるのでしょうか?
 
Alexander Kharlamov:
お返事ありがとうございます!でもまだよくわかりません。反対側のポジションを建てて、その間にTRADE_ACTION_CLOSE_BY すればいいのでしょうか?

MT5ではPOSITIONという概念があります。ポジションを閉じることができます。ポジションを完全にクローズしたい場合は、標準ライブラリを使用します。ネッティングアカウントの場合、ポジションを決済する例です。

//+------------------------------------------------------------------+
//|                                                 PositionClos.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- подключение стандартной библиотеки
#include <Trade\Trade.mqh>
//--- объект класса CTrade
CTrade trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- закрытие позицию по текущему символу
   trade.PositionClose(Symbol());
  }
//+------------------------------------------------------------------+
ファイル:
 
Karputov Vladimir:

MT5ではPOSITIONという概念があります。ポジションを閉じることができます。ポジションを完全にクローズしたい場合は、標準ライブラリを使用します。ネッティング口座の場合、ポジションを閉じる方法の一例です。

わかるような気がしてきた!?) ポジションは、その商品の注文を実行する たびに変化しますよね。今の問題は、「ポジション識別子は、新しく開設されたポジションに割り当てられ、その生涯を通じて変わることのないユニークな番号 である」ということです。ポジションが開設された注文のチケットに対応する」。

また、その後のオーダーでポジションが変更された場合、その数はポジションを作った最初のオーダーと同じままなのでしょうか?
 
Alexander Kharlamov:

1.なんとなくわかってきたような気がする!) このシンボルの注文を実行する たびに、ポジションは変化しますよね?
2.ポジション識別子は一意の番号であり、新しく開設されたポジションに割り当てられ、その生涯を通じて変更 されることはありません。ポジションが開設された注文のチケットに対応する」。

また、その後のオーダーでポジションが変更された場合、その数はポジションを作った最初のオーダーと同じままなのでしょうか?

1.はい、その通りです。注文の実行により、取引が発生します。トランザクションは可能です。

  • いちをつくる
  • 位を変える
  • ポジションを閉じる
2.練習に勝るものはないでしょう。:)任意のチャートでポジションを(手動で)建てる。スクリプトの実行

//+------------------------------------------------------------------+
//|                                           PositionGetInteger.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<PositionsTotal();i++)
     {
      //--- проверим наличие позиции и выведем время её изменения 
      string pos_symbol=PositionGetSymbol((uint)i);
      if(pos_symbol!=NULL)
        {
         //--- получим идентификатор позиции для дальнейшей работы с ней 
         ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER);
         Print(pos_symbol," postion #",position_ID);
         //--- получим время образования позиции в миллисекундах с 01.01.1970 
         long create_time_msc=PositionGetInteger(POSITION_TIME_MSC);
         PrintFormat("Position #%d  POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID,
                     create_time_msc,TimeToString(create_time_msc/1000));
         //--- получим время последнего изменения позиции в секундах с 01.01.1970 
         long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE);
         PrintFormat("Position #%d  POSITION_TIME_UPDATE = %i64 seconds => %s",
                     position_ID,update_time_sec,TimeToString(update_time_sec));
         //--- получим время последнего изменения позиции в миллисекундах с 01.01.1970 
         long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC);
         PrintFormat("Position #%d  POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s",
                     position_ID,update_time_msc,TimeToString(update_time_msc/1000));
        }
     }
//--- 
  }
//+------------------------------------------------------------------+

- 行に注目してください(ターミナルの「エキスパート」タブを見てください)。

2016.08.29 14:51:24.435 PositionGetInteger (EURUSD,M1)  EURUSD postion #95873997

音量を上げ、再度スクリプトを実行し、再度行を比較する

2016.08.29 14:51:32.872 PositionGetInteger (EURUSD,M1)  EURUSD postion #95873997

このように、位置を反転させなければ、位置プロパティ(POSITION_IDENTIFIER)は変化しない。

ファイル:
 
POSIITION_IDENTIFIER は、位置が逆転すると 変化する。
理由: