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

 
makssub #:

すでにちょっと混乱しているので、例を書いてください。ご迷惑でなければ感謝

オーダーを検索するループで

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

ループの前に、previous_value=DBL_MAX を初期化し、 nearest_order=0 とする。

 
Taras Slobodyanik #:

をオーダーループに入れる。

ループの前にprevious_value=DBL_MAX、nearest_order=0を初期化する。

その通りです。ありがとうございます。作品紹介

 
Taras Slobodyanik #:

をオーダーループに入れる。

ループの前にprevious_value=DBL_MAX、nearest_order=0を初期化する。

DBL_MAX はカテゴリー別)。
 
Valeriy Yastremskiy #:
DBL_MAX はカテゴリー別)。

主なものは動作します)

OrderOpenPriceが最大のOP_BUYを見つけ、そのOrderProfitを決定する方法。
組み合わせができない、全て尻切れトンボで動いてしまう...。すぐにでも例を挙げていただければ) ありがとうございます)

 
makssub #:

主なものは動作します)

OrderOpenPriceが最大のOP_BUYを見つけ、そのOrderProfitを決定する方法。
組み合わせができない、全て尻切れトンボで動いてしまう...。すぐにでも例を挙げていただければ) ありがとうございます)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

もう終わったと言いたかったんです。

でも、よりコンパクトになりましたね。ご指摘の通りです(笑)。

感謝

 
mql5プログラムでファイルをディスクに書き込まず、RAMだけで作業する方法、高速化する方法。mql5のプログラムから自分のコンピュータのプログラムにデータを転送したい。ネットワーク機能なしで可能か?ファイルや配列、変数である必要はなく、さらに良い。Pythonの統合モジュールとWebソケットの2つの方法しか知らないのですが、他に方法はありますか?
 

OnDeInit()でループにより全てのオブジェクトを削除しています(シグナルバーを示す矢印とボタン1つ)。

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

ObjectsDeleteAll()を意識していますが、やはりループでやると、1回で半分しか削除されません。実はここにループの仕事があるのですが、なぜそうなるのか理解できません。

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

OnDeInit()でループにより全てのオブジェクトを削除しています(シグナルバーを示す矢印とボタン1つ)。

ObjectsDeleteAll()があることは承知していますが、やはりループでやると、1回で半分しか削除されないのです。実はループの仕組みはこうなっているのですが、なぜこのようになるのかが理解できません。

削除時のループを逆にしてほしい。

for(int i=obj_total-1; i>=0; i--)

で、これはグラフィカル・オブジェクトの削除だけでなく、ターミナルのリストにあるあらゆるオブジェクトの削除に一般的に適用されます。

 
Nerd Trader #:

OnDeInit()でループにより全てのオブジェクトを削除しています(シグナルバーを示す矢印とボタン1つ)。

ObjectsDeleteAll()があることは承知していますが、やはりループでやると、1回で半分しか削除されないのです。実はここにループの仕組みがあるのですが、なぜそうなるのか理解できません。

しかし、この方法で試すと、すべての名前を入力する必要があります。

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+