시스템트레이딩

버그 외삽기: 메타트레이더 5를 위한 최적의 EA
MetaTrader5
버그 외삽기: 메타트레이더 5를 위한 최적의 EA

아이디어 저자: Vladimir, mq5 코드 저자: barabashkakvn. 버그 외삽기는 선형 예측을 위한 방법인 버그의 방법을 사용합니다. 선형 예측은 과거 값의 선형 함수로 미래 값을 찾는 데 기반합니다. 예를 들어, x[0]..x[n-1] 가격 범위가 있다고 가정합시다. 여기서 인덱스가 높을수록 최근 가격을 의미합니다. x[n] 미래 가격의 예측은 다음과 같이 계산됩니다: x[n] = -Sum(a[i]*x[n-i], i=1..p) 여기서 a[i=1..p]는 모델 비율이고, p는 모델 차수입니다. 버그의 방법은 마지막 n-p 바에서 평균 제곱 오차를 줄여서 a[] 비율을 찾습니다. 입력 파라미터 MaxRisk - 동시에 수행되는 모든 거래의 최대 위험. ntmax - 한 방향으로의 최대 거래 수. MinProfit - 포지션이 열릴 최소 예측 수익. MaxLoss - 포지션이 닫힐 최대 예측 손실. TakeProfit - 이익 실현 값. StopLoss - 손실 제한 값. TrailingStop - 트레일링 스탑 기능. PastBars - 미래 값을 예측하는 데 사용되는 이전 바의 수. ModelOrder - 버그 모델의 차수를 과거 바 수의 비율로 설정 (0..1). UseMOM - 입력 데이터의 트렌드 제거 활성화: mom(i)=log[p(i)/p(i-1)]. UseROC - 입력 데이터의 트렌드 제거 활성화: roc=100*(p(i)/p(i-1)-1). UseMOM과 UseROC 변수 중 하나만 true일 수 있습니다. 즉, UseMOM=true AND UseROC=true는 허용되지 않습니다. 대부분의 최적화된 전문가 어드바이저와 마찬가지로 버그 외삽기는 훈련 바에서만 잘 작동합니다. 지속적인 재최적화 없이는 전문가 어드바이저가 꾸준히 손실을 볼 것입니다.

2017.11.03
반대 매매: MetaTrader 5에서의 자동 거래 시스템 활용하기
MetaTrader5
반대 매매: MetaTrader 5에서의 자동 거래 시스템 활용하기

반대 매매란, 닫힌 포지션과 동일한 규모로 반대 포지션을 여는 것을 의미합니다. 이는 어떤 심볼이나 매직 넘버에서도 적용할 수 있습니다. 예를 들어, 현재 AUDUSD에서 0.01 볼륨의 매수 포지션이 열려 있다고 가정해봅시다. 이 포지션이 수동으로 닫히면, 반대 매매 전문가 상담사가 즉시 새로운 AUDUSD 매도 포지션을 열게 됩니다. 이 모든 코드는 OnTradeTransaction 함수에 포함되어 있습니다: //+------------------------------------------------------------------+ //| TradeTransaction 함수                                        | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans,                         const MqlTradeRequest &request,                         const MqlTradeResult &result)   { //--- 거래 유형을 열거형 값으로 가져옵니다.    ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- 거래가 히스토리에서 추가된 거래의 결과인지 확인    if(type==TRADE_TRANSACTION_DEAL_ADD)      {       long     deal_type         =-1;       long     deal_entry        =-1;       double   deal_volume       =0.0;       string   deal_symbol       ="";       if(HistoryDealSelect(trans.deal))         {          deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);          deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);          deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);          deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);         }       else          return;       if(deal_entry==DEAL_ENTRY_OUT)         {          switch((int)deal_type)            {             case  DEAL_TYPE_BUY:                m_trade.Buy(deal_volume,deal_symbol);                break;             case  DEAL_TYPE_SELL:                m_trade.Sell(deal_volume,deal_symbol);                break;             default:                break;          }     }   } 여기서 우리는 포지션 닫기 거래(DEAL_ENTRY_OUT)를 기다립니다. 이 거래가 나타나면, 거래 포지션(매수 포지션을 닫았다면 매도 거래가 생성되고, 그 반대의 경우도 마찬가지)을 확인한 후 새로운 포지션을 엽니다.

2017.11.03
ZigZag 전략: Last ZZ50를 활용한 MetaTrader 5 트레이딩
MetaTrader5
ZigZag 전략: Last ZZ50를 활용한 MetaTrader 5 트레이딩

안녕하세요, 트레이더 여러분! 오늘은 Last ZZ50 전략에 대해 이야기해보려고 합니다. 이 전략은 ZigZag 지표와 보류 주문을 기반으로 하고 있어요. 이 전략의 코드 아이디어는 ZigZag 지표를 기반으로 한 전략 - 'Last ZZ50'라는 포럼 주제에서 처음 등장했습니다. 아이디어의 저자는 Vitaly Muzichenko이며, MQL5 코드의 저자는 Vladimir Karputov입니다. Last ZZ50 전략의 기본 원리는 다음과 같습니다: ZigZag 지표에서는 항상 마지막 두 개의 선인 AB와 BC를 분석합니다. AB 선은 아직 고정되지 않았기 때문에, A 점의 위치가 변할 수 있습니다. 보류 주문은 AB와 BC 선의 중간에 배치되어: AB 선에서 보류 주문이 활성화되면 BC 선이 보여주는 추세의 계속을 의미합니다. BC 선에서 보류 주문이 활성화되면 BC 선이 보여주는 추세의 반전을 의미합니다. AB 선이 아직 고정되지 않기 때문에, 보류 주문은 항상 AB의 중간 가격으로 조정됩니다. 포지션 오픈은 다음 규칙을 기반으로 트레일링됩니다: 포지션이 이익 구역으로 이동할 때까지 기다리며 (수수료와 스왑은 고려하지 않음) 최소한 (트레일링 스탑 + 트레일링 스텝) 포인트 이상 이동한 후, 이 포지션에 대해 트레일링 기능을 활성화합니다. 최고점을 찾는 과정은 이 Expert Advisor에서 구현되고 있습니다. 지표가 차트에 추가되고, A, B, C 점을 통해 세 개의 수직선이 그려집니다: 이 전략을 잘 활용하셔서 성공적인 트레이딩 하시길 바랍니다!

2017.11.03
MetaTrader 5에서 OzFx로 거래 신호 생성하기
MetaTrader5
MetaTrader 5에서 OzFx로 거래 신호 생성하기

아이디어 저자: Yuri, 코드 저자: barabashkakvn. 포지션 오픈 신호 생성에 대한 설명: Stoh_main_1 - 바 #1의 스토캐스틱 오실레이터 값. InpStochasticLevel - 스토캐스틱 레벨 입력값. AC_1 - 바 #1의 가속기 오실레이터 값. ACPrev_2 - 바 #2의 가속기 오실레이터 값. BUY 신호 - 바 #1의 스토캐스틱 오실레이터가 스토캐스틱 레벨 입력값보다 크고 바 #1의 가속기 오실레이터가 바 #2의 가속기 오실레이터보다 클 때, 이 경우 바 #1의 가속기 오실레이터는 0 이상이어야 하고, 바 #2의 가속기 오실레이터는 0 미만이어야 합니다: if(Stoh_main_1>InpStochasticLevel && AC_1>ACPrev_2 && AC_1>0 && ACPrev_2<0 && count_buys==0) SELL 신호 - 바 #1의 스토캐스틱 오실레이터가 스토캐스틱 레벨 입력값보다 작고 바 #1의 가속기 오실레이터가 바 #2의 가속기 오실레이터보다 작을 때, 이 경우 바 #1의 가속기 오실레이터는 0 미만이어야 하고, 바 #2의 가속기 오실레이터는 0 이상이어야 합니다: if(Stoh_main_1<InpStochasticLevel && AC_1<ACPrev_2 && AC_1<0 && ACPrev_2>0 && count_sells==0) SELL 신호의 예시: 신호를 수신하면 동일한 롯트로 5개의 포지션을 오픈합니다. 첫 번째 포지션은 스톱 로스와 테이크 프로핏이 0으로 설정됩니다. 이후의 모든 포지션은 동일한 스톱 로스를 가지며, 각 포지션마다 입력된 테이크 프로핏(핍 단위)에 따라 증가하는 테이크 프로핏을 설정합니다. 모든 심볼에 대한 PERIOD_D1에서의 테스트 결과:

2017.11.03
마틴 - 메타트레이더 5를 위한 시스템 트레이딩
MetaTrader5
마틴 - 메타트레이더 5를 위한 시스템 트레이딩

아이디어 저자 — 블라디미르 흐리스토프, mq5 코드 저자 — 바라바시카크브. 아이디어 저자의 설명: 설명 이 시스템 트레이딩 EA는 포럼 참가자의 요청으로 만들어졌습니다. vvx080의 코멘트: 아이디어는 스탑 오더 그리드를 만드는 것입니다. 예를 들어, 먼저 두 개의 매도와 매수 주문을 설정합니다. 하나의 주문이 발동되면, 다른 주문은 삭제됩니다. 만약 거래가 손실이 나면, 10포인트 후에 반대 주문을 두 배로 열게 됩니다. 다시 손실이 나면, 20포인트 후에 이전 주문의 두 배로 반대 주문을 여는 방식입니다. 이렇게 해서 손실이 계속되면, 30포인트 후에 다시 반대 주문을 두 배로 여는 식으로 진행됩니다. 이런 조건에서는 예금이 완전히 손실될 가능성이 낮습니다. 긍정적인 거래가 발생하면, 좋은 트레일링을 사용하여 300포인트의 이익을 잡을 수 있습니다. 손절매와 이익 실현은 사용하지 않으며, 모든 거래는 공통 이익으로 마감됩니다. 이 전략은 추세나 횡보에 두려워하지 않습니다. 추세가 있을 때는 전체 이익을 트레일링합니다. 여기 미리 계산된 로트와 예금입니다: 매도 0.1 -10p = -1, 매수 0.2 -20p = -3 매도 0.4 -30p = -12 매수 0.8 -40p = -32 매도 1.6 -50p = -87 매수 3.2 -60p = -213 매도 6.4 -70p = -514 매수 12.8 -80p = -1194 매도 25.6 -90p = -2886 3000의 예금이면 충분할 것 같지만, 이 전략은 8번째 또는 9번째 주문까지 도달하기 어려울 것입니다. 제가 뭔가 잘못 이해할 수도 있지만, 아이디어는 그런 것입니다. 이 시스템 트레이딩 EA는 더 정확할 것입니다. 이 EA는 로트를 증가시키는 방식이지만, 순수한 마틴게일이라고 할 수는 없습니다. 게다가, 이 EA는 횡보장에서도 잘 벗어납니다. 많은 마틴게일이 그렇지 않기 때문입니다. 전략을 개선할 수 있는 코멘트와 아이디어를 추가해 주세요. 그러나 EA를 데모 계좌에서 테스트해 보지 않고 "마틴게일은 나쁘다"는 의견은 피해주세요. 작동 원리를 이해한 후에 의견을 남기는 것이 좋습니다. 시스템 트레이딩 EA 파라미터 InpStep - 포지션 간의 간격. InpProfitClose - 모든 포지션이 종료될 최소 이익. InpLot - 포지션 규모. EURUSD에 대한 테스트 결과:

2017.11.03
iCCI iMA: 메타트레이더 5에서의 시스템 트레이딩 전략
MetaTrader5
iCCI iMA: 메타트레이더 5에서의 시스템 트레이딩 전략

아이디어 저자는 Andrey이며, MQL5 코드 저자는 barabashkakvn입니다. 이동 평균을 상품 채널 지수 데이터를 사용해 계산하는 방법은 다음과 같습니다: //--- iMA 지표의 핸들 생성    handle_iMA=iMA(m_symbol.Name(),Period(),15,0,MODE_EMA,handle_iCCI); //--- 핸들이 생성되지 않았다면    if(handle_iMA==INVALID_HANDLE)      {       //--- 실패를 알리고 오류 코드 출력       PrintFormat("iMA 지표의 핸들을 생성하지 못했습니다. 심볼: %s/%s, 오류 코드: %d",                   m_symbol.Name(),                   EnumToString(Period()),                   GetLastError());       //--- 지표가 조기에 중단됨       return(INIT_FAILED);      } 이 방법은 상품 채널 지수 창에서 이동 평균 지표를 실행하는 것과 유사하며, "이전 지표의 데이터"를 선택하여 다른 지표의 데이터에 적용하는 방식입니다. 포지션 열기와 닫기 원칙: 상품 채널 지수를 기반으로 한 이동 평균이 일반 상품 채널 지수를 아래로 교차할 경우, BUY 포지션이 열립니다. 상품 채널 지수를 기반으로 한 이동 평균이 일반 상품 채널 지수를 위로 교차할 경우, SELL 포지션이 열립니다. 상품 채널 지수를 기반으로 한 이동 평균이 일반 상품 채널 지수를 위로 교차할 경우, BUY 포지션이 닫힙니다. 상품 채널 지수를 기반으로 한 이동 평균이 일반 상품 채널 지수를 아래로 교차할 경우, SELL 포지션이 닫힙니다. EURUSD, H1 테스트 결과:

2017.11.03
MetaTrader 5의 손절매와 이익실현 설정 방법
MetaTrader5
MetaTrader 5의 손절매와 이익실현 설정 방법

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 손절매(Stop Loss)와 이익실현(Take Profit) 설정에 대해 알아보겠습니다. 이 두 기능은 트레이딩에서 매우 중요하죠. 손절매로 거래가 종료되면 거래량이 두 배로 증가하고, 이익실현으로 종료되면 최소 거래량이 사용됩니다. 특히, OnTradeTransaction을 이용하면 손절매나 이익실현이 활성화된 후 거래가 수행되었는지 확인할 수 있습니다. 최근에 추가된 ENUM_DEAL_REASON은 이러한 정보를 제공하는 데 큰 도움이 됩니다. 이 기능은 build 1625에 포함되었습니다. ENUM_DEAL_REASON 이유 설명 ... ... DEAL_REASON_SL 손절매 활성화로 인해 거래가 실행되었습니다. DEAL_REASON_TP 이익실현 활성화로 인해 거래가 실행되었습니다. ... ... 거래가 손절매나 이익실현에 의해 발생했는지 확인하는 것은 매우 간단하고 신뢰할 수 있는 방법입니다. 현재 버전(build 1626)에서는 이 Expert Advisor를 실시간 테스트를 통해 확인할 수 있습니다. 차트에서 실행하거나 메타에디터에서 디버그 모드(F5)를 사용해 보세요. OnTradeTransaction에서는 손절매 또는 이익실현이 트리거되었는지 확인할 수 있습니다. 아래는 이를 확인하기 위한 코드 예시입니다:       if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)          if(deal_entry==DEAL_ENTRY_OUT)            {             if(deal_reason==DEAL_REASON_SL)                ExtLot*=2.0;             else if(deal_reason==DEAL_REASON_TP)                ExtLot=m_symbol.LotsMin();            }

2017.11.03
Multi Arbitration 1.1xx: 메타트레이더 5를 위한 신규 시스템 트레이딩 EA
MetaTrader5
Multi Arbitration 1.1xx: 메타트레이더 5를 위한 신규 시스템 트레이딩 EA

Multi Arbitration 1.000의 발전된 버전입니다. 1.000과의 차이점: 이 EA는 오직 PERIOD_M1에서 실행됩니다. 자세한 내용은 아래의 타임프레임 파라미터를 참고하세요. EA는 이제 두 개의 심볼을 동시에 거래합니다. 두 번째 심볼은 ExtArrSymbols 정적 배열에서 가져옵니다: string         ExtArrSymbols[20]=   {    "EURUSD","GBPUSD","USDCHF","USDJPY","USDCAD",    "AUDUSD","AUDNZD","AUDCAD","AUDCHF","AUDJPY",    "CHFJPY","EURGBP","EURAUD","EURCHF","EURJPY",    "EURNZD","EURCAD","GBPCHF","GBPJPY","CADCHF"   }; //+------------------------------------------------------------------+ //| Expert initialization function                                   | //+------------------------------------------------------------------+ int OnInit() 포지션 오프닝 원칙이 변경되었습니다: 현재 가격이 가장 낮은 BUY 포지션 아래일 때만 새로운 BUY 포지션을 열 수 있습니다. 현재 가격이 가장 높은 SELL 포지션 위일 때만 새로운 SELL 포지션을 열 수 있습니다. 새로운 파라미터 타임프레임을 통해 EA를 어떤 차트에서든 최적화할 수 있습니다. 이 전문가 어드바이저는 메인 심볼의 새로운 바가 생성될 때 작동합니다 (즉, EA가 실행되고 있는 차트의 심볼): //+------------------------------------------------------------------+ //| Expert tick function                                             | //+------------------------------------------------------------------+ void OnTick()   { //--- 새로운 바 발생 시에만 작업합니다    static datetime prevtime=0;    datetime time_0=iTime(0,m_symbol_one.Name(),InpTimeFrame);    if(time_0==prevtime)       return;    prevtime=time_0; 여기서 InpTimeFrame 변수는 우리의 타임프레임 입력입니다. 이 입력에 따라 EA는 어떤 타임프레임에서도 작동할 수 있습니다! EURUSD에 대한 테스트 결과:

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