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

 
Igor Makanu :

Expert Advisors에는 표시기 버퍼 가 없으며 터미널에 그리지 않습니다.

전문가가 스크립트 및 지표와 다른 점을 도움말에서 읽으십시오.

답변 해주셔서 감사합니다.

이 기능을 구현하는 방법을 알려주시겠습니까?

 

안녕하세요! 함수에 배열을 전달하는 데 도움

우리는 구조를 가지고

 struct pattern
  {
   double             x;
   datetime           y;
 };  

이 구조 유형의 정적 배열 쌍을 선언합니다.

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

이제 함수에 정적 배열을 전달하고 싶지만 오류가 발생합니다. -'[' - array required

void MyFunction(pattern &array)
{
   Print (array[ 1 ][ 1 ].x, " " ,array[ 1 ][ 1 ].y);
   }

함수에 배열을 전달하는 올바른 방법은 무엇입니까?

 
Tango_X :

안녕하세요! 함수에 배열을 전달하는 데 도움

우리는 구조를 가지고

이 구조 유형의 정적 배열 쌍을 선언합니다.

이제 함수에 정적 배열을 전달하고 싶지만 오류가 발생합니다. -'[' - array required

배열을 함수에 올바르게 전달하는 방법은 무엇입니까?

 void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin :

감사하다! 감독자!

 
Alexander Layzerevich :

답변 해주셔서 감사합니다.

이 기능을 구현하는 방법을 알려주시겠습니까?

iCustom()을 통해 지표를 호출하는 별도의 전문가 및 차트에 대한 별도의 지표만

또한 지표를 호출할 때 EA는 지표의 새 복사본을 사용합니다. 차트에서 전문가를 시작하고 전문가 설정(iCustom()에 전달된 설정)을 변경하면 차트의 표시기가 어떤 식으로든 이에 반응하지 않습니다.

테스터에서 테스트가 끝나면 전문가가 호출 한 표시기가 표시되고 시각적 모드에서 테스트 할 때 표시기를 테스터 차트에 놓을 수 있습니다 ....

일반적으로 작업과 욕구에 따라 다르며 옵션으로 전문가의 템플릿을 적용할 수 있지만 템플릿의 매개변수를 변경하는 방법이 기억나지 않습니다... 누군가 이렇게 했을 수도 있습니다.

 
Alexander Layzerevich :

답변 해주셔서 감사합니다.

이 기능을 구현하는 방법을 알려주시겠습니까?

선으로 그리기( OBJ_TREND )

 
Alexander Layzerevich :

답변 해주셔서 감사합니다.

이 기능을 구현하는 방법을 알려주시겠습니까?

표시기를 전혀 사용하지 않고 Expert Advisor에서 표시기 선 을 그리는 경우 표시기에서 Expert Advisor로 전송된 계산에 따라서만 그래픽 개체(추세선)만 사용합니다. 비용이 많이 드는 것은 사실입니다. 그러나 차트에서 막대가 보이는 영역으로 자신을 제한할 수 있습니다.

 

조언 해주셔서 감사합니다.

실제로 지표도 마찬가지입니다.

저것들. 계산된 값이 있는데 선으로 연결해야 합니다. ( OBJ_TREND )

 
Igor Makanu :

주문을 수정할 때 적어도 하나의 매개변수를 변경해야 합니다. 실수 1번 - 서버에 요청을 보낸 후 변경할 필요가 없는 경우

서버에 보낸 내용을 인쇄하면 즉시 볼 수 있습니다.

스톱이나 이익을 확인하기 위해 조건을 추가했지만 오류가 남아 있습니다.

 if (OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0 ))


또한 후행을 위해

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov :

스톱이나 이익을 확인하기 위해 조건을 추가했지만 오류가 남아 있습니다.

또한 후행을 위해

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)