시스템트레이딩

메타트레이더 5를 위한 멀티 아비트레이션 1.000: 초보자를 위한 가이드
MetaTrader5
메타트레이더 5를 위한 멀티 아비트레이션 1.000: 초보자를 위한 가이드

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 사용할 수 있는 멀티 아비트레이션 1.000에 대해 소개해 드릴게요. 이 시스템은 낮은 가격에 매수하고, 높은 가격에 매도하는 기본 원칙을 바탕으로 합니다. 버전 1.000에서는 심볼 매개변수에 따라 하나의 심볼만 거래합니다. 기본 포지션 오픈 원칙은 다음과 같습니다: 모든 매수 포지션의 수익이 매도 포지션의 수익보다 적다면, 현재 추세가 하락세임을 알 수 있으며 매도 포지션을 엽니다. 모든 매도 포지션의 수익이 매수 포지션의 수익보다 적다면, 현재 추세가 상승세임을 알 수 있으며 매수 포지션을 엽니다.       if(profit_buys<profit_sells) // 하락 추세          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_sells<profit_buys) // 상승 추세       m_trade.Sell(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_buys==0.0 && profit_sells==0.0)          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name()); 테스트 결과 (EURUSD, H4): 장기 추세 동안, 예치금 부담이 크게 증가합니다. 이 문제는 아직 해결되지 않았습니다.

2017.11.03
SaveTicks - 메타트레이더 5를 위한 틱 기록 도구
MetaTrader5
SaveTicks - 메타트레이더 5를 위한 틱 기록 도구

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 사용할 수 있는 유용한 도구인 SaveTicks에 대해 소개해드릴게요. 이 프로그램은 틱 시세를 텍스트(CSV)와 이진(BIN) 포맷으로 기록해주는 유틸리티입니다. 모든 파일은 MQL5\Files 폴더에 저장되며, 일정한 샘플링 주기로 틱을 기록해 수학 프로그램에서 편리하게 분석할 수 있도록 도와줍니다. 입력 파라미터 기록 간격 - 틱 기록 주기, 밀리세컨드 단위입니다. 기록할 심볼 선택 방법 - 심볼 선택 방식입니다. 모든 심볼 - 브로커가 제공하는 모든 심볼을 기록합니다. 마켓워치 심볼 - 마켓워치에서 제공하는 모든 심볼을 기록합니다. 파일에서 심볼 목록 불러오기 - 파일에서 심볼 목록을 불러옵니다. 모든 심볼 이름이 포함된 파일 이름 - 심볼 목록이 담긴 파일의 이름, 예: InputSymbolList.txt. 기록 포맷 - CSV 또는 이진 포맷으로 선택할 수 있습니다. 시간 포맷 - 서버 시간 또는 컴퓨터 시간 중 선택할 수 있습니다. 이제 '파일에서 심볼 목록 불러오기' 기능을 이용한 알고리즘 예시를 살펴보겠습니다. 어떤 파라미터로든 EA를 실행한 후, EA를 언로드합니다. 결과로 생성된 파일은 MQL5\Files\AllSymbols_SaveTicks.txt입니다. 이 파일에는 브로커가 제공하는 모든 심볼 이름이 포함되어 있습니다. 이 파일의 이름을 예를 들어 InputSymbolList.txt로 변경합니다. InputSymbolList.txt 파일을 편집하여 필요한 심볼만 남겨둡니다. 첫 번째 줄에는 파일에 포함된 심볼 수를 기재해야 합니다. 예시는 이 페이지 상단의 다운로드 목록에 있습니다. 필요한 설정으로 EA를 다시 실행하면, 목록에 있는 심볼에 대한 틱을 기록하게 됩니다. MQL5\Files\***** 폴더를 확인하면, EURUSD_SaveTicks.csv와 같은 이름의 파일이 생성된 것을 확인할 수 있습니다. 이렇게 SaveTicks를 활용하면 틱 데이터를 효율적으로 기록하고 분석할 수 있습니다. 성공적인 트레이딩을 기원합니다!

2017.11.03
MetaTrader 5를 위한 Trailing_Profit EA: 수익 관리의 새로운 방식
MetaTrader5
MetaTrader 5를 위한 Trailing_Profit EA: 수익 관리의 새로운 방식

아이디어 저자 — Vitaly, MQL5 코드 저자 — barabashkakvn.이 Expert Advisor(EA)는 터미널에서 모든 열린 포지션을 관리합니다(모든 심볼과 모든 매직 넘버에 대해). 전체 수익이 "minimum_profit"에 도달하지 않으면 EA는 대기합니다.전체 수익이 "minimum_profit"에 도달하면, EA는 수익 감소 비율을 설정하고 트래킹을 시작합니다."percent_of_profit" 매개변수는 퍼센트로 지정됩니다. 예를 들어, "minimum_profit" = 1000이고 "percent_of_profit" = 20인 경우, 모든 열린 포지션의 총 수익이 1000에 도달합니다. 만약 수익이 800(1000 - 20%)으로 떨어지면 포지션은 닫힙니다. 수익이 계속 증가하여 2000에 도달하면, 허용 가능한 감소폭은 400(2000 - 20%)이 됩니다. 즉, 모든 포지션은 총 수익 1600으로 닫힙니다. 고정된 감소폭 한도는 없으며, 절대 값을 사용하는 것은 유용하지 않다고 생각합니다.이론적으로 퍼센트를 0으로 설정할 수 있습니다. 그러면 전체 테이크 프로핏으로 작동합니다. 퍼센트를 100으로 설정하면 손익 분기점으로 작동합니다(주문이 닫히면서 다른 주문이 손실을 볼 수 있다는 점을 잊지 마세요).주의! 이 Expert Advisor는 3초 간격으로 작동합니다:void OnTick()   { //--- 3초마다 작업 허용    static datetime prev_time=0;    datetime time_current=TimeCurrent();    if(time_current-prev_time<3)       return;    prev_time=time_current; //--- }

2017.08.10
MetaTrader 5용 ExpertClor_v01: 포지션 닫기 전용 EA 소개
MetaTrader5
MetaTrader 5용 ExpertClor_v01: 포지션 닫기 전용 EA 소개

아이디어 저자 — John Smith, MQL5 코드 저자 — barabashkakvn.ExpertClor_v01은 포지션을 닫기 위한 보조 Expert Advisor입니다:이 EA는 포지션을 Breakeven으로 이동시키고, Stop Loss는 StopATR_auto 지표를 기반으로 계산됩니다. 포지션은 두 개의 이동 평균(MA)이 교차할 때 닫힙니다.EA가 제대로 작동하려면, 컴파일된 StopATR_auto 지표 파일을 다음 폴더에 추가해야 합니다: MQL5\Indicators\Downloads://+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit()   { //--- ... //--- create handle of the indicator iCustom    handle_iCustom=iCustom(m_symbol.Name(),TimeFrame,"Downloads\\StopATR_auto",                           CountBarsForAverage,                           Target                           ); 이 Expert Advisor는 포지션을 닫기만 하지만, 포지션을 여는 작은 코드도 추가했습니다://+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick()   { //---    if(MQLInfoInteger(MQL_DEBUG) || MQLInfoInteger(MQL_PROFILER) ||       MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION))      {       static long counter=-50;       static bool trade_buy=true;       if(counter==0)          m_trade.Buy(m_symbol.LotsMin());       else if(counter%1500==0)         {          if(RefreshRates())            {             if(trade_buy)               {                OpenBuy(m_symbol.LotsMin());                trade_buy=false;               }             else               {                OpenSell(m_symbol.LotsMin());                trade_buy=true;               }            }          else             counter=counter-9;     }       counter++;   } //--- 이 기능은 이 Expert Advisor를 테스트하거나 최적화할 때만 작동하며, 매 1,500틱마다 Buy 또는 Sell이 열립니다.

2017.08.10
MetaTrader 5를 위한 RSI 스토캐스틱 MA 자동매매 시스템
MetaTrader5
MetaTrader 5를 위한 RSI 스토캐스틱 MA 자동매매 시스템

아이디어 제공자: Oksana Berenko, 코드 작성자: barabashkakvn.이 자동매매 시스템은 세 가지 지표를 사용합니다: MA(150), RSI(3) (레벨 80 및 20), 스토캐스틱(6, 3, 3) (레벨 70 및 30). 이 파라미터는 변경할 수 있으며, 자신만의 값으로 설정할 수 있습니다.1. 매매 진입 방향매매 방향은 MA(이동 평균)에 따라 결정됩니다. 한 방향으로만 하나의 거래가 열립니다.Bid가 MA보다 크면 매수 방향으로 고려합니다.Ask가 MA보다 작으면 매도 방향으로 고려합니다.2. 포지션 진입RSI와 스토캐스틱 조건이 충족되면 포지션 진입이 이루어집니다.RSI와 스토캐스틱이 하단 레벨(즉, RSI < 20 및 스토캐스틱 < 30) 아래일 경우 매수합니다.RSI와 스토캐스틱이 상단 레벨(즉, RSI > 80 및 스토캐스틱 > 70) 위일 경우 매도합니다.3. 포지션 종료포지션 종료는 스토캐스틱을 기준으로 합니다.이익 포인트로 종료하기.(트레일링 스탑 = 0) 트레일링 스탑이 0으로 설정된 경우, 거래가 특정 이익을 올리면 반대 스토캐스틱 레벨에 도달했을 때 포지션을 종료합니다.b) 스토캐스틱 > 70이고 OpenPrice = Ask일 경우 매도 종료(트레일링 스탑 > 0) 트레일링 스탑 값이 지정된 경우, 반대 스토캐스틱 레벨에 도달하면 각 새로운 캔들스틱의 시가에 따라 스탑 로스를 트레일링합니다. 이 경우 포지션이 손실로 종료될 수 있습니다.손실 포인트로 종료하기.(손실 허용 = 0) '손실 허용'이 0으로 설정된 경우, 거래가 특정 손실에 도달하면 반대 스토캐스틱 레벨에 도달했을 때 포지션을 종료합니다.b) 스토캐스틱 > 70이고 OpenPrice > Bid일 경우 매수 종료s) 스토캐스틱 < 30이고 OpenPrice < Ask일 경우 매도 종료(손실 허용 > 0) '손실 허용'이 지정된 경우, 스토캐스틱에 따라 포지션 진입 구역을 벗어난 후 손실이 지정된 포인트 이상인 경우 포지션을 종료합니다.b) 스토캐스틱 > 30이고 OpenPrice - Bid >= 손실 허용 포인트일 경우 매수 종료b) 스토캐스틱 < 70이고 Ask - OpenPrice >= 손실 허용 포인트일 경우 매도 종료테스트 결과 (EURUSD, H1):

2017.08.10
네발야시카 브레이크다운 레벨: 메타트레이더 5를 위한 트레이딩 시스템
MetaTrader5
네발야시카 브레이크다운 레벨: 메타트레이더 5를 위한 트레이딩 시스템

아이디어 제공자 — 블라디미르 흐리스토프, MQL5 코드 작성자 — 바라바시카브.이번 포스팅에서는 네발야시카 브레이크다운 레벨 시스템을 소개할게요. 이 시스템은 특정 시간 간격 내에서의 고가/저가 돌파를 이용한 트레이딩 전략입니다. 손실을 회복하기 위해 EA는 '네발야시카' 전략과 마틴게일 기법을 활용하여 로트를 늘립니다.EA는 지정된 시간 간격("시작 시간"부터 "종료 시간"까지)의 고가와 저가를 계산해요:만약 가격이 이 기간의 고가를 초과하면 BUY 포지션이 열리고, 저가 아래로 떨어지면 SELL 포지션이 열립니다. StopLoss는 반대 경계에 설정되며, 즉 BUY 포지션의 경우 저가에, SELL 포지션의 경우 고가에 설정됩니다. TakeProfit은 통제 기간의 높이에 따라 설정됩니다."시간 종료 사용"가 true로 설정되면, "시간 종료" 매개변수(모든 포지션을 종료할 시간)가 활성화됩니다."시작 시간", 종료 시간, "시간 종료"의 매개변수는 오직 시간과 분만 고려합니다.StopLoss에 의한 종료는 OnTradeTransaction에서 모니터링됩니다."DEAL_ENTRY_OUT"이 발견되면, 해당 거래의 코멘트 필드를 확인해야 해요. 만약 코멘트에 "sl"이 포함되어 있다면, 이 거래는 StopLoss로 종료된 것입니다:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_symbol==m_symbol.Name() &amp;&amp; deal_magic==m_magic) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(deal_entry==DEAL_ENTRY_OUT) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MqlDateTime str1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeToStruct(TimeCurrent(),str1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 수익 실현으로 종료된 경우일 수 있습니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit&gt;=0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TradeDey=str1.day; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- StopLoss로 종료된 경우일 수 있습니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"sl",0)!=-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(TradeDey!=str1.day) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("StopLoss로 종료된 거래가 감지되었습니다!"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_type==DEAL_TYPE_SELL) // 매도 포지션이 종료되었습니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double SL=m_symbol.Bid()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double TP=m_symbol.Bid()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Lot==0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenSell(SL,TP,Lot,"네발야시카"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_type==DEAL_TYPE_BUY) // 매수 포지션이 종료되었습니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double SL=m_symbol.Ask()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double TP=m_symbol.Ask()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Lot==0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenBuy(SL,TP,Lot,"네발야시카"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 닫힌 포지션과 반대되는 포지션을 열며(거래 유형이 "DEAL_TYPE_SELL"이면 BUY 포지션이 종료되었고, "DEAL_TYPE_BUY"이면 SELL 포지션이 종료된 것), 로트는 K. martin으로 곱해 증가됩니다. 만약 포지션이 긍정적인 수익으로 종료되었다면, EA는 다음 기간의 시작 시간인 "종료 시간"까지 기다린 후 위 절차를 반복합니다.&nbsp;"무손실" 매개변수는 손익 분기점을 의미하며, 포지션 수익의 절반에 도달하면 StopLoss가 포지션 오픈 가격으로 이동합니다.예를 들어, EURUSD, M30에서 테스트한 경우:

2017.08.10
더블 지그재그: 메타트레이더 5를 위한 최고의 시스템 트레이딩 도구
MetaTrader5
더블 지그재그: 메타트레이더 5를 위한 최고의 시스템 트레이딩 도구

아이디어의 저자는 Maksim이며, mq5 코드의 저자는 barabashkakvn입니다. 이 시스템 트레이딩 EA는 두 개의 지그재그 지표를 사용하여 분석합니다: 작은 지그재그는 파라미터가 (13.5, 3)이고, 큰 지그재그는 파라미터가 여덟 배로 곱해진 (13*8, 5*8, 3*8)입니다. //--- iCustom 지표의 핸들 생성 &nbsp;&nbsp; handle_iCustom=iCustom(Symbol(),Period(),"Examples\ZigZag",13,5,3); //--- 핸들이 생성되지 않았을 경우 &nbsp;&nbsp; if(handle_iCustom==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 실패에 대한 알림 및 오류 코드 출력 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("iCustom 지표 핸들 생성 실패: 심볼 %s/%s, 오류 코드 %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 지표가 조기에 중단됨 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } //--- iCustomX8 지표 핸들 생성 &nbsp;&nbsp; handle_iCustomX8=iCustom(Symbol(),Period(),"Examples\ZigZag",13*8,5*8,3*8); //--- 핸들이 생성되지 않았을 경우 &nbsp;&nbsp; if(handle_iCustomX8==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 실패에 대한 알림 및 오류 코드 출력 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("iCustomX8 지표 핸들 생성 실패: 심볼 %s/%s, 오류 코드 %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 지표가 조기에 중단됨 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } 거래 결정을 내리기 위해, 큰 지그재그의 마지막 피크의 두 다리(13*8, 5*8, 3*8)를 분석하고, 이 두 다리 내에 포함된 작은 지그재그(13, 5, 3)의 피크 수를 계산합니다. BUY 포지션을 열라는 신호가 오면 모든 SELL 포지션을 닫습니다. 반대로, SELL 포지션을 열라는 신호가 오면 모든 BUY 포지션을 닫습니다. EA의 주요 파라미터: k: 큰 지그재그의 다리 안에 작은 지그재그 피크 수의 비율 k2: 큰 지그재그 피크 간의 가격 차이 비율 예시: 큰 지그재그(13*8, 5*8, 3*8)는 빨간색으로 표시되어 있으며, 작은 지그재그(13, 5, 3)는 노란색으로 표시되어 있습니다. 따라서 ABC는 큰 지그재그(13*8, 5*8, 3*8)의 피크입니다. 다리 AB와 AC에는 작은 지그재그(13, 5, 3)의 아홉 개의 피크가 포함되어 있습니다. EURUSD, M1에서의 테스트 결과:

2017.08.10
MetaTrader 5를 위한 Trend-Following 트레이딩 시스템: Exp_XROC2_VG_X2
MetaTrader5
MetaTrader 5를 위한 Trend-Following 트레이딩 시스템: Exp_XROC2_VG_X2

안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 사용할 수 있는 트렌드 추종 트레이딩 시스템인 Exp_XROC2_VG_X2에 대해 이야기해 보려고 합니다. 이 시스템은 두 개의 XROC2_VG 지표가 생성하는 신호를 기반으로 합니다. 트레이딩 신호 생성 첫 번째 지표는 주요 선과 신호선의 위치를 기반으로 느린 트렌드의 방향을 결정합니다. 두 번째 지표는 선들이 교차하거나 접촉할 때 거래를 열 시점을 결정하죠. 거래 진입 신호는 바가 닫힐 때 다음 두 가지 조건이 충족되면 생성됩니다: 빠른 트렌드 신호와 느린 트렌드 신호가 일치할 때 빠른 트렌드가 방향을 변경할 때 EA 입력값 EA 입력값: //+-------------------------------------------------+ //| EA 지표의 입력 파라미터 | //+-------------------------------------------------+ input string Trade="거래 관리";&nbsp;&nbsp;&nbsp;&nbsp;//+================ 거래 관리 ==================+ input double MM=0.1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //거래에서의 예치금 비율 input MarginMode MMMode=LOT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//로트 값 결정 방법 input uint&nbsp;&nbsp;&nbsp;&nbsp;StopLoss_=1000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//스톱 로스 (포인트 단위) input uint&nbsp;&nbsp;&nbsp;&nbsp;TakeProfit_=2000;&nbsp;&nbsp;&nbsp;&nbsp;//테이크 프로핏 (포인트 단위) input string MustTrade="거래 권한";&nbsp;&nbsp;&nbsp;&nbsp;//+=============== 거래 권한 ===============+ input int&nbsp;&nbsp;&nbsp;&nbsp;Deviation_=10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //최대 가격 편차 (포인트 단위) input bool&nbsp;&nbsp; BuyPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp; //롱 포지션 진입 허용 input bool&nbsp;&nbsp; SellPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp;//숏 포지션 진입 허용 //+-------------------------------------------------+ //| 필터 지표의 입력 파라미터 | //+-------------------------------------------------+ input string Filter="느린 트렌드 파라미터";&nbsp;&nbsp;&nbsp;&nbsp;//+============== 트렌드 파라미터 ==============+ input ENUM_TIMEFRAMES TimeFrame=PERIOD_H6;&nbsp;&nbsp;//트렌드 차트 주기 input uint ROCPeriod1=8; input Smooth_Method MA_Method1=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//첫 번째 지표의 평균화 방법 input uint Length1=5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//첫 번째 스무딩 깊이 input int Phase1=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //첫 번째 스무딩 파라미터 //---- JJMA의 경우 -100 ... +100 범위 내에서 전이 과정의 품질에 영향을 미침; //---- VIDIA의 경우 CMO 기간, AMA의 경우 느린 평균 기간 input uint ROCPeriod2=14; input Smooth_Method MA_Method2=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//두 번째 지표의 평균화 방법 input uint Length2 = 5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//두 번째 스무딩 깊이 input int Phase2=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //두 번째 스무딩 파라미터 //---- JJMA의 경우 -100 ... +100 범위 내에서 전이 과정의 품질에 영향을 미침; //---- VIDIA의 경우 CMO 기간, AMA의 경우 느린 평균 기간 input ENUM_TYPE ROCType=MOM; input uint SignalBar=1; //진입 신호를 수신할 바 인덱스 input bool&nbsp;&nbsp; BuyPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp; //트렌드에 따라 롱 포지션 종료 허용 input bool&nbsp;&nbsp; SellPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp;//트렌드에 따라 숏 포지션 종료 허용 //+-------------------------------------------------+ //| 진입 지표의 입력 파라미터 | //+-------------------------------------------------+ input string Input="진입 파라미터";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //+=============== 진입 파라미터 ==============+ input ENUM_TIMEFRAMES TimeFrame_=PERIOD_M30;&nbsp;&nbsp;//진입을 위한 두 번째 차트 주기 input uint ROCPeriod1_=8; input Smooth_Method MA_Method1_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//첫 번째 지표의 평균화 방법 input uint Length1_=5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//첫 번째 스무딩 깊이 input int Phase1_=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //첫 번째 스무딩 파라미터 //---- JJMA의 경우 -100 ... +100 범위 내에서 전이 과정의 품질에 영향을 미침; //---- VIDIA의 경우 CMO 기간, AMA의 경우 느린 평균 기간 input uint ROCPeriod2_=14; input Smooth_Method MA_Method2_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//두 번째 지표의 평균화 방법 input uint Length2_ = 5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//두 번째 스무딩 깊이 input int Phase2_=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //두 번째 스무딩 파라미터 //---- JJMA의 경우 -100 ... +100 범위 내에서 전이 과정의 품질에 영향을 미침; //---- VIDIA의 경우 CMO 기간, AMA의 경우 느린 평균 기간 input ENUM_TYPE ROCType_=MOM; input uint SignalBar_=1;//진입 신호를 수신할 바 인덱스 input bool&nbsp;&nbsp; BuyPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp; //신호에 따라 롱 포지션 종료 허용 input bool&nbsp;&nbsp; SellPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp;//신호에 따라 숏 포지션 종료 허용 입력 파라미터의 코드에서 문자열 변수는 EA 입력 파라미터 창을 보다 쉽게 시각화하기 위해 사용됩니다. EA 내의 XROC2_VG_HTF 지표는 전략 테스터에서 트렌드를 보다 편리하게 시각화하기 위한 것이며, 다른 운영 모드에서는 비활성화됩니다. 전문가 고문이 제대로 작동하기 위해서는 컴파일된 XROC2_VG.ex5 및 XROC2_VG_HTF.ex5 지표 파일을 &lt;terminal_data_folder&gt;\MQL5\Indicators에 추가해야 합니다. TradeAlgorithms.mqh 라이브러리 파일은 비제로 스프레드를 제공하는 브로커와 함께 스톱 로스 및 테이크 프로핏을 포지션 열기 시 설정할 수 있는 옵션을 사용하도록 허용합니다. 라이브러리의 다른 변형은 다음 링크에서 다운로드할 수 있습니다: 거래 알고리즘. 아래 테스트에서 보여지는 것처럼 기본 입력 파라미터가 사용되었습니다. 테스트 중에는 스톱 로스 및 테이크 프로핏이 사용되지 않았습니다. 차트에서의 거래 예 2015년 AUDUSD에 대한 테스트 결과입니다. H6에서 느린 트렌드, M30에서 빠른 트렌드로 진입했습니다: 테스트 결과 차트

2017.08.10
MT5에서 XROC2_VG_Tm EA 사용법 및 설정 안내
MetaTrader5
MT5에서 XROC2_VG_Tm EA 사용법 및 설정 안내

안녕하세요, 트레이더 여러분! 오늘은 XROC2_VG_Tm이라는 Expert Advisor(이하 EA)에 대해 이야기해보려고 해요. 이 EA는 XROC2_VG 오실레이터에서 발생하는 신호를 기반으로 거래를 진행합니다. 또한, 거래를 할 수 있는 엄격한 시간 구간을 설정할 수 있는 기능도 제공하죠. 거래 신호는 막대기(bar)가 닫힐 때 형성되며, 이때 지표의 색상이 변하면(주 지표선이 신호선을 교차함) 거래가 시작됩니다. 거래할 시간을 입력 매개변수에서 설정할 수 있는데요, 이는 지정된 시간 구간 내에서 거래를 하도록 해줍니다: input bool&nbsp;&nbsp; TimeTrade=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//지정된 구간에서 거래 허용 input HOURS&nbsp;&nbsp;StartH=ENUM_HOUR_0;&nbsp;&nbsp;//거래 시작 시간(시간) input MINUTS StartM=ENUM_MINUT_0; //거래 시작 시간(분) input HOURS&nbsp;&nbsp;EndH=ENUM_HOUR_23;&nbsp;&nbsp; //거래 종료 시간(시간) input MINUTS EndM=ENUM_MINUT_59;&nbsp;&nbsp;//거래 종료 시간(분) 여기서 두 개의 변수(시간과 분)를 사용하여 거래 시작 시간을 설정하고, 종료 시간에 대해서도 같은 변수를 사용할 수 있습니다. 기본 설정으로는 EA가 0:00부터 거래 세션 내내 거래를 진행하고, 모든 포지션은 23:59에 닫히게 됩니다. 만약 시작 시간이 종료 시간보다 늦다면, EA는 다음 날 지정된 시간에 포지션을 닫게 됩니다. EA의 정상적인 작동을 위해서는 XROC2_VG.ex5 컴파일된 지표 파일을 &lt;terminal_data_folder&gt;\MQL5\Indicators에 저장해야 합니다. 그리고 TradeAlgorithms.mqh 라이브러리 파일을 사용하면, 비제로 스프레드를 제공하는 브로커와 함께 EA를 사용할 수 있으며, 포지션 개설 시 Stop Loss와 Take Profit을 설정할 수 있는 옵션도 제공됩니다. 추가 라이브러리 변형은 다음 링크에서 다운로드할 수 있습니다: Trade Algorithms. 아래 테스트 결과에서 사용된 기본 입력 매개변수는 Stop Loss와 Take Profit이 사용되지 않았습니다. 그림 1. 차트에서의 거래 예시 2015년 XAUUSD H4에 대한 테스트 결과는 다음과 같습니다: 그림 2. 테스트 결과 차트

2017.08.10
처음 이전 24 25 26 27 28 29 30 31 32 33 34 다음 마지막