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

 
Sergey Savinkin:

効くんです。))

そして、なんと巧妙なフォーラムエンジン...。コードの貼り付け方については、あなた自身がリンクを貼って説明しています。

 
Alexey Viktorov:

そして、本当に...なぜ、より良くなろうとするのか...

これらの関数にどれだけの余分なコードが書かれているか、また、これらの自作関数を呼び出してどれだけのコードを書いているかを数えてみてください。

私はトレーディングがもっと上手になりたいと願っていますし、そのためにはコーディングが必要です。

年末に0.1秒の差になるのなら、悩む意味はあるのでしょうか?

このコードを関数なしで作って高速化する方法を教えてください。

 
Aleksey Vyazmikin:

私はトレーディングがもっと上手になるように努力しており、その目標に向かって前進するためにコーディングが必要です。

年末に0.1秒の差になるのなら、悩む意味はあるのでしょうか?

このコードを関数なしで作って高速化する方法を教えてください。

そうやって、全部書いてもらっているんですね。ただ、それはすべてmql4の下に包まれています。そんな包み隠さず教えてください。

そして、これは

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

アレクセイ・ヴャズミキン さん 2018.05.24 12:30

すべて断片的に集めたものですが、似たような機能の本体はもともとここから持って きたもので、何が残っているのか本当にわかりません。

ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);

      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);
      default: return(PERIOD_CURRENT);
     }
  }

ただ、静かな酷さです...。これはいったい何なんだ?

コースというほどでもないんですけどね。すみません、もう批判はやめてください。

 
Alexey Viktorov:

そうやって、全部書いてもらっているんですね。ただ、それはすべてmql4で包まれている。そんな包み隠さず教えてください。

そして、この...


は、とにかくひどい・・・。これはどういうことなのでしょうか?

そして、一般的にここにはコースがありません。すみません、もう批判はやめてください。

まあ、初心者のためにもっといい方法を紹介しようという気もないので...。

MT4では、時間帯が分単位で割り切れる数字で指定されることが多く、MT5では論理的ではありませんが、コードの移植が容易になりますね。

 
Aleksey Vyazmikin:

まあ、初心者に最適な方法を示そうという気はないので......。

MT4では、時間帯を分で割り切れる数字で表すことが多く、MT5ではすでに論理的ではありませんが、コードの移植が容易になります。

なぜ分数に換算して 元に戻すのか?

16408はPERIOD_D1より、49153はPERIOD_MN1より分かりやすいですか?

Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
Периоды графиков - Константы графиков - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql4-программа. Перечисление ENUM_TIMEFRAMES содержит значения стандартных таймфреймов, онлайновые графики финансовых...
 

こんにちは、EAで、チャートの 高い期間から ATRの現在値を知りたいのです。整数値。

#include <Trade\SymbolInfo.mqh> 
CSymbolInfo    m_symbol;
//===
input int             ATRper=7;         //ATR Period
input ENUM_TIMEFRAMES ATRtimeframe=PERIOD_CURRENT;//«Time_Frame_ ATR»
int            handle_iCustom;
double atr_tp;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   handle_iCustom=iATR(m_symbol.Name(),ATRtimeframe,ATRper);
//--- 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",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int Bar_=0;
   atr_tp= iCustomGet(handle_iCustom  ,0,Bar_);
   atr_tp=NormalizeDouble(atr_tp,Digits())/_Point;
   atr_tp=(int)atr_tp;
   Comment("atr_",atr_tp);
  }
//+------------------------------------------------------------------+
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }
///

どこにエラーがあるのか?

 
lil_lil:

こんにちは、EAで、チャートの 高い期間から ATRの現在値を知りたいのです。整数値。

どこにエラーがあるのか?

なんて書いてあるんだ?何を言っているのだろう?

 
Sergey Savinkin:

なんて書いてあるんだ?何を悪口言ってんだ?

そうじゃなくて、嘘なんです。高値のインジケータは「8」を示しているが、アドバイザーは「6」と解説している

 
lil_lil:

誓わない、嘘をつく。高値圏のインジケータは「8」と表示されるが、コメントではEAが「6」と表示される。

5分足、期間ATR 14、時間枠ATR - 1時間足で貴社のEAを走らせました。コメントもチャートも、すべてが均等に表示されています。

 
lil_lil:

今のやつでもATRtimeframe=PERIOD_CURRENTで寝てます。


コードのことは全然関係ないと思うんです。以下は私のPERIOD_CURRENT です。


理由: