沒有自帶的指令
需要另外自定義一個函數塊做計算
不是很懂mt的编程,很麻烦么
https://www.mql5.com/zh/docs/series
如2楼所述,MT5没有专门函数定位到最大成交量的K线。
一方面,外汇交易没有统一交易所,所以没法提供真实成交量;
另一方面,一段区间里成交量最大的K线通常是最高价或最低价。可以用ihighest或ilowest获得。
那么收盘价的公式就是:
iClose(NULL,PERIOD_CURRENT,iHighest(NULL,0,MODE_CLOSE,count,start))

以下使用chatgtp查询的,但载入mt5有几处错误,不知道您是否可以看一下问题出在哪里,如何改一下?
// 获取18:00到21:00之间成交量最大的K线
datetime start = StrToTime("18:00"), end = StrToTime("21:00"); int max_volume_bar = iBarShift(_Symbol, PERIOD_M1, end); int max_volume = -1; for (int i = max_volume_bar; i >= 0; i--) { int volume = (int) iVolume(_Symbol, PERIOD_M1, i); datetime time = iTime(_Symbol, PERIOD_M1, i); if (volume > max_volume && time >= start) { max_volume = volume; max_volume_bar = i; } }
// 绘制水平线 double price = iClose(_Symbol, PERIOD_M1, max_volume_bar); ObjectCreate("Max Volume Line", OBJ_HLINE, 0, Time[max_volume_bar], price); ObjectSet("Max Volume Line", OBJPROP_COLOR, Red); ObjectSet("Max Volume Line", OBJPROP_STYLE, STYLE_DASH);
我载入后,提示
以下使用chatgtp查询的,但载入mt5有几处错误,不知道您是否可以看一下问题出在哪里,如何改一下?
// 获取18:00到21:00之间成交量最大的K线
datetime start = StrToTime("18:00"), end = StrToTime("21:00"); int max_volume_bar = iBarShift(_Symbol, PERIOD_M1, end); int max_volume = -1; for (int i = max_volume_bar; i >= 0; i--) { int volume = (int) iVolume(_Symbol, PERIOD_M1, i); datetime time = iTime(_Symbol, PERIOD_M1, i); if (volume > max_volume && time >= start) { max_volume = volume; max_volume_bar = i; } }
// 绘制水平线 double price = iClose(_Symbol, PERIOD_M1, max_volume_bar); ObjectCreate("Max Volume Line", OBJ_HLINE, 0, Time[max_volume_bar], price); ObjectSet("Max Volume Line", OBJPROP_COLOR, Red); ObjectSet("Max Volume Line", OBJPROP_STYLE, STYLE_DASH);
我载入后,提示
ChatGPT對C++或是python可以給到比較準確的代碼 MQL會問題比較多
未經過訓練 很難一次就給出正確的代碼的
目視你提供的代碼 邏輯上應該不會錯太多 但是指令錯誤 需要修改