MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 150

 
yaaarik777 :

좋은 저녁이에요!

코드 작성을 도와주세요. 저는 스스로 할 수 없다고 생각합니다. 핵심은 다음과 같습니다.


결론은 이것입니다: 여기 이 스레드에서 그들은 고통과 추구를 돕습니다.
당신을 위해 그것을해야한다면 - 이것은 프리랜서입니다. 그리고 도움을 주기 위해서는 얻고자 하는 것을 말하고, 당신이 한 일을 보여주고, 잘 되지 않은 일을 설명해야 합니다.
 
Maxim Kuznetsov :
결론은 이것입니다: 여기 이 스레드에서 그들은 고통과 추구를 돕습니다.
당신을 위해 그것을해야한다면 - 이것은 프리랜서입니다. 그리고 도움을 주기 위해서는 얻고자 하는 것을 말하고, 당신이 한 일을 보여주고, 잘 되지 않은 일을 설명해야 합니다.


결론은 고문이 터미널의 모든 쌍의 합계가 아니라 특정 쌍의 주문만 계산하도록 하는 방법을 이해하지 못한다는 것입니다.

할 수 있다면 아이디어나 코드 예제를 알려주십시오. 교과서에서는 어떻게 작동하는지 별도로 설명하고 있지만 구체적인 예는 많지 않습니다.

도움을 주시면 감사하겠습니다.

감사하다.

 
안녕하세요.
어, 나는 오랫동안 체커를 잡지 않았다. 그리고 그것을 다시 가져갔을 때, 그것은

나는 노는 법을 배웠다.
도와주세요.
Rosh의 ZigZag 표시기를 사용하는 좋은 오래된 고문이 있습니다.
스위스 시계처럼 작동합니다.
본문 하단에 제가 인용한 어드바이저를 다운받지 않도록 강령으로 첨부하였습니다.

어드바이저의 아이디어는 주문이 현재 열리고 닫히는 것이었습니다.

다른 지그재그의 일치.
이제 Rosh의 표시기를 다른 표시기로 교체해야 합니다.

표시기, MT3 이후 ZigZag의 첫 번째 버전 중 하나이기도 합니다.
그러나 이 표시기는 다른 지그재그 그리기 알고리즘을 가지고 있습니다.

저도 붙였습니다. 인디케이터의 이름은 High_Low v2(ZigZag), (왠지 첨부파일에 이름이 짤림)

때때로 작동하는 무작위로, 나는 단순히 조건을 대체했습니다.
이중 zz1 = iCustom(NULL, 60, "지그재그_로시",12, 5, 3, 0, 0);
더블 zz2 = iCustom(NULL, 60, "지그재그_로시",48, 20, 12, 0, 0);
이중 zz1 = iCustom( NULL, 0, "높은_낮은 v2(지그재그)",300, 6, 0, 0);

더블 zz2 = iCustom( NULL, 0, "높은_낮은 v2(지그재그)",300, 6, 0, 0);

즉, 하나의 사용자 지정 지표 의 이름과

프랙탈의 경우 매개변수가 다음과 같다고 가정해 보겠습니다.

통과했다.
두 매개변수가 일치할 필요가 없으므로 매개변수를 동일하게 설정합니다.

지그재그, 그러나 변화의 사실만 필요합니다.
모든 TF에서 작동하도록 숫자 60을 0으로 변경했습니다.

교체 후 어드바이저는 오류 없이 컴파일되었지만

스케쥴은 절대 일하기 싫고 테스터에서도 테스트중입니다

원하지 않는다.

질문 - 무엇이 잘못되었나요?
그리고 또 다른 질문은 어떻게?
감사합니다. 큰 텍스트로 인해 죄송합니다.


//+----------------------------------------------- --------------------+
//| ZZ.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"

#include <stdlib.mqh>

#define MAGIC 20110220

extern double 이익실현 = 50;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 오픈 포지션 계산 |
//+----------------------------------------------- --------------------+
int CalculateCurrentOrders(문자열 기호)
{
정수 위치 = 0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL) pos++;
}
}
//---- 반품 주문량
if(pos>0) return(pos);
}
//+----------------------------------------------- --------------------+
//| 미결 주문 조건 확인 |
//+----------------------------------------------- --------------------+
무효 CheckForOpen()
{
인트르;

//---- ZZ 가져오기
이중 zz1 = iCustom(NULL, 60, "지그재그_로시",12, 5, 3, 0, 0);
더블 zz2 = iCustom(NULL, 60, "지그재그_로시",48, 20, 12, 0, 0);
//---- 구매 조건
if(CompareDoubles(zz1,Low[0]) && CompareDoubles(zz2,Low[0]))
{

res=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+TakeProfit*Point,"",MAGIC,0,Bl

에);
반품;
}
//---- 판매 조건
if(CompareDoubles(zz1,High[0]) && CompareDoubles(zz2,High[0]))
{

res=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-TakeProfit*Point,"",MAGIC,0,Re

디);
반품;
}

//----
}
//+----------------------------------------------- --------------------+
//| 마감 주문 조건 확인 |
//+----------------------------------------------- --------------------+
무효 CheckForClose()
{
//---- ZZ 가져오기
이중 zz1 = iCustom(NULL, 60, "지그재그_로시",12, 5, 3, 0, 0);
더블 zz2 = iCustom(NULL, 60, "지그재그_로시",48, 20, 12, 0, 0);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;
if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) 계속;
//---- 주문 유형 확인
if(주문유형()==OP_BUY)
{
if(CompareDoubles(zz1,High[0]) && CompareDoubles(zz2,High[0]))

OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
부서지다;
}
if(주문 유형()==OP_SELL)
{
if(CompareDoubles(zz1,Low[0]) && CompareDoubles(zz2,Low[0]))

OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
부서지다;
}
}
//----
}
//+----------------------------------------------- --------------------+
//| 시작 기능 |
//+----------------------------------------------- --------------------+
무효 시작()
{
//---- 내역 및 거래 확인
if(Bars<100 || IsTradeAllowed()==false) 반환;
//---- 현재 기호로 미결 주문 계산
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
그렇지 않으면 CheckForClose();
//----
}
//+----------------------------------------------- --------------------+













MetaQuotes Software Corp.
MetaQuotes Software Corp.
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах.
파일:
 
yaaarik777 :


결론은 고문이 터미널에 있는 모든 쌍의 합계가 아니라 하나의 특정 쌍의 주문만 계산하도록 하는 방법을 이해하지 못한다는 것입니다.

할 수 있다면 아이디어나 코드 예제를 알려주십시오. 교과서에서는 어떻게 작동하는지 별도로 설명하고 있지만 구체적인 예는 많지 않습니다.

도움을 주시면 감사하겠습니다.

감사하다.

CodeBase를 자유롭게 살펴보세요 - 모든 EA에는 주문 주기가 있습니다 :-)

예를 들어 https://www.mql5.com/ru/code/16588(첫 번째 발견)

  for ( int index = orders- 1 ; index >= 0 ; index--)
      {
       if ( OrderSelect (index, SELECT_BY_POS , MODE_HISTORY )== false )
         {
         Print ( "Error in history!" );
         break ;
         }
       if ( OrderSymbol ()==symbol && OrderMagicNumber ()==MAGICMA)
         {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
            {
             if ( OrderProfit ()> 0 ) break ;
             if ( OrderProfit ()< 0 ) losses++;
            }
         }
      }

‌조건 " if ( OrderSymbol ()==symbol && OrderMagicNumber ()==MAGICMA)"는 특정 기호와 특정 MAGIC에 대한 주문을 선택합니다.

PS/ 위의 복사-붙여넣기 코드에서 ‌OrderSelect 오류가 정확하지 않은 경우 중단됩니다. 계속하는 것이 더 정확합니다(주문이 선택되지 않은 이유를 알 수 없습니다. 일부 내부 MT 메커니즘에 문제가 있을 수 있습니다. 하지만 다음은 건너뛰지 않습니다)

Middle Moving Average
Middle Moving Average
  • 투표: 6
  • 2016.10.18
  • Dmitriy Kudryashov
  • www.mql5.com
Вариант советника, основанного на среднем значении цены для расчета Moving Average.
 
Maxim Kuznetsov :

CodeBase 를 자유롭게 살펴보세요 - 모든 EA에는 주문 주기 가 있습니다 :-)

예를 들어 https://www.mql5.com/ru/code/16588(첫 번째 발견)

그것은 코드 베이스에 있을 뿐만 아니라 포럼의 두 스레드 중 하나에 있습니다. 찾기 시작하는 것이 중요하며 수백 개 이상의 스레드가 서로 다른 해석으로 있을 것입니다.
 
감사합니다 방문하겠습니다
 

안녕하세요 여러분!!! 매수 또는 매도에 대한 거래 신호를 반환하는 함수를 작성하는 데 도움을 주세요. 나는 여전히 MQL에서 막대로 작업하는 방법을 모릅니다(비록 많은 작업을 수행하는 방법을 모릅니다!).

조건은 이렇습니다: 마더바는 그 안에 고가와 저가 안에 종가가 있는 바가 있습니다.(이것이 중요합니다!!! 정확히 종가입니다.) 이제 이 바가 마더바가 됩니다 !

상위 막대의 종가 가 시가보다 높으면 매수 신호를 반환합니다.

‌부모 바의 종가가 시가보다 낮으면 매도 신호를 반환합니다.

외부 변수에 기간을 설정하는 것은 매우 중요합니다.

하지만 이제 적어도 나에게 문제는 차트에서 마지막 체크메이트를 찾는 방법이다. 바??? 네, 육안으로 바로 보이네요!...

‌외부 변수에 마지막 마더 막대의 인덱스를 표시한 다음 함수가 여기에서 춤을 추기 시작하는 것이 나에게 편리할 것입니다. 또는 다른 옵션은 예를 들어 인덱스가 50인 막대를 가져와서 영.

고아를 도와주세요!!!

 

안녕하세요!

아이디어를 제안합니다. 이 가격에 주문이 이미 열려 있는 경우 고문은 주문을 열 수 없습니다. 유효성 검사를 구현하는 방법은 무엇입니까?

 
Kot :

안녕하세요!

아이디어를 제안합니다. 이 가격에 주문이 이미 열려 있는 경우 고문이 주문을 열 수 없었습니다. 유효성 검사를 구현하는 방법은 무엇입니까?

어려운 작업입니다. 절망감에서 미끄러짐을 고려하여 나는 desired_price/_Point에 마법 주문을 할당했습니다.

mql5에서는 더 쉽고, 가격이 선언된 것과 일치하지 않는 위치가 있고, 요청한 가격이 있는 주문이 있습니다.

 
Kot :

안녕하세요!

아이디어를 제안합니다. 이 가격에 주문이 이미 열려 있는 경우 고문이 주문을 열 수 없었습니다. 유효성 검사를 구현하는 방법은 무엇입니까?


각 주문 의 시작 가격을 지정된 가격 값과 비교하는 주문 루프를 작성하고 일치하는 경우 새 주문 플래그를 올리지 마십시오.
사유: