아이디어 제공자: Vladimir Gribachev.
MQL5 코드 제공자: Vladimir Karputov.
이 EA는 커스텀 지표 없이 포지션을 임의로 열며, 현재 통계를 두 가지 언어로 표시할 수 있습니다:

트레일링은 열려 있는 포지션의 스탑로스를 수정합니다. 손실이 발생할 경우, 마틴게일 방식으로 로트를 증가시킵니다. 손실을 모니터링하는 방법은 OnTradeTransaction에서 거래 이유가 DEAL_REASON_SL일 때입니다:
//+------------------------------------------------------------------+ //| 거래 트랜잭션 함수 | //+------------------------------------------------------------------+ 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_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { PrevBars=0; if(deal_reason==DEAL_REASON_SL && deal_commission+deal_swap+deal_profit<0.0) last_lots_sl=deal_volume; else last_lots_sl=0.0; } } }
입력 매개변수
- 스탑 로스 - 손절매 설정;
- 테이크 프로핏 - 이익 실현 설정;
- 트레일링 스탑 - 트레일링 스탑;
- 트레일링 스텝 - 트레일링 스탭;
- 로트 - 수동으로 설정하는 로트 크기 (로트가 0보다 크면 리스크는 0이어야 함);
- 리스크 - 자동으로 계산되는 로트 크기 (리스크가 0보다 크면 로트는 0이어야 함);
- 마틴게일 - 이전 포지션이 스탑 로스에 의해 종료되고 손실이 발생했을 경우 로트 증가 비율;
- 최대 로트 - 최대 포지션 크기; 이 크기를 초과하면 EA가 비정상적으로 종료됨;
- 매직 넘버 - EA의 고유 식별자.
이후 테스트가 중단되었습니다 (차트에서 EA가 강제로 언로드됨), 참조 로트가 최대 로트 매개변수를 초과했기 때문입니다:
