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

 
Roman Sharanov:

何も変わらず、e+321と表示されます。

フルコードが表示されていませんね。インジケータからデータを取得する、それがどのような配列で、どれくらいの大きさなのかがわからないのです。

 
Ai 私は非常に愚かでした。初期化で愚かなミスを犯し、そのためにすべてがうまくいきませんでした、ありがとうございます。
 
Vitaly Muzichenko:

うまくいく!一番簡単な解決方法です。

void OnStart()
{
  double d = 1.5;
  
  Print((long)d == d ? (string)(long)d : (string)d);
}
 
Roman Sharanov:

以下はその例です。すべてのインジケーターバッファから、0小節目、1小節目、2小節目の3つの項目をコピーします。

各バッファからバー#0 の値を出力する。

//+------------------------------------------------------------------+
//|                                           Simple Heiken_Ashi.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.025
*/
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"Examples\\Heiken_Ashi");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double heiken_ashi_open[],heiken_ashi_high[],heiken_ashi_low[],heiken_ashi_close[];
   ArraySetAsSeries(heiken_ashi_open,true);
   ArraySetAsSeries(heiken_ashi_high,true);
   ArraySetAsSeries(heiken_ashi_low,true);
   ArraySetAsSeries(heiken_ashi_close,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,heiken_ashi_open) || 
      !iGetArray(handle_iCustom,1,start_pos,count,heiken_ashi_high) || 
      !iGetArray(handle_iCustom,2,start_pos,count,heiken_ashi_low) || 
      !iGetArray(handle_iCustom,3,start_pos,count,heiken_ashi_close))
     {
      return;
     }
   Comment(DoubleToString(heiken_ashi_open[0],Digits()),"\n",
           DoubleToString(heiken_ashi_high[0],Digits()),"\n",
           DoubleToString(heiken_ashi_low[0],Digits()),"\n",
           DoubleToString(heiken_ashi_close[0],Digits()));
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 

  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,
                 const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+
ファイル:
 
fxsaber:

まさに「軽快」。ありがとうございました。

 

MT5端末の共有フォルダのパスを教えてください。

//--- открытие файла для записи, с флагом совестного пользования для чтения
   int han=FileOpen(subfolder+"\\experts\\files\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,",");
   if(han!=INVALID_HANDLE)// если файл открыт удачно
     {
      //ЗДЕСЬ ПРОЦЕДУРА ЗАПИСИ В ФАЙЛ
     }
 
yiduwi:

MT5端末の共有フォルダのパスを教えてください。

FILE_COMMON フラグは、すべてのクライアント端末の共有フォルダーを 担当します。

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...
 
yiduwi:

MT5端末の共有フォルダのパスを教えてください。

FILE_COMMON の追加

https://www.mql5.com/ru/docs/constants/io_constants/fileflags

Find folder: in terminal: file-open data directory - in Windows Explorer one level up and it will be \CommonFiles folder.

 
ありがとうございました。
 
プログラマー仲間の皆さん、こんにちは。馬鹿な質問で申し訳ないのですが、ずっと気になっていたことがあります。プログラムの実行方法というか、端末がどのように行を読み取るのか、その実行順序はどうなっているのか、また、その様子を見て理解するための動画はないのでしょうか。プログラムによってどのように読み取られるかを知らずに言語を学ぶのは難しいからです!!!!
理由: