初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1337 1...133013311332133313341335133613371338133913401341134213431344...1504 新しいコメント Кирилл Смирнов 2021.08.14 12:00 #13361 構造体を関数に渡して、関数内で構造体の要素を変更すると、グローバルに作成された構造体に保存されるようにするには、どうしたらよいでしょうか? Vladimir Karputov 2021.08.14 12:34 #13362 Кирилл Смирнов: 構造体を関数に渡して、関数内で構造体の要素を変更すると、グローバルに作成された構造体に保存されるようにするには、どうしたらよいでしょうか? 構造体を参照渡しする。例 //+------------------------------------------------------------------+ //| Expert 1.mq5 | //| Copyright © 2021, Vladimir Karputov | //+------------------------------------------------------------------+ #property copyright "Copyright © 2021, Vladimir Karputov" #property version "1.00" //+------------------------------------------------------------------+ //| Structure Positions | //+------------------------------------------------------------------+ struct STRUCT_POSITION { ENUM_POSITION_TYPE pos_type; // position type double volume; // position volume (if "0.0" -> the lot is "Money management") double lot_coefficient; // lot coefficient bool waiting_transaction; // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction ulong waiting_order_ticket; // waiting order ticket, ticket of the expected order bool transaction_confirmed; // transaction confirmed, "true" -> transaction confirmed //--- Constructor STRUCT_POSITION() { pos_type = WRONG_VALUE; volume = 0.0; lot_coefficient = 0.0; waiting_transaction = false; waiting_order_ticket = 0; transaction_confirmed = false; } }; STRUCT_POSITION SPosition; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- Example(SPosition); Comment(EnumToString(SPosition.pos_type)); } //+------------------------------------------------------------------+ //| Example | //+------------------------------------------------------------------+ void Example(STRUCT_POSITION &struct_position) { int res=MathRand(); if(res<32767/2) struct_position.pos_type=POSITION_TYPE_BUY; else struct_position.pos_type=POSITION_TYPE_SELL; } //+------------------------------------------------------------------+ ファイル: Expert_1.mq5 6 kb Kira27 2021.08.14 13:25 #13363 Vladimir Karputov:構造体を参照渡しする。例 ありがとうございます!この例はどこから出てきたのでしょうか? ちょうどヘルプで私の質問に関するものを探していたのですが、見つかりませんでした(( Vladimir Karputov 2021.08.14 14:05 #13364 Kira27:ありがとうございます!この例はどこから出てきたのでしょうか? ちょうどヘルプで私の質問に関するものを探していたのですが、見つかりませんでした(( 例えば、リアルな実装+作り込んだ機能。 Kira27 2021.08.14 15:40 #13365 Vladimir Karputov:リアルな実装+作り込んだ機能を例として OK、いつもありがとうございます Alexey Viktorov 2021.08.14 16:56 #13366 Vladimir Karputov:リアルな実装+作り込んだ機能を例として 悪い例です。構造体は、グローバルに宣言された変数と同様に、プログラムのどの部分でもアクセス可能です。 こちらもうまくいくでしょう。 //+------------------------------------------------------------------+ //| Structure Positions | //+------------------------------------------------------------------+ struct STRUCT_POSITION { ENUM_POSITION_TYPE pos_type; // position type double volume; // position volume (if "0.0" -> the lot is "Money management") double lot_coefficient; // lot coefficient bool waiting_transaction; // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction ulong waiting_order_ticket; // waiting order ticket, ticket of the expected order bool transaction_confirmed; // transaction confirmed, "true" -> transaction confirmed //--- Constructor STRUCT_POSITION() { pos_type = WRONG_VALUE; volume = 0.0; lot_coefficient = 0.0; waiting_transaction = false; waiting_order_ticket = 0; transaction_confirmed = false; } }; STRUCT_POSITION SPosition; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- Example(); Comment(EnumToString(SPosition.pos_type)); } //+------------------------------------------------------------------+ //| Example | //+------------------------------------------------------------------+ void Example() { int res=MathRand(); if(res<32767/2) SPosition.pos_type=POSITION_TYPE_BUY; else SPosition.pos_type=POSITION_TYPE_SELL; } //+------------------------------------------------------------------+ 構造体変数がローカルに宣言されている場合は別です。 //+------------------------------------------------------------------+ //| Structure Positions | //+------------------------------------------------------------------+ struct STRUCT_POSITION { ENUM_POSITION_TYPE pos_type; // position type double volume; // position volume (if "0.0" -> the lot is "Money management") double lot_coefficient; // lot coefficient bool waiting_transaction; // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction ulong waiting_order_ticket; // waiting order ticket, ticket of the expected order bool transaction_confirmed; // transaction confirmed, "true" -> transaction confirmed //--- Constructor STRUCT_POSITION() { pos_type = WRONG_VALUE; volume = 0.0; lot_coefficient = 0.0; waiting_transaction = false; waiting_order_ticket = 0; transaction_confirmed = false; } }; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- STRUCT_POSITION SPosition; Example(SPosition); Comment(EnumToString(SPosition.pos_type)); } //+------------------------------------------------------------------+ //| Example | //+------------------------------------------------------------------+ void Example(STRUCT_POSITION &struct_position) { int res=MathRand(); if(res<32767/2) struct_position.pos_type=POSITION_TYPE_BUY; else struct_position.pos_type=POSITION_TYPE_SELL; } //+------------------------------------------------------------------+ Alexey Kolybelnikov 2021.08.15 11:48 #13367 皆さん、こんにちは。MT5では、複数のツールで作業する際に、ギガバイト単位のデータを読み込んでいます。設定で制限する方法はないのでしょうか?月足、週足、日足のチャートをMT4と同じように描画したい。つまり、すべてのバーが(始値、高値、安値、終値)で、余計な内部履歴はない。そして、すでに日中バーを持つチャートは、現在のMT5の原則(実装)に従って作られています。 Valeriy Yastremskiy 2021.08.16 18:35 #13368 Vladimir Makhnin: mt5でタイムフレームを増加/減少させる方法は? トレーディング、自動売買システム、ストラテジーテストに関するフォーラム インディケーター:ホットキーでタイムフレームを変更する サン・アレックス さん 2020.08.07 11:59 mt4でもmt5でも同じだと思います。 //+------------------------------------------------------------------+ //| hotKeys.mq5 | //| Copyright 2015,Mohit Marwaha | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, Mohit Marwaha" #property link "marwaha1@gmail.com" #property version "1.20" #property indicator_chart_window #property indicator_plots 0 #property description "Keys 1 through 9 change timeframes from 1 minute to Monthly" #define KEY_MONTHLY 57 #define KEY_WEEKLY 56 #define KEY_DAILY 55 #define KEY_4HOUR 54 #define KEY_1HOUR 53 #define KEY_30MIN 52 #define KEY_15MIN 51 #define KEY_5MIN 50 #define KEY_1MIN 49 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping Comment("Copyright MohitMarwaha"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(id==CHARTEVENT_KEYDOWN) { switch(int(lparam)) { case KEY_WEEKLY: ChartSetSymbolPeriod(0,NULL,PERIOD_W1); break; case KEY_DAILY: ChartSetSymbolPeriod(0,NULL,PERIOD_D1); break; case KEY_4HOUR: ChartSetSymbolPeriod(0,NULL,PERIOD_H4); break; case KEY_1HOUR: ChartSetSymbolPeriod(0,NULL,PERIOD_H1); break; case KEY_5MIN: ChartSetSymbolPeriod(0,NULL,PERIOD_M5); break; case KEY_30MIN: ChartSetSymbolPeriod(0,NULL,PERIOD_M30); break; case KEY_15MIN: ChartSetSymbolPeriod(0,NULL,PERIOD_M15); break; case KEY_MONTHLY: ChartSetSymbolPeriod(0,NULL,PERIOD_MN1); break; case KEY_1MIN: ChartSetSymbolPeriod(0,NULL,PERIOD_M1); break; } ChartRedraw(); } } //+------------------------------------------------------------------+ Kira27 2021.08.16 20:45 #13369 Alexey Viktorov:悪い例です。構造体は、グローバルに宣言された変数と同様に、プログラムのどの部分でもアクセス可能です。これも有効でしょう。構造体変数がローカルに宣言されている場合は別です。 ありがとうございます!!! Vladimir Makhnin 2021.08.17 10:50 #13370 Valeriy Yastremskiy: ありがとうございました。 1...133013311332133313341335133613371338133913401341134213431344...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
構造体を関数に渡して、関数内で構造体の要素を変更すると、グローバルに作成された構造体に保存されるようにするには、どうしたらよいでしょうか?
構造体を参照渡しする。例
構造体を参照渡しする。例
ありがとうございます!この例はどこから出てきたのでしょうか? ちょうどヘルプで私の質問に関するものを探していたのですが、見つかりませんでした((
ありがとうございます!この例はどこから出てきたのでしょうか? ちょうどヘルプで私の質問に関するものを探していたのですが、見つかりませんでした((
例えば、リアルな実装+作り込んだ機能。
リアルな実装+作り込んだ機能を例として
OK、いつもありがとうございます
リアルな実装+作り込んだ機能を例として
悪い例です。構造体は、グローバルに宣言された変数と同様に、プログラムのどの部分でもアクセス可能です。
こちらもうまくいくでしょう。
構造体変数がローカルに宣言されている場合は別です。
mt5でタイムフレームを増加/減少させる方法は?
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
インディケーター:ホットキーでタイムフレームを変更する
サン・アレックス さん 2020.08.07 11:59
mt4でもmt5でも同じだと思います。
悪い例です。構造体は、グローバルに宣言された変数と同様に、プログラムのどの部分でもアクセス可能です。
これも有効でしょう。
構造体変数がローカルに宣言されている場合は別です。
ありがとうございます!!!