English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
가격 방향과 이동 속도에 따른 거래 아이디어

가격 방향과 이동 속도에 따른 거래 아이디어

MetaTrader 4 | 12 10월 2021, 17:33
437 0
Alexander Fedosov
Alexander Fedosov

소개

가격이 움직일 때 모든 유동성 시장은 일종의 파동 순환적 성격을 먼저 드러내고 그 다음에는 내려가는 것으로 오랫동안 알려져 왔습니다. 이는 더 높은 기간의 차트에서 분명히 볼 수 있습니다. 사인파 특성은 가격이 일정한 지속성을 갖는다는 사실을 반영합니다. 그렇지 않으면 그것은 지그재그처럼 보일 것입니다: 짧은 시간 내에 급격한 상승 및 하강 움직임. 이 현상의 원인과 이를 거래에 활용하는 방법을 알아보겠습니다.


움직임의 시작과 지속

우리 세계의 모든 움직임은 방향, 가속도 및 속도로 특징 지을 수 있습니다. 이는 유동성 시장에서도 작동합니다. 이것은 가격의 강력한 방향 움직임이 결코 가혹하게 끝날 수 없다고 말하는 하나의 중요한 규칙을 의미합니다. 그것은 기차와 비교할 수 있습니다. 전체 기차가 최대 속도로 제동을 설정할 때 제동 경로는 최대 1km가 될 수 있습니다.

그렇다면 추세는 언제 시작됩니까? 시장 참가자의 대다수가 방향의 글로벌 변화 또는 시장이나 뉴스에 영향을 미치는 일부 중요한 요소의 변화와 관련이 있는지 여부에 관계없이 어떤 이유로 반대 의견을 바꾸는 경우. 이를 통해 고려된 집단적 의견이 형성되고 추세가 시작됩니다. 시장 참가자들은 움직임이 더욱 강해지고 있으며 앞으로도 계속될 것이라는 믿음이 커지고 있습니다. 큰 선수들이 큰 포지션으로 시장에 진입하기 때문에 방향성, 가속도, 일정한 속도가 있습니다. 바로 이 지점이 운동 초반에 들어와 추진력과 속도를 낸 사람들이 수익을 내기 시작하는 곳입니다. 다른 거래자들은 나중에 덜 매력적인 가격으로 시장에 진입합니다. 그러나 첫 번째 트레이더와 달리 가격 움직임 방향을 사용하려고 합니다.

변화가 발생하면 추세가 종료됩니다. 하지만 가격은 왜 여전히 같은 방식으로 움직이고 있습니까? 왜 갑자기 바뀌지 않을까요? 이러한 행동의 이유는 가격을 가속하고 원하는 방향으로 밀고 있던 사람들이 포지션을 청산하기 시작하여 추세를 억제하기 때문입니다. 그리고 그냥 "파도를 타고" 있던 사람들은 여전히 ​​아무것도 바뀌지 않았다고 믿고 심지어 가격을 움직이려고 합니다. 그러나 이 "기차"는 그냥 멈추지 않습니다. 반대 방향으로 움직이기 시작하고 여기서 이야기가 끝납니다.


거래 아이디어와 "기차"에 치이지 않는 방법

움직임을 사용하고 이익을 얻는 아이디어는 현재 추세 깊이, 즉 크기와 기간의 분석을 기반으로 합니다.

생생한 예를 제공하기 위해 표준 지표인 RSI(상대 강도 지수) 및 AC(가속/감속)를 사용합니다.

1. 시장 진입 조건

우리는 첫 번째 지표를 사용하여 가격이 현재 얼마나 멀리 그리고 깊이 이동했는지를 보여줄 것입니다.

거리와 깊이를 결정하기 위해 레벨을 배치합니다.

그림 1 RSI 발진기 레벨

그림 1. RSI 오실레이터 레벨

가격 변동 심도 평가 기준:

  • 레벨 40 - 60 사이의 영역은 평평한 구역(옆 구역)으로 간주됩니다. 가격이 이 영역에 있을 때는 추세가 없습니다. 지시된 움직임의 부재에 인덱스 0을 할당합시다.

가격 이동 영역 구매:

  • 구역 60-70 - 이것은 상향 이동의 가능한 시작입니다. 이 움직임에 인덱스 1을 할당합시다.
  • 영역 70-80 - 위쪽 움직임이 더 뚜렷합니다. 움직임에 속도가 붙습니다. 인덱스 2를 할당합니다.
  • Zone 80-90 - 움직임의 방향이 안정적입니다. 속도가 모여 있습니다. 인덱스 3을 할당합니다.
  • 구역 90-100. 일반적으로 이것은 풀백이 없는 강력한 단방향 이동입니다. 매우 드물다. 이동 지수는 4가 됩니다.

마찬가지로 판매 가격을 지수화해 보겠습니다.

  • 구역 30-40. 움직임이 떨어지기 시작합니다. 인덱스 -1.
  • 구역 20-30. 움직임에 속도가 붙습니다. 인덱스 -2.
  • 구역 10-20. 안정적인 하향 방향. 인덱스 -3.
  • 구역 0-10. 강력한 일방 통행 구역. 인덱스 -4.

이 조건을 MQL4 언어로 다음과 같이 설명할 수 있습니다.

//--- determining buy index
   double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0);
   index_rsi = 0;
   if(rsi>90.0) index_rsi=4;
   else if( rsi > 80.0 ) 
   index_rsi = 3;
   else if( rsi > 70.0 ) 
   index_rsi = 2;
   else if( rsi > 60.0 ) 
   index_rsi = 1;
   else if( rsi < 10.0 ) 
   index_rsi = -4;
   else if( rsi < 20.0 ) 
   index_rsi = -3;
   else if( rsi < 30.0 ) 
   index_rsi = -2;
   else if( rsi < 40.0 ) 
   index_rsi = -1;
-->

Bill Williams의 AC 표시기를 의도된 목적, 즉 현재 움직임의 속도와 가속도를 측정하는 데 사용할 것입니다.

그림 2. AC 표시기

그림 2. AC 표시기

속도 평가 기준:

성장.

  • 첫 번째 기준은 현재 및 이전 히스토그램을 비교하는 것입니다. 현재 히스토그램이 이전 히스토그램을 초과하면 가격 상승이 가속화될 가능성이 있습니다. 1과 같은 속도 지수로 정의합시다.
  • 두 번째 기준은 3개의 인접한 바를 비교하는 것입니다(0 바에서 두 번째 바까지). 각 후속 바의 값이 이전 바의 값을 초과하면 가속도 증가에 대해 말할 수 있습니다. 속도 지수는 2와 같습니다.
  • 각 이전 바가 후속 바보다 작은지 확인하기 위해 4개의 바를 유사한 비교가 있습니다. 속도 지수는 3입니다.
  • 동일한 상태를 확인하기 위해 최근 5개 바와 현재 바를 적절히 비교합니다. 속도 지수는 4입니다.

떨어짐.

  • 마찬가지로. 현재 바와 이전 바의 비교입니다. 현재 바가 이전 바보다 작으면 속도 지수는 -1과 같습니다.
  • 이전과 현재의 3개 바 감소 비교. 인덱스는 -2입니다.
  • 4개의 바의 비교. 인덱스는 -3입니다.
  • 5개 바의 비교. 인덱스는 -4입니다.

MQL4에서는 다음과 같이 표시됩니다.

double ac[];
   ArrayResize(ac,5);
   for(int i=0; i<5; i++)
      ac[i]=iAC(Symbol(),tf,i);

   index_ac=0;
//--- buy signal
   if(ac[0]>ac[1])
      index_ac=1;
   else if(ac[0]>ac[1] && ac[1]>ac[2])
      index_ac=2;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3])
      index_ac=3;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4])
      index_ac=4;
//--- sell signal
   else if(ac[0]<ac[1])
      index_ac=-1;
   else if(ac[0]<ac[1] && ac[1]<ac[2])
      index_ac=-2;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3])
      index_ac=-3;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4])
      index_ac=-4;
-->

이동 깊이 지수가 있고 이동 속도를 알면 몇 가지 진입 조건을 내려놓고 분류할 수 있습니다.

시장 진입 옵션이 있습니다.

//--- buy signal
if(index_rsi==1 && index_ac>=1) //possible buy movement
if(index_rsi==2 && index_ac>=1) //weak buy movement
if(index_rsi==3 && index_ac==1) //weak buy movement
if(index_rsi==3 && index_ac>=2) //moderate buy movement
if(index_rsi==4 && index_ac>=1) //strong buy movement

//--- sell signal  
if(index_rsi==-1 && index_ac<=-1) //possible sell movement
if(index_rsi==-2 && index_ac<=-1) //weak sell movement
if(index_rsi==-3 && index_ac==-1) //weak sell movement
if(index_rsi==-3 && index_ac<=-2) //moderate sell movement
if(index_rsi==-4 && index_ac<=-1) //strong sell movement

//--- flat 
if(index_rsi==0) 

-->


2. 시장 퇴출 조건

우리는 입력 매개변수를 정의하고 분류했습니다. 우리는 시장 출구 조건이 어떻게 형성되었는지 설명하기 위해 다음과 같은 비유를 할 것입니다.

예를 들어 어린이용 고무공을 생각해 보십시오. 이제 누군가가 매우 높은 곳에서 이 공을 물에 던지면 어떻게 될지 생각해 봅시다. 먼저 중력 가속도에 의해 낙하 속도가 빨라집니다. 그러면 물과 부딪힙니다. 그러나 그것은 속도를 잃고 음의 값을 갖는 특정 깊이에 잠기기에 충분한 속도를 가지고 있습니다. 공은 아르키메데스의 원리의 영향을 받아 표면으로 밀려납니다.

이제 이 예를 드릴다운 (더 많은 정보를 찾기 위해 관련 텍스트나 아이콘 등을 클릭하여 마치 뚫고 들어가듯이 검색하는 것)합니다.

  • 이미 이해했듯이 우리 공은 가격입니다.
  • 공을 던지는 사람은 추세를 시작한 시장 참가자를 나타냅니다.
  • 중력 가속도를 일으키는 중력은 추세가 시작된 후 가격 방향에 합류 한 거래자를 나타냅니다.
  • 물은 방향의 변화에 ​​영향을 미치는 중요한 요소를 나타냅니다.
  • 아르키메데스의 원리는 추세를 시작한 사람들의 닫힌 입장을 나타냅니다.

이익을 얻는 두 가지 주요 목표는 다음과 같습니다.

  1. 공이 이미 던져진 순간을 적시에 결정하고 매수 또는 매도하십시오.
  2. 볼이 물에 빠져 속도가 느려지면 포지션을 닫습니다.

금융 시장에서 공이나 물을 던지는 사람을 보지 못하기 때문에 공이 떨어지는 시간과 정확한 거리를 결정하기 어려울 수 있습니다. 우리는 공의 속도와 방향만 볼 수 있습니다.

이상 가격 움직임 깊이와 속도 평가 기준을 살펴보았다.

이제 종료 조건을 정의합니다.

//--- possible downward reversal
if(index_rsi>2 && index_ac<0) 
-->

가격이 충분히 오랫동안 상승했다면 가속도는 음수가 됩니다(하향). 이것은 추세의 변화가 충분히 가능하다는 사실을 지적합니다.

//--- possible upward reversal
if(index_rsi<-2 && index_ac>0) 
-->

주어진 예와 유사하게: 공이 충분히 오랫동안 떨어졌지만 물에 빠졌고 물은 공을 반대 방향으로 밀어냅니다. 포지션 청산 시점을 나타냅니다.


3. 진출입 효율성 제고

일부 거래 지표는 더 큰 기간을 사용할 때 추세 변화에 대한 응답 속도가 빨라지는 것으로 알려져 있습니다. 그러나 더 많은 잘못된 신호도 나타납니다.

다른 방법은 계산 기간을 아래쪽으로 변경하지 않고 여러 시간 프레임에서 추적하는 것입니다.

그림 3. RSI 및 AC 신호를 기반으로 한 다양한 시간대의 추세

그림 3. RSI 및 AC 신호를 기반으로 한 다양한 시간대의 추세

가격 변동 추세는 우리의 기준과 RSI 및 AC 지표로 인해 그림에서 명확하게 볼 수 있습니다. 자세히 살펴보겠습니다.

M1의 이동 및 속도: 강한 이동, AC 지수는 4, RSI 지수 깊이는 2입니다. M5의 깊이는 같지만 속도는 1입니다. 동일한 움직임이 M15에서 결정되지만 하위 차트보다 덜 가시적입니다. 약 30분 1시간 차트에 대해 말하면 M30에는 이미 신호가 있고 H1에는 감속 및 심지어 반전 가능성 신호가 있는 것을 보는 것이 인상적입니다.

이 예는 우리에게 중요한 결론을 제공합니다.

H1 으로 고려한다면 취소를 기다리는 매도 주문을 할 것입니다. 그러나 그것은 우리가 더 낮은 기간의 분석을 수행하면서 걸러낸 잘못된 신호일 것입니다.


4. Expert Advisor 형태의 거래 전략 구현

Expert Advisor 코드:

//+------------------------------------------------------------------+
//|                                                       tester.mq4 |
//|                                                Alexander Fedosov |
//+------------------------------------------------------------------+
#property copyright "Alexander Fedosov"
#property strict
#include <trading.mqh>      //Support library for trade operations
//+------------------------------------------------------------------+
//| Parameters                                                       |
//+------------------------------------------------------------------+
input int             SL = 40;               // Stop loss
input int             TP = 70;               // Take profit
input bool            Lot_perm=true;         // Lot of balance?
input double          lt=0.01;               // Lot
input double          risk = 2;              // Risk of deposit, %
input int             slippage= 5;           // Slippage
input int             magic=2356;            // Magic number
input int             period=8;              // RSI indicator period
input ENUM_TIMEFRAMES tf=PERIOD_CURRENT;     // Working timeframe
int dg,index_rsi,index_ac;
trading tr;
//+------------------------------------------------------------------+
//| Expert Advisor initialization function                           |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- determining variables for auxiliary class of trading functions
//--- language for displaying errors, Russian of by default.
   tr.ruErr=true;
   tr.Magic=magic;
   tr.slipag=slippage;
   tr.Lot_const=Lot_perm;
   tr.Lot=lt;
   tr.Risk=risk;
//--- number of attempts.
   tr.NumTry=5;
//--- determining decimal places on the current chart
   dg=tr.Dig();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Main calculation function                                        |
//+------------------------------------------------------------------+
void OnTick()
  {
   depth_trend();
   speed_ac();
//--- check for presence of open orders
   if(OrdersTotal()<1)
     {
      //--- check of buy conditions
      if(Buy())
         tr.OpnOrd(OP_BUY,tr.Lots(),Ask,SL*dg,TP*dg);
      //--- check of sell conditions
      if(Sell())
         tr.OpnOrd(OP_SELL,tr.Lots(),Bid,SL*dg,TP*dg);
     }
//--- are there open orders?
   if(OrdersTotal()>0)
     {
      //--- check and close sell orders which meet closing conditions.
      if(Sell_close())
         tr.ClosePosAll(OP_SELL);
      //--- check and close buy orders which meet closing conditions.
      if(Buy_close())
         tr.ClosePosAll(OP_BUY);
     }

  }
//+------------------------------------------------------------------+
//| Function for determining the trend depth                         |
//+------------------------------------------------------------------+
void depth_trend()
  {
//--- determining buy index
   double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0);
   index_rsi = 0;
   if(rsi>90.0) index_rsi=4;
   else if(rsi>80.0)
      index_rsi=3;
   else if(rsi>70.0)
      index_rsi=2;
   else if(rsi>60.0)
      index_rsi=1;
   else if(rsi<10.0)
      index_rsi=-4;
   else if(rsi<20.0)
      index_rsi=-3;
   else if(rsi<30.0)
      index_rsi=-2;
   else if(rsi<40.0)
      index_rsi=-1;
  }
//+------------------------------------------------------------------+
//| Function for determining the trend speed                         |
//+------------------------------------------------------------------+
void speed_ac()
  {
   double ac[];
   ArrayResize(ac,5);
   for(int i=0; i<5; i++)
      ac[i]=iAC(Symbol(),tf,i);

   index_ac=0;
//--- buy signal
   if(ac[0]>ac[1])
      index_ac=1;
   else if(ac[0]>ac[1] && ac[1]>ac[2])
      index_ac=2;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3])
      index_ac=3;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4])
      index_ac=4;
//--- sell signal
   else if(ac[0]<ac[1])
      index_ac=-1;
   else if(ac[0]<ac[1] && ac[1]<ac[2])
      index_ac=-2;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3])
      index_ac=-3;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4])
      index_ac=-4;
  }
//+------------------------------------------------------------------+
//| Function for checking buy conditions                             |
//+------------------------------------------------------------------+
bool Buy()
  {
   bool res=false;
   if((index_rsi==2 && index_ac>=1) || (index_rsi==3 && index_ac==1))
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking sell conditions                            |
//+------------------------------------------------------------------+
bool Sell()
  {
   bool res=false;
   if((index_rsi==-2 && index_ac<=-1) || (index_rsi==-3 && index_ac==-1))
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking buy position closing conditions            |
//+------------------------------------------------------------------+
bool Buy_close()
  {
   bool res=false;
   if(index_rsi>2 && index_ac<0)
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking sell position closing conditions           |
//+------------------------------------------------------------------+
bool Sell_close()
  {
   bool res=false;
   if(index_rsi<-2 && index_ac>0)
      res=true;
   return (res);
  }

-->

tf(작업 시간 프레임) 및 period(RSI 표시기 기간)의 두 매개변수만 사용하여 약간의 최적화를 수행했습니다.

그리고 M15에서 다음과 같은 결과를 얻었습니다.


그림 4. Expert Advisor 백테스팅 결과

주목! 이것은 단지 데모 버전입니다. 테스트 및 실제 계정에 사용하지 않는 것이 좋습니다.

결론

추세의 시작과 끝을 결정하는 것은 시장 행동을 예측하는 것이 불가능하기 때문에 전 세계 트레이더에게 복잡한 작업 중 하나입니다.

그러나 현재 추세에서 진입 및 퇴장 순간을 결정하여 상당한 이익을 얻는 것은 전적으로 가능합니다. 그리고 이동 속도의 결정과 동적 추적의 일반적인 아이디어는 이 문제에 도움이 될 수 있습니다.

성공적인 거래를 기원합니다.


MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/1747

파일 첨부됨 |
trading.mqh (48.16 KB)
tester.mq4 (11.59 KB)
시장에서 제품을 구매하기 위한 팁. 단계별 가이드 시장에서 제품을 구매하기 위한 팁. 단계별 가이드
이 단계별 가이드는 필요한 제품을 더 잘 이해하고 검색하기 위한 팁과 요령을 제공합니다. 이 글은 적절한 제품을 찾고, 원하지 않는 제품을 분류하고, 제품 효율성과 필수성을 결정하는 다양한 방법을 수수께끼로 만들려고 합니다.
MetaTrader 5에서 RSS 피드를 표시하는 대화형 애플리케이션 구축 MetaTrader 5에서 RSS 피드를 표시하는 대화형 애플리케이션 구축
이 글에서는 RSS 피드 표시를 위한 응용 프로그램을 만드는 가능성을 살펴봅니다. 이 글에서는 MetaTrader 5용 대화형 프로그램을 만드는 데 표준 라이브러리의 여러 측면을 사용할 수 있는 방법을 보여줍니다.
MQL5. 커뮤니티 채널과 그룹 챗을 사용하세요 MQL5. 커뮤니티 채널과 그룹 챗을 사용하세요
MQL5.com 웹사이트는 전 세계의 트레이더들이 모여 있는 곳입니다. 사용자들은 기사 글을 게시하고, 무료 코드를 공유하고 Market에서 제품을 판매하고 프리랜스 주문을 수행하고 거래 신호(시그널)를 복사합니다. 포럼, 채팅과 MetaTrader 채널에서 그들과 소통할 수 있습니다.
MQL5 Cookbook: ОСО 주문 MQL5 Cookbook: ОСО 주문
모든 거래자의 거래 활동에는 주문 간의 관계를 비롯한 다양한 메커니즘과 상호 관계가 포함됩니다. 이 글은 OCO 주문 처리의 솔루션을 제안합니다. 표준 라이브러리 클래스가 광범위하게 관련되어 있으며 여기에서 새로운 데이터 유형이 생성됩니다.