초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 202

 
Yurij Kozhevnikov :

=

대체 원리를 제대로 이해하면 그런 것 같습니다.

중괄호 뒤에 세미콜론을 추가합니다. 그리고 지금 다른 것이 무엇을 가리키는지는 분명하지 않습니다.

안타깝게도 매크로 확장을 자동화하여 무슨 일이 일어나는지 확인하는 쉬운 방법이 없는 것 같습니다. 자신의 스크립트를 휘젓지 않는 한.

고맙습니다! 매크로에서 while 뒤에 세미콜론이 없는 것은 당연합니다.

매크로는 좋은 것이지만 선과 악의 경계는 여성의 경우보다 훨씬 얇습니다.))) 매크로는 매우 매우 조심해야 합니다. 그리고 예, 제 예에서는 ';'가 아니라 ;을 제거한 후 매크로에 있는 if와 관련이 있는 else입니다.

저는 매크로를 잘 다룰 줄 압니다. 그래서 당신과 같은 경우에는 매크로를 사용하기로 맹세한 지 1.5년이 지났습니다. 더 최적입니다.

 inline bool CheckRead(){
   ...
}

if (!CheckRead()) return ;
 

그것은 인라인에 관한 것입니다. 여기에서 아무 것도 찾지 못했습니다.

나는 C++를 모른다.

 

안녕하세요! 도와주세요!

주문을 열고 수정하는 매우 간단한 코드가 있습니다. 시도 사이에 약간의 지연이 있는 루프에 OrderSend , OrderSelect 및 OrderModify 함수를 넣습니다. 통신 오류 등을 최소화하기 위해

다음과 같은 오해가 발생합니다. 주문이 정상적으로 열리면 StopLoss가 성공적으로 수정되고 TakeProfit이 성공적으로 수정됩니다. 그러나 TP를 설정할 때 StopLoss는 0으로 재설정됩니다. 나는 그 이유를 이해할 수 없다.

다음은 코드의 해당 부분입니다.

보내기 = 5; //주문을 위한 최대 시도 횟수

틱=0;

센드셋=0; //카운터 시도

동안(!틱 && sendset<=보내기)

{

tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0.0,0.0,komm,MagNum,0,Yellow);

센드셋++;

수면(1000); // 다음 시도까지 1초 지연

}

선택 = 5; //주문을 선택하기 위한 최대 시도 횟수

slschet=0; //주문 선택 시도 횟수

동안(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=select)

{

슬스케 ++;

수면(500); // 다음 시도까지 0.5초 지연

}

if(slschet<select) //최대 시도 횟수보다 적은 횟수는 주문 선택이 성공했음을 의미합니다.

{

modify = 5;//주문을 수정하려는 최대 시도 횟수

mdset=0;

동안(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Yellow)

&& mdschet<=수정)

{

mdschet++;

수면(500); // 다음 시도까지 0.5초 지연

}

*여기서 모든 것이 훌륭합니다 - SL이 설치됨

mdset=0; //TP 변경 전 카운터 리셋

동안(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Digits),0,Yellow)

&& mdschet<=수정)

{

mdschet++;

수면(500);

}

}

*여기서 TP는 정상적으로 설정되지만 SL은 이미 0.0과 같습니다. 즉, OrderStopLoss()는 0.0과 같습니다.

순서의 선택은 변경되지 않았지만.

SL과 TP 설치 사이에 OrderSelect를 다시 추가하면 모든 것이 작동하는 것 같습니다. 그러나 그것은 논리를 무시합니다.

문제에 대해 도움을 주셔서 미리 감사드립니다.

 

안녕하세요!

동적 배열 의 크기를 변경하는 방법을 알아내도록 도와주세요.

배열을 설정했다고 가정해 보겠습니다.

 int DB[][ 8 ];

또한 루프의 첫 번째 서브루틴에서 여러 번 가능합니다(여기에는 질문이 없습니다. 지금까지는 의도한 대로 작동함).

 ushort i = 0 ;
ArrayResize (DB,i+ 1 );

다음 서브루틴에서는 루프의 첫 번째 차원에 요소를 추가합니다. 얼마인지 알 수 없습니다. 차원을 미리 선언하는 것보다 이것이 느리다는 것을 알고 있습니다. 그러나 연간 최대 500개의 추가가 날씨를 만들지 않을 것이라고 생각합니다.

문제는 이 서브루틴에서 배열의 기존 크기를 찾는 방법입니다. 기본 값으로 사용하고 하나의 새 값을 추가합니다.

ArraySize()를 가져 와서 8로 나누시겠습니까? 아니면 더 적합한 기능이 있습니까?

미리 감사드립니다!

 
Oleg_Ko :

안녕하세요!

동적 배열 의 크기를 변경하는 방법을 알아내도록 도와주세요.

배열을 설정했다고 가정해 보겠습니다.

또한 루프의 첫 번째 서브루틴에서 여러 번 가능합니다(여기에는 질문이 없습니다. 지금까지는 의도한 대로 작동함).

다음 서브루틴에서는 루프의 첫 번째 차원에 요소를 추가합니다. 얼마인지는 미리 알 수 없습니다. 차원을 미리 선언하는 것보다 이것이 느리다는 것을 알고 있습니다. 그러나 연간 최대 500개의 추가가 날씨를 만들지 않을 것이라고 생각합니다.

문제는 이 서브루틴에서 배열의 기존 크기를 찾는 방법입니다. 기본 값으로 사용하고 하나의 새 값을 추가합니다.

ArraySize()를 가져 와서 8로 나누시겠습니까? 아니면 더 적합한 기능이 있습니까?

미리 감사드립니다!

배열 범위()

Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin :

배열 범위()

아르템, 고마워.
 

안녕하세요.

나는 아주 오랫동안 MT4에서 거래하지 않았고, 다시 시도하기로 결정했습니다. 이전에는 스크립트(첨부)를 사용했지만 지금은 시작되지 않습니다. 무엇이 잘못되었는지 확인하십시오.

파일:
RiskAdvisor.mq4  12 kb
 
Nauris Zukas :

안녕하세요!
임의의 기간에 CopyHigh 배열 요소의 수 를 즉시 알 수 있는 방법이 있습니까?

나는 스스로 대답할 것이다. 아마도 검색 엔진을 통해 누군가가 그 질문에 걸려 넘어질 것이다.

 SeriesInfoInteger (symbol_name,timeframe, SERIES_BARS_COUNT );
 
Nauris Zukas :

나는 스스로 대답할 것이다. 아마도 검색 엔진을 통해 누군가가 그 질문에 걸려 넘어질 것이다.

더 많은 막대(), iBar()
 
Artyom Trishkin :
더 많은 막대(), iBar()

Bars()를 사용하면 특정 기간 의 배열 요소 수를 알 수 없고 현재 차트에서만 알 수 있습니다.