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

 
ありがとう、みんな。
 
A.Vakutin:

ストップがトリガーされた後にEAが販売することを禁止する方法を知っている人、共有してください?

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}
 

フォーラムユーザーの皆様、こんばんは。

ジレンマが発生した。

トランザクションがあり、それを変数に格納しました。

datetime now=TimeCurrent();

しばらくして、あるイベントが発生したので、その時間を変数に格納する

datetime now2=TimeCurrent();

これらのイベントの間に15分が経過しているかどうかを確認するにはどうしたらよいですか?

nowとnow2の2つの変数を秒単位で設定したつもりで、その差を取ろうとしたら700秒以上になっていた。

 if(now2-now>700)

でも、うまくいかない((

地域の皆様のお力をお借りしたいのです

 
ISL:

フォーラムユーザーの皆様、こんばんは。

ジレンマが発生した。

トランザクションがあり、それを変数に格納しました。

しばらくして、あるイベントが発生したので、その時間を変数に格納する

これらのイベントの間に15分が経過しているかどうかを確認するにはどうすればよいですか?

nowとnow2の2つの変数を秒単位で設定したつもりで、その差を取ろうとしたら700秒以上になっていた。

でも、うまくいかない((

地域の皆様のお力をお貸しください。

datetime変数は、日付と時刻で表現される。例えば、700(15分は900秒だが)をdatetime型で 表現するなど、別の方法で問題を解決することができる。

if(now2-now>(datetime)700)

またはその逆で、変数をint型として表現します。

if(int(now2-now)>700)

とか、こんな感じで

if((int)now2-(int)now>700)
とにかく、確認しないと...。
 
Alexey Viktorov:

datetime変数は、日付と時刻で表現される。700(15分は900秒だが)をdatetimeで 表現するなど、さまざまな方法で問題を解決できる。


夕方になってから)))

 
ISL:

夕方からが本番です)))

ああ...インルーダーから機能をつなぐのに1時間半もかかってしまった...。

 
Vladimir Karputov:

標準取引クラスCTrade
を接続(ターミナルに標準装備されています。)

という2つのメソッドを呼び出します。

SetTypeFillingBySymbol(タイプフィリングバイシンボル)。

指定されたシンボルに応じたオーダータイプを設定する

マージンモード設定

現在の口座設定に応じた証拠金計算モードの設定

ウラジミール、こんばんは。私は取引されたボリュームを計算したいのですが、私は正しく取得することはできません、私は方向アウトと注文を識別し、ボリュームを計算するためにそれらを使用する必要があると思いますパーセント利益を計算する関数を作ってください私にアドバイスをお願いします。

double ALL_PROFIT(int rezult)
  {
   HistorySelect(0,TimeCurrent());
   double   rez=0.0;
   double   alprof=0.0;
   uint     total=HistoryDealsTotal();
   for(uint i=0;i<=total;i++) 
     {
      if(m_ticket.SelectByIndex(i))
        {
         if(m_ticket.Magic()==Mg)
           {
            alprof+=(m_ticket.Profit()+m_ticket.Swap()+m_ticket.Commission());
            rez=alprof;
            if(rezult==1 && alprof!=0.00){rez=alprof/(AccountInfoDouble(ACCOUNT_BALANCE)-alprof)*100;}
            if(rezult==2){rez+=m_ticket.Volume();}      
           }
        }
     }
   return(NormalizeDouble(rez,2)); 
  }
ちなみに、クローズドポジションの数も、何本取引したかが問題になります
 
TYRBO:

ウラジミール、こんばんは、利益率を計算する関数を提案することができます、私は取引されたボリュームを計算したい、それは正しく動作しません、私は方向アウトとボリュームを計算するためにそれらを使用して、注文を識別する必要があると思います。

何もわからない、文字ばかりが積み重なっている。コードをコードスタイラーに 通します。

 
TYRBO:

ウラジミール、こんばんは、利益率を計算する関数を提案することができます、私は取引されたボリュームを計算したい、それは正しく動作しません、私は方向アウトとボリュームを計算するためにそれらを使用して、注文を識別する必要があると思います。


ちなみに、クローズドポジションの数の問題でもあります

コードを 正しく送信してください。すでに一度、訂正し、正しくコードを入れています。

 
TYRBO:

ウラジミール、こんばんは、利益率を計算する関数を提案することができます、私は取引されたボリュームを計算したい、それは正しく動作しません、私は方向アウトとボリュームを計算するためにそれらを使用して、注文を識別する必要があると思います。

ちなみに、クローズドポジションの数も問題です

3回目にして正しくコードを送信しました。あと何回トライすればいいんだろう。:)

理由: