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

 

簡単なエントリーに挑戦しています。私が望んだ通り、もし始値が終値より ポイント数だけ小さければ(前のバーで)、利益確定と損切りを考慮して新しいバーの始めに買います。しかし、何か私の思惑とは違う動きをしているようです。理解するのを助ける


   MqlRates rt[1];

   if(CopyRates(_Symbol,_Period,0,1,rt)!=1)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

      if(rt[1].open - rt[1].close >= padenie) 
	 {
         signal=ORDER_TYPE_BUY;
         printf(rt[1].open+"____"+rt[1].close);
         }
         
      if(signal !=WRONG_VALUE && TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,1,SYMBOL_ASK,SymbolInfoDouble(_Symbol,SYMBOL_BID)-sl,SymbolInfoDouble(_Symbol,SYMBOL_ASK)+tp);
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
BorisD:

簡単なエントリーに挑戦しています。私が望んだ通り、もし始値が終値より ポイント数だけ小さければ(前のバーで)、利益確定と損切りを考慮して新しいバーの始めに買います。しかし、何か私の思惑とは違う動きをしているようです。よろしくお願いします


エラー1:コピーするアイテムが1つなので、アイテムのインデックスは[0]になります。

始値100、終値105 - ブルバー。オープン-クローズ=100-105=-5.'-5'は結果が負の数であるため、常に設定値より低くなります。

始値110、終値103 - 弱気のバー。オープン-クローズ=110-103=7。7」は正の数であり、これはすでに正しく動作します。


要約すると、インデックスへの参照を修正する([1]の代わりにインデックス[0]を参照する必要がある)。計算する前に、ローソクの種類を考慮する:それは強気か弱気か。

 

DRAW_HISTOGRAM2のコンストラクションの問題の続きです。

// Индикатор Проба DRAW_HISTOGRAM2.mq5
//+------------------------------------------------------------------+
#property indicator_chart_window                   
#property indicator_buffers   20                    
#property indicator_plots     20                  

#property indicator_color1    clrOrange                
#property indicator_color2    clrOrange               
#property indicator_color3    clrLimeGreen        
#property indicator_color4    clrLimeGreen        

#property indicator_type5     DRAW_HISTOGRAM2
#property indicator_color5    clrOrange               
#property indicator_type6     DRAW_HISTOGRAM2
#property indicator_color6    clrLimeGreen        

//#property indicator_color9    clrRed                

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[],  Line_Red[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit() 
   { 
   SetIndexBuffer     (0, Line_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(0, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (1, Line_High_Dn,      INDICATOR_DATA); 
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE,    DRAW_LINE);      

   SetIndexBuffer     (2, Line_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(2, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (3, Line_Low_Dn,       INDICATOR_DATA);
   PlotIndexSetInteger(3, PLOT_DRAW_TYPE,    DRAW_LINE);     

   SetIndexBuffer     (4, Hist_High_Up,      INDICATOR_DATA); 
   SetIndexBuffer     (5, Hist_High_Dn,      INDICATOR_DATA);

   SetIndexBuffer     (6, Hist_Low_Up,       INDICATOR_DATA);
   SetIndexBuffer     (7, Hist_Low_Dn,       INDICATOR_DATA);

   //SetIndexBuffer     (8, Line_Red,          INDICATOR_DATA);
   //PlotIndexSetInteger(8, PLOT_DRAW_TYPE,    DRAW_LINE);     
   }
//+------------------------------------------------------------------+
//| 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[]   )                   
   {  
   int i;
   for(i=prev_calculated; i<=rates_total-1; i++)      
      {
      Line_High_Up[i] = high[i] + 50*_Point;
      Line_High_Dn[i] = high[i] + 30*_Point;
      Line_Low_Up[i]  = low[i]  - 30*_Point;
      Line_Low_Dn[i]  = low[i]  - 50*_Point;

      Hist_High_Up[i] = Line_High_Up[i];
      Hist_High_Dn[i] = Line_High_Dn[i];
      Hist_Low_Up[i]  = Line_Low_Up[i];
      Hist_Low_Dn[i]  = Line_Low_Dn[i];
      
      //Line_Red[i]     = low[i]  - 70*_Point;
      }
   return(i-1);
   }           
//+------------------------------------------------------------------+

今回の指標では、両方のヒストグラムを作成することが可能であった。意外な特殊性は次のようなものだった。

エントリ#property indicator_colorn、#property indicator_typenなどにおける通常の行では、nの値はバッファインデックスより 1多い。
また、この条件は、バッファのインデックスが行で指定されず、隣接するインデックスの間に空き領域がある場合でも適用されます。
例えば、インデックス0、1、2、3、8を使用した場合、5行すべて表示されます。

別の要件として、DRAW_HISTOGRAM2タイプのコンストラクションがある。
ヒストグラムが行で指定されている場合,エントリ #property indicator_colorn, #property indicator_typen など
n値は,バッファインデックスではなくカウントから算出されます.この例では、インデックス5と6が指定されているが、論理的には5と7が予想される。

このような無意味なことをしても、2つのヒストグラムに続く正則線(赤)のnの値がどうあるべきかがまったく理解できない。
この例では、n=9の値を指定していますが、うまくいかないので、バッファ8に関する行はすべてコメントアウトしています。他のnの値でもうまくいかなかった。

結論:すべてのヒストグラムは、バッファリストの最後の行で指定する必要があります。また、その値は、(バッファインデックスがあるにもかかわらず)定量的なカウントで行だけ計算する必要があります。
それを理解することは不可能ですが、共に生きていくことは可能です。

ちなみに:INDICATOR_CALCULATIONSとINDICATOR_DATAのバッファの順番の影響は検出されませんでした。

Vladimir Karputov氏、Artem Trishkin氏の問題解決への参加に感謝します。

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5:

DRAW_HISTOGRAM2のコンストラクションの問題の続きです。

今回の指標では、両方のヒストグラムを作成することが可能であった。意外な特殊性は次のようなものだった。

エントリ#property indicator_colorn、#property indicator_typenなどにおける通常の行では、nの値はバッファインデックスより 1多い。
また、この条件は、バッファのインデックスが行で指定されず、隣接するインデックスの間に空き領域がある場合でも適用されます。
例えば、インデックス0、1、2、3、8を使用した場合、5行すべて表示されます。

別の要件として、DRAW_HISTOGRAM2タイプのコンストラクションがある。
ヒストグラムが行で指定されている場合,エントリ #property indicator_colorn, #property indicator_typen など
n値は,バッファインデックスではなくカウントから算出されます.この例では、インデックス5と6が指定されているが、論理的には5と7が予想される。

このような無意味なことをしても、2つのヒストグラムに続く正規の線(赤)の指数がどうあるべきかは全く理解できない。
この例では、値n=9を指定していますが、うまくいかないので、バッファ8に関するすべての行をコメントアウトしています。他のnの値でもうまくいかなかった。

結論:すべてのヒストグラムは、バッファリストの最後の行で指定する必要があります。また、その値は、(バッファインデックスがあるにもかかわらず)定量的なカウントで行だけ計算する必要があります。
それを理解することは不可能ですが、共に生きていくことは可能です。

ちなみに:INDICATOR_CALCULATIONSとINDICATOR_DATAのバッファの順番の影響は検出されませんでした。

Vladimir Karputov氏、Artem Trishkin氏には、問題解決に参加していただき、ありがとうございました。

どういたしまして。しかし、問題は解決していない。

指標における異なるバッファタイプの順番に依存することはない。計算されたものだけが、描画されるものの後にあるはずです。

 
Artyom Trishkin:

どういたしまして。でも、問題は解決していませんよね。

指標は、異なるバッファタイプの順番には依存しません。計算されたものだけが、描かれているものの後でなければならないのです。

あまり確証はありませんが、それでも私は、この2つの発言は間違っていると思います。

依存性がない」ことについては最後の例では、8番目のバッファをマッピングする方法は得られませんでした .順番はどうしたらいいのか...もしかしたら、できるかも?

描かれた後に計算された...」について。私のインジケータは200以上のバッファを使用し、そのうちの最初の100は計算されたバッファです。
私の場合、これらはすべて単純な線なので、#propertyのnはバッファのインデックス 値から計算されます n=b+1です。そして、シンプルな線が表示されます。混乱はヒストグラムの登場から始まる。

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
User_mt5:

あまり確証はありませんが、それでも私は、この2つの発言は間違っていると思います。

依存性がない」ことについては最後の例では、8番目のバッファをマッピングする方法は得られませんでした。順番はどうしたらいいのか...もしかしたら、できるかも?

描かれた後に計算された...」について。私のインジケータは200以上のバッファを使用し、そのうちの最初の100は計算されたバッファです。
私の場合、これらはすべて単純な線なので、#propertyのnはバッファのインデックス 値から計算されます n=b+1です。そして、シンプルな線が表示されます。誤解はヒストグラムの見た目から始まる。

私は反論するつもりはありません。バッファは、絶対に好きな順番で描画できるように作っています。しかし、間に計算バッファを入れた途端、描画するインジケータのグラフィックプロットがチャート上に表示されなくなる。その値はデータウィンドウに残ります。インジケーターとそのバッファの作成については、記事で説明するために多くのテストを実施しました。計算バッファ(インジケータバッファの宣言順での位置)だけが、描画バッファの表示/非表示に何らかの影響を与えるという結論に達しました。

 
Artyom Trishkin:

反論するつもりはない。私は、描画バッファを任意の順序で作成します。しかし、間に計算バッファを追加した途端、描画するインジケータのグラフィカルなコンストラクションがチャート上に表示されなくなってしまうのです。その値はデータウィンドウに残ります。インジケーターとそのバッファの作成については、記事で説明するために多くのテストを実施しました。計算バッファ(インジケータバッファの宣言順での位置)だけが、描画されたバッファの表示/非表示に何らかの影響を与えるという結論に達しました。

私もよくわかりません。

ここしばらく(3〜4ヶ月前)、シンボルウィンドウ全般で理解しがたい、憂慮すべき現象が起こっている。

まず、インジケーターの描画が、何の理由もなく、下や右など任意の方向に単純にずれることがあることに気づきました。新しいティックになると、インジケータ全体が突然スライドダウンします。PCの電源を最初に入れたときにも同じことが起こることがあります。

次に、いくつかのバッファが削除され、その後コンパイルされた場合、これらの削除されたコンストラクションの「トレース」は、何らかの原因不明のイベント(TFの前後、新しい再コンパイル、設定の更新など)まで残っています。(技術的には配列は強制的にしかクリーニングされず、MT5では配列が不要な場合は単に「登録解除」されるだけですが、データは残ります。もちろん、これはすべてMT5の不具合です)
--。

祖国の歴史は予測できない、というジョークがある。MT5についても同じことが言える: あまりにも神秘的:)
--。

ところで、前回の発言によると、私のリアル・インジケータを少し変更しました。うまくいかない。反射配列にDRAW_HISTOGRAM2とINDICATOR_CALCULATIONSを追加してみました - 動作します。

Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - Справка по MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
User_mt5:


MQL5ウィザードを使用してExpert Advisorを空白にすることで、グラフィカルな 構造やインジケータ・アレイを宣言する際に、できるだけエラーを少なくすることができます。

 
User_mt5:

私もよく わかりません。

ここしばらく(3〜4ヶ月前)、シンボルウィンドウ全般で理解しがたい、憂慮すべき現象が起こっています。

まず、インジケーターの構造が、何の理由もなく、下や右など、任意の方向に単純にシフトすることがあることに気づきました。新しいティックになると、インジケータ全体が突然スライドダウンします。PCの電源を最初に入れたときにも同じことが起こることがあります。

次に、いくつかのバッファが削除され、その後コンパイルされた場合、これらの削除されたコンストラクションの「トレース」は、何らかの原因不明のイベント(TFの前後、新しい再コンパイル、設定の更新など)まで残っています。(技術的には配列は強制的にしかクリーニングされず、MT5では配列が不要な場合は単に「登録解除」されるだけですが、データは残ります。もちろん、これはすべてMT5の不具合です)
--。

祖国の歴史は予測できない、というジョークがある。MT5についても同じことが言える: あまりにも神秘的:)
--。

ところで、前回の発言にしたがって、私のリアル・インジケータを少し変更しました。うまくいかない。反射配列にDRAW_HISTOGRAM2とINDICATOR_CALCULATIONSを追加してみました - 動作します。

私のことは どうでもいい。

あとは、あなたのバグと不注意です(インジケーターのラインシフトは別ですが、記憶が正しければ修正されていたように思います)。

どのようなビルドをお持ちですか?

 
Vladimir Karputov:

MQL5ウィザードを使用してExpert Advisorを作成すれば、グラフィカルな 構造やインジケータ配列を宣言する際に、できるだけエラーを少なくすることができます。

前回の例で8番目のバッファを正しく反映させる方法を教えてください。アマチュアリズムもなく?
ルールを教えてください。

アルチョム・トリシキン

私のことは どうでもいい。

あとはあなたのミスや不注意です(インジケーターのラインずれは別ですが、記憶が正しければ修正されていたような気がします)。

あなたの体型は?

前回の例で8番目のバッファを正しく反映させる方法を教えてください。細心の注意を払って?
その理由は?
2530を構築。

--
私はまだ勉強中ですので、このようなことが書かれているドキュメントの場所を教えていただけると非常にありがたいです。