記事「MQL5を使った線の扱い方」についてのディスカッション

 

新しい記事「MQL5を使った線の扱い方」はパブリッシュされました:

今回は、MQL5によるトレンドラインや支持線と抵抗線といった、最も重要な線の扱い方についてご紹介します。

トレンドラインは、トレンドラインの種類に基づいて注文を出すことで、取引に使用することができます。上昇トレンドラインがある場合、価格が上からこのトレンドラインを試しながら下に移動し、その後上に反発することが予想できるので、このトレンドライン付近で買い注文を出すことができます。逆に、下降トレンドラインがある場合、価格がこのトレンドラインを下から試しながら上昇し、その後下に反発することが予想できるので、この下降トレンドラインに沿って空売りまたは売り注文を出すことができます。

以下は、上昇トレンドラインの場合です。

上昇トレンドライン

明らかに上昇していることは先ほどの図でわかりますが、直近の3つの安値を結んでみると、上昇に向かう同じ線上にあることがわかります。

作者: Mohamed Abdelmaaboud

 
しかし、なぜObjectCreate(_Symbol, "supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low); ?
enough ObjectCreate(_Symbol, "supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low);
 
MetaQuotes:

MQL5ツールを使って線を扱う方法」が掲載されました:

著者:Mohamed Abdelmaaboud

これは初心者にとって興味深い記事ですが、Expert Advisorを正しく動作させるためには、コードを少し修正する必要があります。

ありがとう、ウラジミール。

//+------------------------------------------------------------------+
//|上昇トレンドラインmq5 |
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pLow[];
   ArraySetAsSeries(pLow,true);
   int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);
   if(copy_low>0)
     {
      int candleLow = ArrayMinimum(pLow,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"UpwardTrendline");
      ObjectCreate(0,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,
                   pArray[0].time,pArray[0].low);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|DownwardTrendlineシステム。mq5
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
   if(copy_high>0)
     {
      int candleHigh = ArrayMaximum(pHigh,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"DnwardTrendline");
      ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,
                   pArray[0].time,pArray[0].high);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|サポートラインシステム。mq5|サポートラインシステム
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pLow[];
   ArraySetAsSeries(pLow,true);
   int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);
   if(copy_low>0)
     {
      int candleLow = ArrayMinimum(pLow,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"supportLine");
      ObjectCreate(0,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low,
                   pArray[0].time,pArray[0].low);
      ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);
      ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);
     }
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|レジスタンス・ライン・システムmq5|抵抗線システム
//+------------------------------------------------------------------+
void OnTick()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
   if(copy_high>0)
     {
      int candleHigh = ArrayMaximum(pHigh,0,candles);
      MqlRates pArray[];
      ArraySetAsSeries(pArray,true);
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
      ObjectDelete(0,"resistanceLine");
      ObjectCreate(0,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,
                   pArray[0].time,pArray[0].high);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);
      ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
     }
  }
//+------------------------------------------------------------------+
 
MrBrooklin #:

初心者には興味深い記事だが、EAを正しく動作させるには、コードを少し調整する必要がある。

ありがとう、ウラジミール。




ご丁寧なコメントをありがとう。
 
あなたの線の引き方はとても素晴らしい。トレンド・ラインに関する 1つの見解:2つ目のアンカー・ポイントが常に0インデックス・バーでは、あまり意味がありません。理想的なのは、特定の基準に基づいて2番目のアンカー・ポイントを定義することです。例えば、最初のバーから最短距離で 30 バー離れた最高値の 2 番目のバーや、翌日の最高値のバーなどです。

記事掲載おめでとうございます。
 
Andrei Pereira トレンド・ラインに関する 1つの見解:2つ目のアンカー・ポイントが常に0インデックス・バーでは、あまり意味がありません。理想的なのは、特定の基準に基づいて2番目のアンカー・ポイントを定義することです。例えば、最初のバーから最短距離で30本離れた、価格が最も高い2本目のバーや、翌日の価格が最も高いバーを採用するなどです。 記事化おめでとうございます。

コメントありがとうございます。

 
Mohamed Abdelmaaboud #:
ご丁寧なコメントをありがとう。

もう10ヶ月近く経ちますが、この記事の筆者による彼のコードの変更はありません。))

ありがとう、ウラジミール。

 
MrBrooklin #:

ほぼ10ヶ月が経過したが、記事の著者はコードに何の変更も加えていない。))

よろしく、ウラジミール。

ご指摘とご投稿ありがとうございます。編集のために送ります。