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

 
Snower : 노란색 선은 가격이 돌파해야 하는 가격 채널이며 주문이 스마일리 캔들과 함께 시작되고 이전의 모든 것을 무시하도록 합니다.

코드에서 가격 채널은 위에서 정의한 channel_top 및 channel_bottom입니다. 핀 바의 정의는 어디에 있습니까?

 
Vitaly Muzichenko :

회신하다

Artyom, 당신은 자세히 읽지 않았습니다. TS는 각각 핀 막대로 부러 졌을 때만 열어야합니다. 핀 막대 (작은 몸체와 큰 그림자)를 쓰면 조건이 충족됩니다.

비탈리, 나는 이렇게 대답했다.

... 그리고 전에 있었던 모든 것들은 무시되었습니다 ...

이전에 나온 것이 모두 핀바였다면 현재일 때 선을 가로지르는 핀바였을 때 어떻게 무시할 수 있습니까?

 
Sergey Likho :

iCustom 기능은 MT4에서 어떻게 처리됩니까? 해당되는 분들의 답변 부탁드립니다!


예를 들어, 전략 테스터에서 어드바이저는 각 틱의 지표에 액세스합니다.

함수가 호출되면 표시기가 메모리에 로드되고 0 막대에서 막대까지 모든 값을 다시 계산한 다음 필요한 오프셋이 있는 값을 반환합니다.

첫 번째 눈금에 1개의 막대 값을 요청하고 두 번째 눈금에 두 번째 막대 값을 요청하면 EA가 전체 기록에서 지표를 두 번 계산합니까?


EA가 Indicator1 에 액세스하고 Indicator 2에 대해 iCustom이 있는 경우 indicator1의 값을 요청할 때 indicator2 가 몇 번이나 다시 계산됩니까?


어쩌면 전략 테스터와 MT4 터미널이 각 막대에 표시기의 값을 저장하여 다시 요청할 때 다시 계산하지 않도록 할 수 있습니까?

그것은 모두 지표의 구현에 달려 있습니다. 계산이 올바르게 구성된 경우 표시기는 현재 막대만 계산합니다. 나머지는 (rates_total-prev_calculate)>1에서 계산되었습니다.

 

배열에 EMPTY_VALUE 값이 있는 경우 배열에 대해 iMAOnArray를 평균화하는 방법은 무엇입니까?

 
Максим Дмитриев :

배열에 EMPTY_VALUE 값이 있는 경우 배열에 대해 iMAOnArray를 평균화하는 방법은 무엇입니까?


이해했다! 평균 샘플에서 하나 이상의 값이 EMPTY_VALUE 와 같으면 이 시점에서 iMAOnArray의 값은 다음과 같을 것입니다.   EMPTY_VALUE

 

모두에게 좋은 하루. 고문을 테스트 중입니다. 거래는 하지 않겠지만 패턴을 확인하기 위해서입니다. EA는 매분 캔들에서 주문을 엽니다. 주문이 CL에 의해 마감된 경우 SL에 의한 주문의 종가로 다른 BUY 주문을 엽니다.


 int start()                                             
{
if ( Bid == iOpen ( NULL , PERIOD_M1 , 0 ))
if ( G != Minute () )
{
OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 3 , Ask + 400 * Point , Ask - 200 * Point ,Y10, 123 );
G  =   Minute ();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф= 0 ,  Номерф= OrdersHistoryTotal ()- 1 ;
for ( ; Номерф>= 0 ; Номерф--)
{
if (! OrderSelect (Номерф, SELECT_BY_POS , MODE_HISTORY )) continue ;
if ( OrderProfit ()>= 0 ) break ;
Счетф++;
if (Счетф> 0 )
if ( TimeCurrent ()== OrderCloseTime ())
OrderSend ( Symbol (), OP_BUY , 1 , Ask , 1 , Bid - 400 * Point , Bid + 200 * Point ,Y11, 123 );
}
return ;
}

문제. . 한 틱에 여러 주문이 마감되고 그 중 마지막 주문이 TP에 의해 마감되면 필요한 BUY 주문이 열리지 않습니다. 프로그램은 주문이 SL이 아니라 TR에서 마지막으로 마감된 것으로 간주하기 때문입니다. 다음은 그러한 상황의 예입니다

13:38:15.859 2008.01.02 15:01:46 테스터: 손절매 #232 at 1.46566 (1.46560 / 1.46562)

13:38:15.859 2008.01.02 15:01:46 테스터: 손절매 #233 at 1.46566 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:01:46 테스터: 1.46562에서 이익을 취 하십시오 #302 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD 샘플 EURUSD,M1: 오픈 #347 매도 0.10 EURUSD에서 1.46570 sl: 1.46972 tp: 1.46372 ok
SL이 주문을 마감한 동일한 틱에서 SL이 주문을 마감한 직후 한 틱에서 BUY 주문이 열리려면 어떤 언어 구성을 사용해야 하는지 알려주십시오.

고맙습니다.

 

안녕하세요!

나는 이미 내 머리를 부러뜨렸다. 이중 배열에 특정 가격이 있는지 확인하는 방법은 무엇입니까?

테스트를 위해 다음과 같이 작성했습니다.


 double prmas[ 5 ] = { 11 , 22 , 33 , 44 , 99 };

ArrayBsearch (prmas, OrderOpenPrice (), WHOLE_ARRAY , 0 , MODE_ASCEND ));


11, 22, 33, 44 -- 스크립트는 문제 없이 찾습니다(터미널에 이러한 순서가 있음). 그러나 예를 들어 가격 45를 처리하면 여전히 3(배열의 가격 위치 44)을 반환합니다.

내가 필요한 것은 본질적으로 bool입니다. 배열에서 처리 중인 주문의 가격이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다. 그러나 나는 아직 언어에서 그러한 기능을 찾지 못했습니다.

 

안녕하세요. 파일이 생성되지 않고 데이터가 기록되지 않는 이유를 알려주세요.

   string terminal_data_path= TerminalInfoString ( TERMINAL_DATA_PATH );
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC( Symbol (), Period ())";
   int file_handle= FileOpen (file_name, FILE_READ | FILE_WRITE | FILE_TXT );
   FileWrite (file_handle,( double )V5);
   FileClose (file_handle);
 
YarTrade : 안녕하세요. 파일이 생성되지 않고 데이터가 기록되지 않는 이유를 알려주세요.

Files 폴더를 자세히 보세요!!! 쓰기는 항상 sandbox = File 폴더에 수행됩니다. 다음과 같이 시도하십시오.

   string file_name=VolC( Symbol (), Period ());  // А кто такой ВолК = VolC  ???
   int file_handle= FileOpen (file_name, FILE_READ | FILE_WRITE | FILE_TXT );
   FileWrite (file_handle,( double )V5);
   FileClose (file_handle);
 
STARIJ :

Files 폴더를 자세히 보세요!!! 쓰기는 항상 sandbox = File 폴더에 수행됩니다. 다음과 같이 시도하십시오.


VolC - 파일 이름을 그렇게 지었습니다. 파일명은 필요없나요?