시스템트레이딩 게시글

기초 트레이더를 위한 DailyFX 뉴스 기반 EA - 메타트레이더 4용 자동매매 시스템

첨부파일
8491.zip (57.77 KB, 다운로드 2회)

설명:

  • 기초 트레이더 EA는 뉴스 이벤트에 따라 자동으로 금융 거래 결정을 내리는 Expert Advisor입니다. 이 EA는 과거 데이터를 기반으로 테스트할 수 없으며, 다음 뉴스 이벤트를 기다렸다가 실제 데이터와 예측 데이터의 차이에 따라 거래 결정을 내립니다.
  • EA는 DailyFX 캘린더에서 다음 뉴스 이벤트를 확인하고, 해당 뉴스가 발표될 때까지 기다립니다. 데이터가 발표되면 EA는 투자 결정을 내립니다. 이 EA는 모든 차트와 모든 시간 프레임에서 사용 가능하며, 오직 주문 실행을 위해 차트를 사용합니다.

참고:

이 EA를 사용하기 위해서는 아래 링크에서 주요 파일 설정을 반드시 따라야 합니다:

  • https://www.mql5.com/en/articles/1502
  • 이 EA는 위 링크에 명시된 지표의 코드를 기반으로 만들어졌습니다. 반드시 위 링크의 지침을 따르고, 다음 파일을 설정해야 합니다:
  • getright_setup.zip
  • Time.mq4
  • Time.mqh
  • 기본 다운로드 디렉토리를 뉴스 캘린더가 다운로드될 위치로 변경해야 합니다. 그렇지 않으면 EA가 작동하지 않습니다.
  • 그 기사를 천천히 읽고 모든 지침을 따라야 합니다.
  • 세 파일의 기능에 대한 자세한 설명은 해당 기사에서 확인할 수 있으며, 뉴스 이벤트를 차트 창에 표시하는 방식에 대해 잘 설명하고 있습니다.
  • 우선 해당 지표를 설정하여 뉴스가 차트에 표시되도록 한 후, 이 EA를 사용하면 문제없이 작동할 것입니다.
  • 이 지표 소스 코드는 뉴스 거래를 위한 EA로 수정되었습니다.
  • 위 링크에 있는 파일을 설정한 후, 이 EA를 다운로드하면 "str2double.dll"과 함께 뉴스 이벤트에 따라 거래를 수행할 수 있습니다. "str2double.dll" 파일은 루트 디렉토리, 예: C:\Program Files\Interbank FX Trader 4\에 위치해야 합니다.

거래 논리:

  • 거래의 논리는 다음과 같습니다: 뉴스 거래에서 발생하는 두 가지 유형의 이벤트가 있습니다.
  • 1차: 실제 경제 데이터와 예측 경제 데이터의 비교.
  • 2차: 실제 경제 데이터와 이전 경제 데이터의 비교.
  • 경제 데이터 간의 차이는 통화 가격의 방향에 영향을 줄 수 있으며, 경제 데이터 간의 비율 차이는 뉴스 이벤트가 특정 방향으로 시장 반응할 가능성을 높입니다.
  • 기초 거래에 대한 더 많은 정보는 www.pfxglobal.com를 방문하세요.
  • 경제 데이터 간의 비율 차이가 클 경우, EA는 더 큰 로트로 주문을 실행합니다.
  • 경제 데이터 간의 비율 차이가 작을 경우, EA는 최소 로트로 주문을 실행합니다.
  • 이 로트 크기는 EA가 차트에 적용될 때 설정된 변수에 지정됩니다: lot1, lot2, lot3, ... lot18.
  • EA는 경제 데이터 간의 비율 차이에 따라 특정 로트 크기를 선택합니다.

위험/보상 비율:

  • 기초 트레이더 EA는 1:3의 위험/보상 비율로 설정되어 있으며, 기본 값은 위험=20, 보상=3입니다.
  • 위험은 PIP 손절값이며, 보상은 배수로, EA가 위험을 20 PIP으로 설정하면 60 PIP의 이익을 기대합니다.
  • 이 값은 EA가 차트에 적용될 때 수정할 수 있습니다.

뉴스 이벤트 발표 대기 시간:

  • 뉴스 데이터는 정확한 시간에 발표되지 않기 때문에, EA가 뉴스 이벤트 발표를 위해 대기할 시간을 설정해야 합니다.
  • 다음 코드 조각은 EA가 뉴스 발표를 대기하는 시간을 결정합니다. 대기 시간이 지나면 EA는 다음 뉴스 이벤트로 넘어갑니다.
  • xTime은 EA가 차트에 처음 적용될 때 변경할 수 있는 변수로, 기본 값은 27분입니다.
if(Date>(TimeCurrent()-(xTime*60)))

주문 종료 대기 시간:

  • EA가 열린 주문을 종료하기 전에 대기할 시간을 설정할 수 있습니다.
  • 예: 뉴스 이벤트가 발표된 후, 30분 대기하여 현재 주문을 종료합니다. 이는 MQL4 사용자 "ebenv"의 추천입니다.
  • 이 기능을 제어하는 변수는 (3)개입니다:
  • MagicNumber | 열린 주문을 추적하는 번호
  • enable_close_time | 주문 실행 후 경과 시간을 모니터링하기 위해 true로 설정
  • wait_time | 주문 종료 전 대기 시간

기초 트레이더 국가 지원:

  • 기초 트레이더 EA는 dailyfx.com/calendar에서 지원하는 모든 통화에 대해 거래합니다.
  • 아래 코드는 뉴스 이벤트가 발표되는 국가에 따라 거래할 통화를 지정합니다. 통화 목록은 다음과 같습니다: EUR, USD, JPY, GBP, CHF, AUD, CAD, NZD
if(stCurrency=="EUR") {ordercurrency="EURUSD";} //trading eurusd
if(stCurrency=="USD") {ordercurrency="EURUSD";} //trading eurusd
if(stCurrency=="JPY") {ordercurrency="USDJPY";} //trading usdjpy
if(stCurrency=="GBP") {ordercurrency="GBPUSD";} //trading usdgbp
if(stCurrency=="CHF") {ordercurrency="USDCHF";} //trading usdchf
if(stCurrency=="AUD") {ordercurrency="AUDUSD";} //trading audusd
if(stCurrency=="CAD") {ordercurrency="USDCAD";} //trading usdcad
if(stCurrency=="NZD") {ordercurrency="NZDUSD";} //trading nzdusd

거래 결정:

  • 다음 코드 조각은 EA가 실제 경제 데이터 발표를 기다릴 때의 거래 결정을 설명합니다.
  • 예측 데이터가 없을 경우 EA는 이전 데이터를 사용하여 거래를 진행합니다.
  • 다음 코드 조각은 예측 데이터와 실제 데이터를 기반으로 거래가 실행되는 방법을 설명합니다. 동일한 알고리즘이 이전 데이터와 실제 데이터를 비교할 때도 사용됩니다.
if(StringToDouble(stActual)>StringToDouble(stForecast)) { Aert("Stronger(actual vs forecast): "+stCurrency+" "+"Time: "+stTime); int total=OrdersTotal(); for(int cnt=0; cntLive Trade Open"+OrderTicket()); return(0); } } int historytotal=OrdersHistoryTotal(); for(cnt=0; cntTrade Executed"+OrderTicket()); return(0); } } if(stCurrency=="EUR"||stCurrency=="GBP"||stCurrency=="AUD") { double ask=MarketInfo(ordercurrency,MODE_ASK); double point1=MarketInfo(ordercurrency,MODE_POINT); OrderSend(ordercurrency,OP_BUY,lot_p,ask,3,ask-(risk*point1),ask+reward*risk*point1,stCurrency+stActual+stForecast+"BUY"); } if(stCurrency=="CHF"||stCurrency=="CAD"||stCurrency=="NZD"||stCurrency=="JPY"||stCurrency=="USD") { double bid=MarketInfo(ordercurrency,MODE_BID); double point2=MarketInfo(ordercurrency,MODE_POINT); OrderSend(ordercurrency,OP_SELL,lot_p,bid,3,bid+risk*point2,bid-(reward*risk*point2),stCurrency+stActual+stForecast+"SELL"); }}
  • EA는 뉴스 이벤트당 한 번만 주문을 실행할 수 있으므로, 먼저 주문이 실행되었는지 확인하며, 현재 열린 주문이 있으면 EA가 종료됩니다.
  • 다음으로, EA는 해당 주문이 이미 실행되고 종료되었는지 확인하며, 이 주문이 이익 또는 손실로 종료되었으면 EA가 종료됩니다.
  • 이 두 가지 주문 확인은 주문의 중복을 방지하여 EA가 뉴스 이벤트당 한 번만 거래를 수행하도록 합니다.
  • 그 후, 데이터가 발표되는 국가를 확인하고, 경제 데이터가 발표될 때 주문을 엽니다.
  • 위 코드는 실제 데이터가 예측 데이터보다 클 때의 경우이며, 예측 데이터보다 적을 때도 유사한 방식으로 작동합니다.
  • 이전 데이터가 실제 데이터와 비교될 경우에도 동일한 알고리즘이 적용됩니다.

로트 크기:

  • EA는 (실제 데이터와 예측 데이터) 또는 (실제 데이터와 이전 데이터)를 비교하여, 뉴스 데이터 간의 비율 차이에 따라 로트 크기를 결정합니다.
  • 다음 코드 조각은 EA가 비율 차이를 결정하고 로트 크기를 지정하는 방법을 설명합니다. 로트 크기는 외부 숫자로 수정할 수 있으며, 모든 EA 브로커를 지원합니다.
  • 사용자는 EA를 차트에 적용할 때 로트를 수정할 수 있으며, 기본 로트 크기 값은 (0.01, 0.02, 0.03...0.17)입니다.
double percent_d_AF=MathAbs((MathAbs(StringToDouble(stActual)-StringToDouble(stForecast))/StringToDouble(stForecast))*100); double lot_p=0; if((percent_d_AF>0 && percent_d_AF<=3)) {lot_p=lot1;} //0.1 lot if((percent_d_AF>3 && percent_d_AF<=6)) {lot_p=lot2;} //0.2 lots if((percent_d_AF>6 && percent_d_AF<=9)) {lot_p=lot3;} //0.3 lots if((percent_d_AF>9 && percent_d_AF<=12)) {lot_p=lot4;} //0.4 lots if((percent_d_AF>12 && percent_d_AF<=15)) {lot_p=lot5;} //0.5 lots if((percent_d_AF>15 && percent_d_AF<=18)) {lot_p=lot6;} //0.6 lots if((percent_d_AF>18 && percent_d_AF<=21)) {lot_p=lot7;} //0.7 lots if((percent_d_AF>21 && percent_d_AF<=24)) {lot_p=lot8;} //0.8 lots if((percent_d_AF>24 && percent_d_AF<=27)) {lot_p=lot9;} //0.9 lots if((percent_d_AF>27 && percent_d_AF<=30)) {lot_p=lot10;} //1 lots if((percent_d_AF>30 && percent_d_AF<=40)) {lot_p=lot11;} //2 lots if((percent_d_AF>40 && percent_d_AF<=50)) {lot_p=lot12;} //3 lots if((percent_d_AF>50 && percent_d_AF<=60)) {lot_p=lot13;} //4 lots if((percent_d_AF>60 && percent_d_AF<=70)) {lot_p=lot14;} //5 lots if((percent_d_AF>70 && percent_d_AF<=80)) {lot_p=lot15;} //6 lots if((percent_d_AF>80 && percent_d_AF<=90)) {lot_p=lot16;} //7 lots if((percent_d_AF>90 && percent_d_AF<=100)) {lot_p=lot17;} //8 lots if((percent_d_AF>100)) {lot_p=lot18;} //8 lots


차트 정보:


기초 뉴스 데이터 스크린샷

  • EA를 차트에 처음 적용할 때 "xTime", "위험", "보상", "MagicNumber", "enable_close_time", "wait_time" 및 최소 및 최대 로트 크기를 설정해야 합니다. "get right" 설치 위치는 기본 위치를 유지해야 합니다.
  • EA는 dailyfx 캘린더를 다운로드하고 다음 뉴스 이벤트를 확인합니다. 차트에 다음과 같은 데이터가 주석으로 표시됩니다: 날짜, 시간, 시간대, 통화, 설명, 중요도, 실제, 예측 및 이전 뉴스 이벤트 데이터.
  • 위 이미지에서 EA는 오전 2시에 발표될 뉴스 이벤트를 기다리고 있으며, 이전 경제 데이터는 (73.5%)로 알려져 있으므로 EA는 실제 데이터 발표를 기다리고 있습니다. 경제 데이터가 발표되면 EA는 데이터를 비교하고 이전 및 실제 경제 데이터에 따라 거래 결정을 내립니다.
  • 마지막으로 EA는 뉴스 이벤트가 발표될 시간부터 분 단위로 캘린더 데이터를 다운로드합니다.

기초 트레이더 개요:

  • 이 EA는 dailyfx.com/calendar에서 발표되는 모든 경제 이벤트를 거래합니다.
  • 캘린더는 "get right" 프로그램을 사용하여 다운로드됩니다.
  • EA는 뉴스 데이터가 발표될 시간에 매 분마다 캘린더를 다운로드합니다.
  • EA는 캘린더를 분석하여 다음 뉴스 이벤트를 확인하고, 뉴스 발표를 위해 27분 기다립니다.
  • 경제 데이터가 발표되면 (실제 vs. 예측) 또는 (실제 vs. 이전) 데이터를 확인합니다.
  • EA는 거래할 로트 크기, 통화 및 방향을 결정하며, 이 데이터는 EA가 실행될 때 차트에서 확인할 수 있습니다.
  • 주문은 1:3의 위험/보상 비율로 실행됩니다.
  • EA는 뉴스 이벤트당 단일 주문만 실행하도록 설정되어 있습니다. "enable_close_time"이 true로 설정되어 있으면 EA는 지정된 "wait_time" 분 후에 열린 주문을 종료합니다.

아래 링크의 모든 지침을 따르세요 https://www.mql5.com/en/articles/1502를 방문하여 캘린더가 올바르게 다운로드되고, 브로커 시간 설정이 정확한지 확인하세요. dailyfx.com/calendar 데이터는 GMT입니다.

질문, 의견, 비판이 있으시면 댓글로 남겨주세요.

연관 포스트

댓글 (0)