我的 心:
绘制spanB石灰绿色时,接近>过去的云和接近>过去的天干森,接近>过去的木槿森和接近>现在的云,spanA>spanB:
#include <Indicators/Trend.mqh> (包括<指标/趋势.mqh>)
CiIchimoku*Ichimoku;
//--- 指标设置
#property indicator_chart_window
#property indicator_buffers 9
#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 LimeGreen
#property 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;
如果
sp1tl[i]>=sp2tl[i]
&& close[i]>tenqk[i]
&& close[i]>kijqk[i]
&& close[i]>sp1ht[i]
&& close[i]>sp2ht[i]
&& close[i]>sp1qk[i]
&& close[i]>sp2qk[i]
)
{
trendtang[i]=sp2tl[i];
}
否则
{
trendtang[i]=EMPTY_VALUE;
}
}
//---
return(rates_total);
}

新文章 学习如何基于 Ichimoku 设计交易系统已发布:
这是我们系列中有关如何基于最热门指标设计交易系统的一篇新文章,这回我们将详细讨论 Ichimoku 指标,以及如何依据该指标设计交易系统。
基于这一策略,我们需要创建一个能够持续检查收盘价、Senkou Span A 和 Senkou Span B 数值的交易系统。 我们需要交易系统在这些值之间进行比较,以便决定哪个值更大或更小,以此决定是否存在上升趋势或下降趋势,并在图表上显示收盘价和 Ichimoku 指标线的数值。 如果收盘价大于 span B ,且收盘价大于 span A,则趋势向上。 如果收盘价低于 span B ,且收盘价大于 span A,则趋势向下。
作者:Mohamed Abdelmaaboud