초보자의 기본 질문

gammaray  

안녕하세요!

나는 여기 에 해당 주제에서 이러한 질문을 시도했지만 어떻게 든 질문이 적절한 관심을 불러 일으키지 않았다고 즉시 예약하겠습니다. 내가 보기에는 적어도 한 번 이상 많은 사람들이 만지는 주제가 걱정/머리에 떠오릅니다. FAQ의 질문과 같은 것입니다(틀릴 수 있지만). 여기에 질문 자체를 복제하겠습니다.

1. Mql4와 Mql5의 차이점(웹사이트와 실제 프로그래밍 언어). 각각 Mql4와 Mql5가 내장된 Metatrade 4와 Metatrader 5가 있습니다. 또한 두 개의 서로 다른 관련 사이트가 있습니다. 동시에 내가 MT4에서 본 모든 전문가들이 이 사이트로 연결됩니다. 어느 것이 더 관련성이 있습니까? 어떤 포럼이 "라이브"입니까? 질문을 작성하는 가장 좋은 장소는 어디인가요? 다른 버전의 MT와 Mql 간의 이전 버전과의 호환성? 저는 현재 각각 Mql4의 MT4에서 Expert Advisor를 작성하고 있습니다. 이것은 내가 테스트용으로 데모를 사용하는 브로커가 MT4를 사용하기 때문입니다. Expert Advisor가 작성된 언어를 결정하는 방법은 무엇입니까? 확장자(.mq4 및 .mq5)만 의미합니다. 그리고 파일 이름이 바뀌면 컴파일됩니까(다시 말하지만 이것은 호환성에 관한 것입니다)?

2. Expert Advisor의 동적 외부 매개변수. EA의 사용자 정의 가능한 매개변수를 어떻게든 동적으로 변경할 수 있습니까? 설명하겠습니다... 예를 들어, 외부 매개변수 extern bool a가 있습니다. true이면 추가 매개변수 extern int b를 구성해야 합니다. a=false이면 b는 필요하지 않습니다. 선택한 현재 값에 따라 어떻게든 표시/표시하지 않을 수 있습니까? 외부 매개변수 변경을 위한 핸들러를 찾지 못하고 #if .. #endif 와 같은 구성이 없다는 점을 감안할 때 이것은 할 수 없다고 생각합니다 ... 그렇다면이 상황에서 어떻게 진행하는 것이 가장 좋은지 알려주지 마십시오 프로세스 외부 설정에 과부하가 걸리지 않도록? 예를 들어, a=false로 설정할 수 있습니다. 이 경우에는 b 매개변수가 사용되지 않는다는 사실을 잊어버리고 여전히 최적화에 포함할 수 있습니다(이는 말이 되지 않지만 추가 시간만 낭비하게 됩니다). 그리고 그러한 매개변수 b가 하나만 있을 때 한 가지입니다. 예를 들어 외부 매개변수 열거형을 만들고 차량에 대한 몇 가지 드롭다운 옵션이 있는 경우. 그것들은 공통 부분을 가지고 있지만(여러 개를 작성하는 것보다 하나의 Expert Advisor 내에서 구현하는 것이 논리적이기 때문에), 여러 매개변수를 가진 다른 부분도 있습니다. 그러면 선택한 차량과 관련된 매개변수가 무엇인지 혼동하기 쉽습니다.

3. 전문가의 자동 최적화. IMHO, 매우 편리하고 필요한 것입니다. 여기에서 기사 를 실제 거래하는 과정에서 거래 로봇의 자동 최적화를 찾았습니다. 그러나 거기에서 내가 이해하는 것처럼 외부에서 최적화를 위해 실행되는 두 번째 MT 인스턴스가 사용되며(실행 중인 MT 인스턴스에서) 최적화 결과가 html 형식으로 보고서에서 읽힙니다. 그것은 매우 편리하지 않고 비뚤어져 있습니다. 논리적으로 최적화를 위해 고유한 함수/dll을 작성하고 Expert Advisor에서 직접 실행해야 합니다. 여기 실제 질문이 있습니다. 제가 알기로는 MT 자체에, 전략 테스터에 유전자 최적화 알고리즘이 프로그래밍되어 있습니다. 나는 이러한 알고리즘에 대해 아는 것이 거의 없습니다. 그러나 이론상으로 그들은 오랫동안 알려져 왔습니다. 따라서 질문 - 왜 바퀴를 재발명합니까?) MT에서 직접 사용되는 기성 알고리즘이 있습니까? 아마도 터미널 자체의 라이브러리 어딘가에 이미 있을 수 있습니다 ... 어쩌면 별도의 소스 또는 기성품 dll이 있을 수 있습니다. 일반적으로 이 문제에 대한 귀하의 경험을 공유해 주십시오.

이러한 질문 중 일부에 대해 답변해 주셔서 미리 감사드립니다.

Vladimir Karputov  
gammaray :

안녕하세요!

나는 여기 에 해당 주제에서 이러한 질문을 시도했지만 어떻게 든 질문이 적절한 관심을 불러 일으키지 않았다고 즉시 예약하겠습니다. 내가 보기에는 적어도 한 번 이상 많은 사람들이 만지는 주제가 걱정/머리에 떠오릅니다. FAQ의 질문과 같은 것입니다(틀릴 수 있지만). 여기에 질문 자체를 복제하겠습니다.

1. Mql4와 Mql5의 차이점(웹사이트와 실제 프로그래밍 언어). Mql4와 Mql5가 각각 내장된 Metatrade 4와 Metatrader 5가 있습니다. 또한 두 개의 서로 다른 관련 사이트가 있습니다. 동시에 내가 MT4에서 본 모든 전문가들이 이 사이트로 연결됩니다. 어느 것이 더 관련성이 있습니까? 어떤 포럼이 "라이브"입니까? 질문을 작성하는 가장 좋은 장소는 어디입니까? 다른 버전의 MT와 Mql 간의 이전 버전과의 호환성? 저는 현재 각각 Mql4의 MT4에서 Expert Advisor를 작성하고 있습니다. 이것은 내가 테스트용으로 데모를 사용하는 브로커가 MT4를 사용하기 때문입니다. ...

...

MQL4에 대한 질문을 "네 번째" 포럼에 답변하는 것은 논리적입니다. 그러나 MQL5와 MQL4의 차이점은 더 이상 중요하지 않습니다. MQL4에서 전환 . 따라서 이 포럼에서 "4"에 대해 질문하고 싶다면 주제 제목에 MT4에 대한 질문임을 직접 표시하는 것이 좋습니다. 그래서 더 명확해질 것입니다.


... Expert Advisor가 작성된 언어를 결정하는 방법은 무엇입니까? 확장자(.mq4 및 .mq5)만 의미합니다. 그리고 파일 이름이 바뀌면 컴파일됩니까(다시 말하지만 이것은 호환성에 관한 것입니다)?

...

확장하여. 이름을 바꾼 후 완벽하게 컴파일되고 MT4와 MT5 모두에서 작동하는 파일이 있습니다. 여기에는 일반적인 레시피가 없습니다.
gammaray  
Karputov Vladimir :

MQL4에 대한 질문을 "네 번째" 포럼에 답변하는 것은 논리적입니다. 그러나 MQL5와 MQL4의 차이점은 더 이상 중요하지 않습니다. MQL4에서 전환 . 따라서 이 포럼에서 "four"에 대해 질문하고 싶다면 주제 제목에 MT4에 대한 질문임을 직접 표시하는 것이 좋습니다. 그래서 더 명확해질 것입니다.


확장하여. 이름을 바꾼 후 완벽하게 컴파일되고 MT4와 MT5 모두에서 작동하는 파일이 있습니다. 여기에는 일반적인 레시피가 없습니다.
여기서 첫 번째 질문만 mql4에 관한 것이고 나머지 IMHO는 mql4 및 mql5에 공통입니다. 첫 번째 질문에 답변해 주셔서 감사합니다.) 두 번째 질문은 현재 가장 흥미로운 질문입니다. 글쎄, 세 번째 질문인 IMHO는 모든 EA 작성자가 관심을 가질 수 있습니다)
Vladimir Kazakov  
두 번째 질문에 대해서는 input, sinput, ParametrGetRange(...), ParametrSetRange(...)를 참조하십시오.
gammaray  
Vladimir Kazakov :
두 번째 질문에 대해서는 input, sinput, ParametrGetRange(...), ParametrSetRange(...)를 참조하십시오.

EA의 외부 매개변수를 설정하는 방법을 묻지 않았습니다. 나는 이것을 오래전에 배웠다(input, extern). 설정에 표시된 매개변수 세트를 어떻게 동적으로 변경할 수 있는지 물었습니다. mql에서 ParametrGetRange 및 ParametrSetRange를 찾지 못했습니다. 이것들은 내장 함수가 아닙니까? 어디에서 찾을 수 있습니까?

PS sinput의 사용은 매개변수가 다른 매개변수와 연결되지 않고서는 매개변수 자체를 최적화할 수 없다는 힌트로만 사용할 수 있습니다. 그러나 실행에 추가 시간을 낭비하지 않도록 최적화에서 어떤 매개변수를 구동해야 하는지 제안하기 위해 이미 선택된 매개변수에 따라 입력을 sinput으로 동적으로 변경할 수 없습니다. 현재 중요한 매개변수 없음

Vladimir Kazakov  

옵션 탭에서 프로그래밍 방식으로 아무것도 변경할 수 없습니다. OnInit() 에서 INIT_PARAMETERS_INCORRECT 를 반환하여 잘못된 매개변수 세트를 건너뛸 수 있습니다.

프로그래밍 방식으로 시작, 단계, 중지 및 최적화 권한을 변경할 수 있습니다. https://www.mql5.com/en/docs/optimization_frames

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
gammaray  
Vladimir Kazakov :

옵션 탭에서 프로그래밍 방식으로 아무것도 변경할 수 없습니다. 잘못된 매개 변수 집합을 건너뛸 수 없습니다. 불필요한 계산을 수행하지 않도록 스텁을 켤 수 있습니다.

프로그래밍 방식으로 시작, 단계, 중지 및 최적화 권한을 변경할 수 있습니다. https://www.mql5.com/en/docs/optimization_frames

분명히 이러한 기능은 mql4 도움말에 없기 때문에 mql5에 나타납니다. 그런 다음 다시 호환성 문제입니다. Metatrader 5에서 Expert Advisor를 작성하면 Metatrader 4에서 사용할 수 있나요? 그럴 것 같지는 않습니다... 특히 mql5에 나타난 새로운 기능을 사용한다면. mql5에 최적화를 시작하는 기능이 있습니까(이것은 제 세 번째 질문에 대한 것입니다)?
doublezero  

주제는 "초보자의 기본 질문"이라고 하는데, 초심자로서 나는 아무것도 이해하지 못했습니다. 글쎄, 그것은 내가 여기서 내 기초적인 질문에 대한 답을 확실히 얻을 수 있다는 것을 의미합니다. 나는 내 자신의 로봇 을 작성하기 위해 조언자를 작성하는 단계별 가이드 를 따르려고 노력하고 있습니다. 나는 이 순간에 멈췄다: 예를 들어 두 개의 MA가 교차하거나 볼린저 밴드가 좁아지는 경우 또는 기타 신호와 같이 특정 표시기 신호가 형성될 때 MCL5에서 열린 위치를 강제로 닫는 방법(SL 또는 TP를 기다리지 않고) ? ClosePos()와 같은 함수가 있어야 하지만 어디에 있으며 어떻게 검색할 수 있습니까? 자세한 코드를 요청하기 때문에 나 자신은 뉘앙스를 이해할 수 없습니다. 나는 여전히 MKL5의 아기입니다.

gammaray  
doublezero :

주제는 "초보자의 기본 질문"이라고 하는데, 초심자로서 나는 아무것도 이해하지 못했습니다. 글쎄, 그것은 내가 여기서 내 기초적인 질문에 대한 답을 확실히 얻을 수 있다는 것을 의미합니다. 나는 내 자신의 로봇 을 작성하기 위해 조언자를 작성하는 단계별 가이드 를 따르려고 노력하고 있습니다. 나는 이 순간에 멈췄다: 예를 들어 두 개의 MA가 교차하거나 볼린저 밴드가 좁아지는 경우 또는 기타 신호와 같이 특정 표시기 신호가 형성될 때 MCL5에서 열린 위치를 강제로 닫는 방법(SL 또는 TP를 기다리지 않고) ? ClosePos()와 같은 함수가 있어야 하지만 어디에 있으며 어떻게 검색할 수 있습니까? 자세한 코드를 요청하기 때문에 나 자신은 뉘앙스를 이해할 수 없습니다. 나는 여전히 MKL5의 아기입니다.

나는 이것을 한 달도 채 안 된다. 여기서 질문은 자신을 파헤칠 것인지 아니면 포럼에 질문할 것인지입니다. 나는 보통 간단한 질문을 하지 않습니다. 왜냐하면 그것은 어쩐지 불명예스럽기 때문입니다. 따라서 이번 달에 나온 다소 광범위한 질문을 했습니다. 귀하의 질문에 대해... OrderClose 함수가 호출됩니다. 사용 사례가 많습니다. 동일한 임베디드 MACD 샘플에서. 다음은 MACD 신호를 기반으로 주문을 마감하기 위한 코드입니다(후행 중지 메커니즘을 구현하는 방법에 대한 예제 코드도 있습니다).


//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }


일반적으로 색인 도움말에 "주문"이라는 단어를 입력하면 주문 관리와 관련된 모든 기능이 표시됩니다.
doublezero  
gammaray :

나는 이것을 한 달도 채 안 된다. 여기서 질문은 자신을 파헤칠 것인지 아니면 포럼에 질문할 것인지입니다. 나는 보통 간단한 질문을 하지 않습니다. 왜냐하면 그것은 어쩐지 불명예스럽기 때문입니다. 따라서 이번 달에 나온 다소 광범위한 질문을 했습니다. 귀하의 질문에 대해... OrderClose 함수가 호출됩니다. 사용 예가 많습니다. 동일한 임베디드 MACD 샘플에서. 다음은 MACD 신호를 기반으로 주문을 마감하기 위한 코드입니다(후행 중지 메커니즘을 구현하는 방법에 대한 예제 코드도 있습니다).



빠른 답변 감사합니다! 최근에 이 일을 해본 사람이라면 아마 대답할 것이라고 생각했던 것입니다.

이제 OrderClose는 MKL4에 있지만 MKL5에는 없습니다. CTrade 클래스 의 표준 라이브러리 에는 PositionClose 함수만 있습니다 . 그리고 나는 그것을 거기에서 꺼내는 방법을 전혀 모릅니다. 이를 위해서는 코드에서 라이브러리를 참조한 다음 CTrade 클래스를 참조해야 한다고 생각합니다. .... 일반적으로 저에게 이것은 어두운 숲입니다. 나는 MKL5를 공부할 계획이 아니었고 오히려 성공적인 (나를 위해) 전략을 자동화하기로 결정했기 때문에 단계별 지침을 따르기 시작했습니다. 그리고 붙어있다...

gammaray  
doublezero :

빠른 응답에 감사드립니다! 최근에 이 일을 해본 사람이라면 아마 대답할 것이라고 생각했던 것입니다.

이제 OrderClose는 MKL4에 있지만 MKL5에는 없습니다. CTrade 클래스 의 표준 라이브러리 에는 PositionClose 함수만 있습니다 . 그리고 나는 그것을 거기에서 꺼내는 방법을 전혀 모릅니다. 이를 위해서는 코드에서 라이브러리를 참조한 다음 CTrade 클래스를 참조해야 한다고 생각합니다. .... 일반적으로 저에게 이것은 어두운 숲입니다. 나는 MKL5를 공부할 계획이 아니었고 오히려 성공적인 (나를 위해) 전략을 자동화하기로 결정했기 때문에 단계별 지침을 따르기 시작했습니다. 그리고 붙어있다...

여기 mql 5에서 문제가 발생했습니다. 전환하려는 욕구가 완전히 사라졌습니다. 모든 것이 OrderSend(닫기 포함)를 통해 수행됩니다. 다시 말하지만, MT5에는 동일한 MACD 샘플이 있습니다. 이제서야 10배 더 많은 라인이 필요합니다...
Ошибка закрытия ордера
Ошибка закрытия ордера
  • www.mql5.com
Скажите а есть отдельная команда по закрытию позиции или только встречная позиция? - - Категория: эксперты форекс, торговые роботы и советники
사유: