Experts: Simple MA Expert Advisor

 

Simple MA Expert Advisor:

새로운 전략 테스터를 사용해보고 싶은데 EA가 없는 분들을 위한 것입니다.

Simple MA Expert Advisor

Author: Karlis Balcers

 

테스터에서 오류가 발생합니다:

2010.04.28 06:27:44 코어 1 프로세스 생성 오류 [2]

 
1Serg:

테스터에서 오류가 발생합니다:

2010.04.28 06:27:44 코어 1 프로세스 생성 오류 [2]

최신 빌드로 업데이트한 후 프로그램 디렉터리 루트에서 metatester.exe 파일을 확인하세요.
 
Renat:
최신 빌드로 업데이트한 다음 프로그램 디렉터리 루트에서 metatester.exe 파일을 확인하세요.

감사합니다, 작동합니다.

최적화 프로그램과 시각화가 누락되었습니다.

 
1Serg:

최적화 도구와 시각화가 누락되었습니다.

최적화 도구는 있습니다. 테스터 창의 높이를 높이기만 하면 됩니다.

시각화는 나중에 제공될 예정입니다.

 
Renat:

최적화 도구는 테스터 창의 높이를 높이기만 하면 됩니다.

시각화는 나중에 제공될 예정입니다.

멋지네요!

 

안녕히 계세요,

미스터/미세스 챠크투오, 저는 귀하의 코드 K_eSimpleMA를 공부했고, EA의 구조와 SMA 크로스로 작업하는 방법과 같은 개념을 이해하는 데 매우 유용했습니다.

이 글을 공유해 주셔서 정말 감사합니다.

반면에 몇 가지 질문이 있는데 두 가지 모두 SymbolInfoTick 기능과관련된 질문입니다 :


MQL5 매뉴얼에서SymbolInfoTick(Symbol(),tick) 에 대해 설명하는것은 지정된 심볼의 현재 가격을 MqlTick 유형의 변수에 반환하고 성공하면 참을 반환하고 그렇지 않으면 거짓을 반환한다고 나와 있습니다.

위의 내용에 따르면 틱이 수신되지 않으면"심볼 정보를 얻지 못했습니다!" 라는 메시지가 출력된다는 것으로 이해합니다. 이것이 맞나요? 정확하지 않다면 어떤 내용인지 알려주실 수 있나요?

또 다른 질문은 틱할 때마다 메시지가 인쇄되면 어떻게 되나요?

다시 한 번 감사드립니다.

 

trReq.sl=tick.ask-_Point*sl; // 주문의 스톱로스 레벨

trReq.tp=tick.ask+_Point*tp; // 주문의 이익 실현 레벨

필요

trReq.sl=tick.bid-_Point*sl; // 주문의 스톱로스 레벨

trReq.tp=tick.bid+_Point*tp; // 주문의 이익실현 주문 레벨

을 설정하고 그에 따라 SELL로 변경합니다.

매수 주문은 매도 호가로 체결되지만 청산 주문은 매수 호가로 체결됩니다.

예를 들어 손익을 20포인트로 제한하려면 매수 호가(종가)에서 정확히 20포인트를 계산하고 매도 호가(종가)에서 정확히 20포인트를 계산해야 합니다.

 

이 코드에 추가하여 MACD 추세에서 멈추지 않고 거래하도록하는 방법을 알려주시겠습니까?

롱: MACD가 빠른 MA가 위에서 아래로 느린 MA를 교차하고 있습니다.

크로이 롱: MACD가 빠르게 상승하는 MA가 아래에서 위로 느린 MA를 교차했습니다.

숏: MACD가 빠르게 감소하는 MA가 위에서 아래로 느린 MA를 교차했습니다.

단기: MACD가 빠르게 감소하는 MA가 아래에서 위로 느린 MA를 교차했습니다.

이렇게 해봤습니다:

//+------------------------------------------------------------------+
//|MACD&DEMA.mq5 |
//|저작권 2010, AM2 그룹. |
//| http://www.am2_group.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link      "http://www.am2_group.net"
#property version   "1.00"

//--- 입력 매개변수
input int Periods=2;          // 기간 1 이동 평균
input int Shift=38;           // 기간 2 이동 평균
input int SL=30;              // 손절매
input int TP=100;             // 수익 창출
input int MAGIC=3072010;      // 매직넘버 카운슬러

MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle;               // MACD 인디케이터 핸들
double ma1Val[];
double ma2Val[];
double macdVal[]; // 일봉의 숫자 MACD 값을 저장하기 위한 동적 배열
  
int sl;
int tp;
//+------------------------------------------------------------------+
//| 전문가 초기화 기능|
//+------------------------------------------------------------------+
int OnInit()
{
   //모든 신규 주문 요청에 대한 기본 저장소 설정
      trReq.action=TRADE_ACTION_DEAL;
      trReq.magic=MAGIC;
      trReq.symbol=Symbol();                 // 거래 기호
      trReq.volume=0.1;                      // 로트 단위 거래 요청 수량
      trReq.deviation=1;                     // 요청된 가격에서 가능한 최대 편차
      trReq.type_filling=ORDER_FILLING_AON;  // 주문 실행 유형
      trReq.type_time=ORDER_TIME_GTC;        // 주문 실행 시간
      trReq.comment="MA Sample";
   //end
  
   // 2 MA 표시기용 핸들 생성
      ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
      ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
   //--- MACD 인디케이터 핸들 가져오기
      macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
   //end
  
   //입력 매개변수는 읽기 전용입니다.
      tp=0;
      sl=0;
   //end
  
   소수점이 5자리인 계정의 경우 //Suppoprt
      if(_Digits==5)
      {
         sl*=10;
         tp*=10;
      }
   //end
      
   return(0);
}
//+------------------------------------------------------------------+
//| 전문가 초기화 기능|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| 전문가 틱 기능|
//+------------------------------------------------------------------+
void OnTick()
  {
  
   MqlTick tick; //변수에 진드기 정보
   if(!SymbolInfoTick(Symbol(),tick))
   {
      Print("Failed to get Symbol info!");
      return;
   }
  
   //최신 MA 표시기 값을 버퍼에 복사합니다.
   int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
   if(copied>0)
      copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
      copied=CopyBuffer(macdHandle,0,0,4,macdVal);
   if(copied>0)
   {
      // 만약 MAPeriod > MAPeriod + Shift -> BUY
      if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
      {
         trReq.price=tick.bid;                   // SymbolInfoDouble(NULL,SYMBOL_BID);
         trReq.sl=tick.bid-_Point*sl;            // 주문의 손절매 수준
         trReq.tp=tick.bid+_Point*tp;            // 주문의 수익 수준 가져가기
         trReq.type=ORDER_TYPE_BUY;              // 주문 유형
         OrderSend(trReq,trRez);
      }
      // 만약 MAPeriod < MAPeriod + Shift -> SELL
      else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
      {
         trReq.price=tick.ask;
         trReq.sl=tick.ask+_Point*sl;            // 주문의 손절매 수준
         trReq.tp=tick.ask-_Point*tp;            // 주문의 수익 수준 가져가기
         trReq.type=ORDER_TYPE_SELL;             // 주문 유형
         OrderSend(trReq,trRez);
      }
   }

  }
//+------------------------------------------------------------------+
 
Automated-Trading:

간단한 MA EA:

저자: 아웃캐스트

안녕하세요 아웃캐스트,

나는 EA의 새로운 사람입니다 나는 방금 tsaktuo esimpleMA 씨를 가져 왔고, 코드를 정말로 이해하지 못하기 때문에 내 차트에서 실행되는 것을 보았지만 MA 값의 일부를 설정해야합니까, 나는 수업이나 책이 필요한 도움이 필요합니다. ???

 

MA를 버퍼링하고 차트에 표시하는 문제를 해결해 준 코드 예제를 찾아서 기뻤습니다. 게시해 주셔서 감사합니다.

한 가지 궁금한 점은 미체결 주문을 어떻게 청산할지 결정하나요?

고마워요