기고글 토론 "초보자를 위한 MQL5 Expert Advisor 코드 작성 가이드" - 페이지 27

 
Rustam Ayupov #:

친애하는 블라디미르! 나는 초보자를위한 당신의 타이타닉 작업에 도착했고, 내 우선 순위가 바뀌고, 데모 거래는 자체 방식이 될 것이며, 지금 가장 중요한 것은 초보자를위한 학교이며, 나는 당신의 경험의 귀중한 스퀴즈를 씹고, 그것은 매우 귀중하며, 단어가 없습니다. 이 EA에 후행 중지를 삽입하는 방법에 도달하면 앞으로 최적화의 결과로 EA가 긴 테이크 이익을 창출하고 안전망이 비명을 지르기 때문에 아마도 우선 순위로 수행 할 것입니다. 그리고 학교에서의 훈련 과정에서 나는 아마도 작동하는 프로그램이없는 실수를보고 수정하는 법을 배울 것입니다. 고마워요.

진심으로, 루스탐.

천만에요, 루스탐!

존경합니다, 블라디미르.

 
Valeriy Yastremskiy #:

댓글 또는 새 댓글 하단의 파일 첨부하기를 클릭합니다.

독창적인 단순성에 감사드립니다.) 그리고 질문이 있는데, 귀하의 후행 경험을 바탕으로 이 중 하나를 이 EA에 어떻게 삽입하시겠습니까?

 
MrBrooklin #:

제발, 루스탐!

안부, 블라디미르.

나는 전문가 고문 인 저자 자신의 독특하고 간단하고 천재적인 "후행 방법"을 발견했는데,이 개발의 전통과 마찬가지로 저자가 언급 한대로 실행되지 않습니다. 그는 나처럼 아마 더미이지만 큰 더미 일 것입니다.) 그는 가격이 반전되면 이전에 열린 포지션이 닫히면 좋겠다고 약속했지만... 양방향으로 두 개의 오픈 포지션 만 매달려 있고 닫히지 않습니다. 앞서 첫 번째 조언을 하기 전에는 양방향으로 오픈 포지션이 많았지만 닫히지 않았습니다. 케이크 위에서 이 체리를 짜보시겠습니까?

 
Rustam Ayupov #:

기발한 단순성에 감사드립니다) 그리고 질문이 있는데, 당신의 후행 경험을 바탕으로 이 EA에 어떻게 삽입하시겠습니까?

후행이없는 것보다 후행이있는 결과가 더 좋으면 그대로 두십시오.

 
Valeriy Yastremskiy #:

트롤이 없는 것보다 트롤이 있는 것이 더 나은 결과라면 트롤을 그대로 두세요.

삽입하는 것은 어렵지 않지만 무엇을 삽입해야 하나요? 테스트하고 평가하기 위해서입니다.

 
Rustam Ayupov #:

넣는 것은 어렵지 않지만 무엇을 넣을까요? 테스트하기 위해서입니다.

트롤 코드 없이 EA에 트롤 코드를 넣을 수 있습니다. 트롤 코드를 함수에 넣는 것이 좋습니다. 그리고 주문이 있는 경우 조건별로 트롤을 호출합니다.

 
Rustam Ayupov #:

나는 전문가 고문 인 저자 자신의 독특하고 간단하고 천재적인 "후행 방법"을 발견했는데,이 개발의 전통처럼 저자가 언급 한대로 실행되지 않습니다. 그는 나처럼 아마 더미이지만 큰 더미 일 것입니다.) 그는 가격이 반전되면 이전에 열린 포지션이 닫히면 좋겠다고 약속했지만... 양방향으로 두 개의 오픈 포지션 만 매달려 있고 닫히지 않습니다. 앞서 첫 번째 조언을 하기 전에는 양방향으로 오픈 포지션이 많았지만 닫히지 않았습니다. 케이크 위에서 이 체리를 짜보시겠습니까?

안녕하세요, 루스탐! 생산적인 협업을 계속하려면 먼저 문제가 있는 EA 코드를 메시지에 첨부하는 방법을 배워야 합니다. EA를 테스트하는 동안 문제가 발생하면 이 코드를 새 이름으로 저장하고 컴파일한 다음 메시지에 첨부해야 합니다. EA를 새 이름으로 저장하고 컴파일해야 합니다 !!! 그렇지 않으면 고객님과 소통할 때 다른 변형으로 혼동을 일으킬 수 있습니다.

어떤 이유로 EA의 코드를 첨부할 수 없는 경우 다른 방법을 사용할 수 있습니다:

  1. 메타에디터에서 Ctrl+A를 눌러 문제가 있는 EA 코드를 강조 표시합니다 .
  2. Ctrl+C 버튼을 눌러 EA 코드를 복사합니다.
  3. 포럼에 게시할 게시글을 작성하고 AL+S 버튼을 눌러 복사한 코드를 붙여넣어야 하는 필드를 열고 Ctrl+V 버튼을 누릅니다.
  4. 포럼에 게시글 추가하기

문제가있는 EA의 코드를 게시물에 첨부하거나 배치하는 방법을 배우지 않으면 더 이상의 대화가 쓸모가 없게됩니다.

안부, 블라디미르.

 
MrBrooklin #:

안녕하세요, Rustam! 생산적인 협업을 계속하기 위해서는 먼저 문제가 있는 EA 코드를 메시지에 첨부하는 방법을 배워야 합니다. EA를 테스트하는 동안 문제가 발생하면 이 코드를 새 이름으로 저장하고 컴파일한 다음 메시지에 첨부해야 합니다. EA를 새 이름으로 저장하고 컴파일해야 합니다 !!! 그렇지 않으면 여러분과 소통할 때 서로 다른 변종으로 혼동할 수 있습니다.

어떤 이유로 EA의 코드를 첨부할 수 없는 경우 다른 방법을 사용할 수 있습니다:

  1. 메타에디터에서 Ctrl+A를 눌러 문제가 있는 EA 코드를 강조 표시합니다 .
  2. Ctrl+C 버튼을 눌러 EA 코드를 복사합니다.
  3. 포럼에 게시할 게시글을 작성하고 AL+S 버튼을 눌러 복사한 코드를 붙여넣어야 하는 필드를 열고 Ctrl+V 버튼을 누릅니다.
  4. 포럼에 메시지 추가하기

게시물에 문제가 있는 EA 코드를 첨부하거나 게시하는 방법을 배우지 않으면 더 이상의 대화는 쓸모가 없게 됩니다.

안부, 블라디미르.

지연되어 죄송합니다. 주말 동안 지쳐서 마지막 문제의 원인을 찾았지만 브로커 FXopen이 MT5까지 성장하지 않았기 때문에 마지막 문제의 원인을 찾았습니다. 글쎄, 그리고 파일 선택의 단순성을 가르쳐주었습니다. 처음 두 개는 저자의 작업을 최적화 한 것으로, 코드에서 저자의 부주의를 막고 포지션을 대량으로 여는 대신 가격이 반전 될 때 포지션을 닫는 선언을 한 유일한 두 번째 두 가지입니다. 두 번째는 결국 저자가 완성되지는 않았지만 수익성을 원했다면 작업 할 가치가 있습니다.)

 
Rustam Ayupov #:

주말 동안 24 시간 동안 소진 된 지연에 대해 죄송하지만 브로커 FXopen이 MT5까지 자라지 않은 것으로 밝혀지면서 마지막 문제의 원인을 발견했습니다. 글쎄, 그리고 파일 선택의 단순성을 가르쳐주었습니다. 처음 두 가지는 저자의 작업을 최적화 한 것으로, 코드에서 저자의 부주의를 막고 하나의 포지션이 아닌 대규모 포지션 개설을 막았고, 두 번째 두 가지는 가격이 반전 될 때 포지션 청산을 선언 한 것입니다. 두 번째는 결국 저자가 완성되지는 않았지만 수익성을 원했다면 작업 할 가치가 있습니다.)

글쎄, 이것으로 마지막 하나는 여전히 그것을 정리하고, 무언가를 이해하고 탐색을 시작하려고 노력하고 있으며, 긴 테이크 이익의 보험에 대해. 나는 이미 미래에 저자의 놀라움에 대비하고 있으며, 길은 걷는 사람이 여행 할 것입니다).

파일:
 
Rustam Ayupov #:

글쎄요,이 마지막 것을 통해 나는 여전히 무언가를 이해하고 당분간 장기적인 이익을 헤지하기 위해 그 안에서 방향을 잡기 위해 노력하고 있습니다. 나는 이미 미래에 저자의 놀라움에 대비하고 있으며, 길은 걷는 사람이 여행 할 것입니다).

안녕하세요, 루스탐! 이 전문가 고문의 작업 버전을 메시지 하단에 첨부합니다. 코드의 이 섹션이 변경되었습니다:

//--- 모든 것을 합치다 
   if(Buy_Condition_1 && Buy_Condition_2)
     {
      if(Buy_Condition_3 && Buy_Condition_4 && PositionsTotal()==0)
        {
         ZeroMemory(mrequest);
         mrequest.action = TRADE_ACTION_DEAL;                                  // 즉시 주문 실행
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // 최근 요청 가격
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // 손절매
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // 수익 창출
         mrequest.symbol = _Symbol;                                            // 통화 쌍
         mrequest.volume = Lot;                                                 // 거래할 랏 수
         mrequest.magic = EA_Magic;                                             // 매직넘버 주문
         mrequest.type = ORDER_TYPE_BUY;                                        // 주문 구매
         mrequest.type_filling = ORDER_FILLING_FOK;                             // 주문 실행 유형
         mrequest.deviation=100;                                                // 현재 가격과의 편차
         //--- 주문 보내기
         bool check=OrderSend(mrequest,mresult);
         // 결과 코드 가져오기
         if(mresult.retcode==10009 || mresult.retcode==10008) //요청 완료 또는 주문 완료
           {
            Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
           }
         else
           {
            Alert("The Buy order request could not be completed -error:",GetLastError());
            ResetLastError();           
            return;
           }
        }
     }
/*
 2. 매도/매도 설정 확인 : MA-8 하향 하락, 
 이전 가격 아래 종가, ADX > 22, -DI > +DI
*/.
//--- 판매 조건을 담을 부울 타입 변수를 선언합니다.
   bool Sell_Condition_1 = (maVal[0]<maVal[1]) && (maVal[1]<maVal[2]);  // MA-8 하향 하강
   bool Sell_Condition_2 = (p_close <maVal[1]);                         // MA-8 이하로 마감된 이전 가격
   bool Sell_Condition_3 = (adxVal[0]>Adx_Min);                         // 최소값(22)보다 큰 현재 ADX 값
   bool Sell_Condition_4 = (plsDI[0]<minDI[0]);                         // -DI가 +DI보다 큼

//--- 모든 것을 합치다
   if(Sell_Condition_1 && Sell_Condition_2)
     {
      if(Sell_Condition_3 && Sell_Condition_4 && PositionsTotal()==0)
        {
         ZeroMemory(mrequest);
         mrequest.action=TRADE_ACTION_DEAL;                                // 즉시 주문 실행
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // 최신 입찰 가격
         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // 손절매
         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // 수익 창출
         mrequest.symbol = _Symbol;                                          // 통화 쌍
         mrequest.volume = Lot;                                              // 거래할 랏 수
         mrequest.magic = EA_Magic;                                          // 매직넘버 주문
         mrequest.type= ORDER_TYPE_SELL;                                     // 판매 주문
         mrequest.type_filling = ORDER_FILLING_FOK;                          // 주문 실행 유형
         mrequest.deviation=100;                                             // 현재 가격과의 편차
         //--- 주문 보내기
         bool check=OrderSend(mrequest,mresult);
         // 결과 코드 가져오기
         if(mresult.retcode==10009 || mresult.retcode==10008) //요청 완료 또는 주문 완료
           {
            Alert("A Sell order has been successfully placed with Ticket#:",mresult.order,"!!");
           }
         else
           {
            Alert("The Sell order request could not be completed -error:",GetLastError());
            ResetLastError();
            return;
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+

노란색으로 강조 표시된 내용이 추가되었습니다:

&& PositionsTotal()==0

그리고 Buy_opened 및 Sell_opened와 관련된 조건도 제거했습니다:

         // 오픈된 매수 포지션이 있나요?
         if(Buy_opened)
           {
            Alert("We already have a Buy Position!!!");
            return;    // 새 매수 포지션 개설하지 않기
           }
.
.
.
         // 개설된 매도 포지션이 있나요?
         if(Sell_opened)
           {
            Alert("We already have a Sell position!!!");
            return;    // 새 매도 포지션 개설하지 않기
           }

감사합니다, 블라디미르.

파일: