기고글 토론 "일목균형 지표로 트레이딩 시스템을 설계하는 방법 알아보기"

 

새로운 기고글 일목균형 지표로 트레이딩 시스템을 설계하는 방법 알아보기 가 게재되었습니다:

다음은 가장 인기 있는 지표인 거래 시스템을 설계하는 방법에 대한 시리즈의 새로운 기사입니다. 일목균형 지표에 대해 자세히 설명하고 이 지표로 거래 시스템을 설계하는 방법에 대해 설명합니다.

이제 우리는 각 전략에 대한 청사진을 만들 것입니다. 이 단계는 우리가 무엇을 이해하는 데 도움이 될 단계별 청사진을 설계하는 데 도움이 될 것이기 때문에 거래 시스템을 만드는 단계에서 가장 중요하다고 할 수 있습니다

  • 전략 1: 일목균형 트렌드 식별자:

이 전략을 바탕으로 우리는 종가, 센코우 스팬 A, 센코우 스팬 B의 값을 지속적으로 확인할 수 있는 거래 시스템을 만들어야 합니다. 상승 추세 또는 하락 추세가 있는지 결정하기 위해 이러한 값을 비교하여 어느 것이 더 크거나 작은지 결정하고 종가 및 일목균형 라인 값이 차트에 설명으로 표시되는 거래 시스템이 필요합니다. 종가가 스팬 B보다 크고 종가가 스팬 A보다 크면 추세가 상승합니다. 종가가 스팬 B보다 낮고 종가가 스팬 A보다 낮으면 하락 추세입니다.

일목 추세 식별자 청사진

작성자: Mohamed Abdelmaaboud

 
좋은 프레젠테이션입니다, 마음에 들었습니다
 
ApostleT #:
이것은 좋은 프레젠테이션입니다, 나는 그것을 좋아했습니다
댓글 감사합니다
 
매우 훌륭하고 유용한 강의였습니다.
감사합니다
 
거래 신호를 더 강하게 만들려면 설명한 전략을 하나로 결합하는 것이 더 낫다고 생각합니다.
 

훌륭한 기사 - 한 가지 사소한 문제는 샘플 코드에서 메모리 누수가 발생했다는 것입니다.


DeInit()에서 객체를 삭제하여 이 문제를 해결했습니다.

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   delete Ichimoku;
  }
 
안녕하세요, mql5를 버깅하는 데 도움이 필요합니다:
파일:
trendtang.mq5  3 kb
 

마음 :

닫기> 과거 구름과 닫기> 과거 텐칸센, 닫기> 과거 키준센과 닫기> 현재 구름, spanA> spanB일 때 spanB 라임그린 그리기 :


#include <지표/트렌드.mqh>

시이치모쿠*이치모쿠;

//--- 인디케이터 설정

#속성 인디케이터_차트_창

#속성 인디케이터_버퍼 9

#속성 인디케이터_플롯 1

#속성 인디케이터_유형1 DRAW_LINE

#속성 표시기_색상1 라임그린

#속성 표시기_폭1 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;

else

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]

&& close[i]>sp2ht[i]

&& close[i]>sp1qk[i]

&& close[i]>sp2qk[i]

)

{

TRENDTANG[I]=SP2TL[I];

}

else

{

trendtang[i]=EMPTY_VALUE;

}

}

//---

반환(요금_총계);

}