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

 
uncleVic:

1111000000000111111b=> 31457535 (10進数)

夜間取引禁止

営業 時間:08:00~20:00

午後9時から午後11時までの禁止事項

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

おそらく、それはダミーの質問です、私はまだmql5の構文にあまり慣れていません(他のすべてもそうですが)。関数は複数の値や配列などの構造体を返すことができますか?

みたいな感じ。

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

おそらく、それはダミーの質問です、私はまだmql5の構文にあまり慣れていません(他のすべてもそうですが)。関数は複数の値や配列などの構造体を返すことができますか?

いいえ、配列はグローバルに記述し、その値を関数で変更することができます。
 
zfs:
いいえ、配列はグローバルに記述でき、その値を関数で変更することができます。
ありがとうございます、試してみます)
 

シグナルを退会しても、1日後にまた購読されてしまうので、退会 方法を教えてください。 シグナルは購読でアクティブになっており、設定で購読を有効にするチェックマークを付けて、OKにしましたが、再度設定を開くとチェックマークがありません。

 
Lone_Irbis:

おそらく、それはダミーの質問です、私はまだmql5の構文にあまり慣れていません(他のすべてもそうですが)。関数は複数の値や配列などの構造体を返すことができますか?

みたいな感じ。

単純な (クラスオブジェクト、文字列、動的配列を含まない)構造 体を関数から返すことができる。

 

ありがとうございます。配列なしで、定義済みの値なしでグローバル変数を使うだけで解決できました(いつものようにドアが開きました)。

mql5にはストラテジーテスターを制御するための様々な機能が組み込まれていることは知っていますが、それ以外の新しい、おそらく典型的ではない質問があります。しかし、最適化の結果を あらかじめ準備した形で扱うことができるものは見当たりません。例えば、Хを除くすべてのパラメータ値がある範囲にあるすべての結果の中から、平均的な利益値を求めたいとします。

それとも、Excelで手作業でしかできないのでしょうか?どちらかというと、エクセルでのやり方がわかる。ただ、ちょっとした研究(純粋に自分のため、興味本位で)のアイデアがあるのですが、そのためには、非常にルーチンで同一の方法で、山のようなテーブルを掘り起こす必要があります。

 
Lone_Irbis:

ありがとうございます。配列なしで、定義済みの値を持たないグローバル変数を使用するだけで問題を解決することができました(いつものようにドアが開きました)。

mql5にはストラテジーテスターを制御するための様々な機能が組み込まれていることは知っていますが、それ以外の新しい、おそらく典型的ではない質問があります。しかし、最適化の結果を あらかじめ準備した形で扱うことができるものは見当たりません。例えば、Хを除くすべてのパラメータ値がある範囲にあるすべての結果の中から、平均的な利益値を求めたいとします。

それとも、Excelで手作業でしかできないのでしょうか?どちらかというと、エクセルでのやり方がわかる。ただ、ちょっとした研究(純粋に自分のため、興味本位)のアイデアがあるのですが、そのためには、非常に日常的で同一の方法で、山のようなテーブルを掘り起こす必要があり、何とかしてそれを自動化したいのです...。

こちらをご覧ください: https://www.mql5.com/ru/docs/optimization_frames


そして、フォーラムで使用例を検索してください。

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

こちらをご覧ください: https://www.mql5.com/ru/docs/optimization_frames


そして、フォーラムで使用例を検索してください。

そう、これまでにも何度か出くわしたことがある、こんな 例も。しかし、なぜか私が求めているものとは違うようでした。でも、まだ作り方を知らないだけかもしれませんね :)

とにかく、不幸なフクロウがまともに動かない以上、まだ関係ないのですが...。

そこで、近い将来のための最後の(少なくとも私が望む)質問は、ポジションの最後の注文の始値を正しく取得する方法ですか?

テスト用のフクロウは、もともと私のものではなく、最近見つけた作者不詳のものです。このフクロウは当初、テスターでは正常に動作するが、デモでは最終注文価格の値が取得できないという奇妙なバグがあった。

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

デモではエラー4753(注文が見つかりません)が発生し、0を返します(テスターでは期待通りにすべて返します)。そして、テストPrintではHistoryOrderGetDouble 処理に到達しているようで、さらに空ではないTicketがあるにもかかわらず、です...。

 

教えてください、50の評価毎週1ドル? 誰が彼は週に100ドルを得る5000を持っていますか?

理由: