記事「一目均衡表による取引システムの設計方法を学ぶ」についてのディスカッション

 

新しい記事「一目均衡表による取引システムの設計方法を学ぶ」はパブリッシュされました:

最も人気のある指標の取引システムを設計する方法についての連載の新しい記事です。今回は一目均衡表とこの指標によって取引システムを設計する方法について説明します。

このセクションでは、各戦略の設計図を作成します。このステップは、私たちが何をしたいのかを正確に理解するためのステップバイステップの設計図に役立つので、取引システムを作成するミッションの中で最も重要なステップであると思います。

  • 戦略1:Ichimoku Trend Identifier

この戦略では、終値、先行スパンA、先行スパンBの値を連続的にチェックできる売買システムを作る必要があります。これらの値を比較して、どちらが大きいか小さいかを判断し、上昇トレンドか下降トレンドかを判断し、終値と一目線の値と共にチャート上にコメントとして表示する取引システムが必要です。終値がスパンBとスパンAを上回われば、トレンドは上昇しています。終値がスパンとスパンAを下回われば、トレンドは下降しています。

Ichimoku Trend Identifierの設計図

作者: Mohamed Abdelmaaboud

 
これは良いプレゼンテーションだ。
 
ApostleT #:
これは良いプレゼンテーションだ。
コメントありがとう
 
とても良い、有益なレッスンだった。
ありがとうございました。
 
私は、売買シグナルをより強力なものにするためには、説明したような戦略をひとつにまとめた ほうがいいと思う。
 

素晴らしい記事だ。ただ1つ小さな問題があるとすれば、サンプル・コードでメモリー・リークが発生したことだ。


DeInit()でオブジェクトを削除することで解決しました。

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete Ichimoku;
  }
 
みなさん、mql5をバグらせるのを手伝ってください:
ファイル:
trendtang.mq5  3 kb
 

私の 心:

スパンBをライムグリーンで描く 閉じる > 過去の雲と閉じる > 過去の天覧船と閉じる > 過去の機縁と閉じる > 現在の雲、スパンA > スパンB :


#include <Indicators/Trend.mqh> を参照してください。

CiIchimoku*Ichimoku;

//--- インジケータの設定

#プロパティ indicator_chart_window

#プロパティ indicator_buffers 9

#プロパティ indicator_plots 1

#プロパティ indicator_type1 DRAW_LINE

#プロパティ indicator_color1 ライムグリーン

#プロパティ indicator_width1 2


double sp1tl[];

double sp2tl[];

double trendtang[];

double tenqk[];

double kijqk[];

double sp1ht[];

double sp2ht[];

double sp1qk[];

double sp2qk[];


void OnInit()

{

Ichimoku = new CiIchimoku();

Ichimoku.Create(_Symbol,PERIOD_CURRENT,9,26,52);

SetIndexBuffer(0,trendtang,INDICATOR_DATA);

SetIndexBuffer(1,sp1tl,INDICATOR_DATA);

SetIndexBuffer(2,sp2tl,INDICATOR_DATA);

SetIndexBuffer(3,tenqk,INDICATOR_DATA);

SetIndexBuffer(4,kijqk,INDICATOR_DATA);

SetIndexBuffer(5,sp1ht,INDICATOR_DATA);

SetIndexBuffer(6,sp2ht,INDICATOR_DATA);

SetIndexBuffer(7,sp1qk,INDICATOR_DATA);

SetIndexBuffer(8,sp2qk,INDICATOR_DATA);

IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);

//--- インデックスが描画される最初のバーを設定します。

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,51);

//--- 描画時に線がずれる

PlotIndexSetInteger(0,PLOT_SHIFT,25);

}

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 start;

//---

if(prev_calculated==0)

start=0;

さもなければ

start=prev_calculated-1;

//--- メインループ

for(int i=start; i<rates_total && !IsStopped(); i++)

{

MqlRates PArray[];

int Data=CopyRates(_Symbol,_Period,0,1,PArray);


Ichimoku.Refresh(-1);

double spanAtl= Ichimoku.SenkouSpanA(0);

double spanBtl= Ichimoku.SenkouSpanB(0);

double spanAht= Ichimoku.SenkouSpanA(-25);

double spanBht= Ichimoku.SenkouSpanB(-25);

double spanAqk= Ichimoku.SenkouSpanA(-51);

double spanBqk= Ichimoku.SenkouSpanB(-51);

double tenkanqk= Ichimoku.TenkanSen(-25);

double kijunqk= Ichimoku.KijunSen(-25);

sp1tl[i]=spanAtl;

sp2tl[i]=spanBtl;

tenqk[i]=tenkanqk;

kijqk[i]=kijunqk;

sp1ht[i]=spanAht;

sp2ht[i]=spanBht;

sp1qk[i]=spanAqk;

sp2qk[i]=spanBqk;

if(

sp1tl[i]>=sp2tl[i]とする。

&& close[i]>tenqk[i]である。

&& close[i]>kijqk[i] とする。

&& close[i]>sp1ht[i]

&& クローズ[i]>sp2ht[i]

&& クローズ[i]>sp1qk[i]

&& クローズ[i]>sp2qk[i]

)

{

trendtang[i]=sp2tl[i];

}

else

{

trendtang[i]=EMPTY_VALUE;

}

}

//---

return(rates_total);

}