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

 
Vitaly Muzichenko :

이미 무차원이지만 2차원이며 무차원 개수의 요소를 2차원에 넣을 수 있습니다.

당신은 일반적으로 무엇을합니까, 당신이 한 일의 결과가 어떠해야하는지 알고 있습니까? 아니면 진행하면서 논리를 발명하고 있습니까?

현재 예에서 나는 그 이상으로 진행되지 않도록 거기에 임의의 로트와 함께 무한한 수의 주문 을 넣을 수 있기를 원합니다.

물론 우리는 경계를 알고 모두가 알고 있지만 이렇게 원합니다.

나는 대괄호 안에 요소를 지정하면 마지막 요소가 될 것이라는 사실에서 진행합니다.

여기 내가 이 쓰레기를 얻었습니다. 무리를 순서대로 볼 거라고 예상했는데... 많이? 그래서 많은 대신에 결과를 주문에 추가합니다(많은 종류의 주문 * 계수)

거기에서 데이터를 추출하는 문제

나는 내가 상상하는대로 얻고 싶다

마이어레이[0][0.01]

마이어레이[1][0.01]

마이어레이[2][0.02]

등...


void CalcOrders()

{

int CountOrders= 0 ;

double MyArray [ 99 ][ 99 ];

for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)

     {

       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())

         && ( OrderMagicNumber ()==Magic) && ( OrderType ()== OP_SELL ))

         CountOrders++;

         ArrayResize (MyArray,CountOrders+ 1 );

         MyArray[CountOrders][ 0 ]= OrderLots ();

         Print ( "MyArray[CountOrders][0]" ,MyArray[CountOrders][ 0 ]);

     }

}    

2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 30 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 25 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01
2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 25 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 20 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 20 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 15 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01

 
trader781 :

현재 예에서 나는 그 이상으로 진행되지 않도록 거기에 임의의 로트와 함께 무한한 수의 주문 을 넣을 수 있기를 원합니다.

물론 우리는 경계를 알고 모두가 알고 있지만 그렇게 원합니다.

나는 대괄호 안에 요소를 지정하면 마지막 요소가 될 것이라는 사실에서 진행합니다.

여기 내가 이 쓰레기를 얻은 것이 있습니다. 무리를 순서대로 볼 거라고 예상했는데... 많이? 그래서 많은 대신에 결과를 주문에 추가합니다 ( 많은 것과 같은 주문 * 계수)

거기에서 데이터를 추출하는 문제



void CalcOrders()

{

int CountOrders= 0 ;

double MyArray [ 99 ][ 99 ];

for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)

     {

       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())

         && ( OrderMagicNumber ()==Magic) && ( OrderType ()== OP_SELL ))

         CountOrders++;

         ArrayResize (MyArray,CountOrders+ 1 );

         MyArray[CountOrders][ 0 ]= OrderLots ();

         Print ( "MyArray[CountOrders][0]" ,MyArray[CountOrders][ 0 ]);

     }

}    

2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 30 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 25 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01
2017.01 . 13 12 : 51 : 14.372 2017.01 . 05 16 : 25 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 20 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 20 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.02
2017.01 . 13 12 : 51 : 14.371 2017.01 . 05 16 : 15 : 00   martin GBPUSD,M5: MyArray[CountOrders][ 0 ] 0.01


무엇이 필요한지 설명해주세요.

음, 모든 것을 어레이로 밀어넣자. 그러면 어떻게 될까요?

배열을 비틀고 배열에서 필요한 위치를 찾습니다.

어떤 포지션에 대한 정의가 있나요? 아니면 트레이딩 탭을 눈으로 보면 6이 필요합니다. 맞죠?
 
Alekseu Fedotov :

설명해주세요, 무엇이 필요한가요?

음, 모든 것을 어레이로 밀어넣자. 그러면 어떻게 될까요?

배열을 비틀고 배열에서 필요한 위치를 찾습니다.

어떤 포지션에 대한 정의가 있나요? 아니면 트레이딩 탭을 눈으로 보면 6이 필요합니다. 맞죠?

온틱()

포지션을 여는 조건이 맞는 경우

{오픈 포지션}

위치가 올바르게 열리면

{최대한 추가}

마지막 로트가 위치 2인 경우 - 로트 *1.5를 추가하고(마지막 로트 찾기 기능을 통해 두 번째 로트를 얻음) 이것이 세 번째 로트입니다.

이것이 네 번째 주문이라면

충전 {0 로트 + 첫 번째 로트}

이것이 다섯 번째 주문이라면

충전 {lot 1 위치 + lot 3}

현재 목록의 마지막 위치에 대한 정의가 있습니다.

지금 당장 다른 구현 방법이 보이지 않기 때문에 배열에 쓰고 바로 뽑아야 하므로 주문과 위치의 수 는 이론적으로 무한해야 합니다.

그래서 함수에서 내가 한 것을 보여줬는데, 맞는지 아닌지 모르겠다.

따라서 어떻게 든 데이터를 꺼내고 주문을 열 계정을 미리 알고 있어야합니다.

시스템이 일반적으로 작동하는 것처럼 가장하더라도 구현 자체가 중요합니다.

 
좋은 시간. 어드바이저를 테스트해야 하는지 알려주세요. 비트와 csv 파일을 쓰고 읽는 명령을 사용합니다. 아시다시피 이러한 파일에 대한 작업을 사용하기 위한 테스트 모드에서 오류가 발생합니다.
 
Top2n :
좋은 시간. 어드바이저를 테스트해야 하는지 알려주십시오. 어드바이저는 명령을 사용하여 비트와 csv 파일을 쓰고 읽습니다. 아시다시피 파일 작업을 사용하기 위한 테스트 모드에서 오류가 발생합니다.

오류가 발생하지 않습니다. 플래그를 사용하지 않는 경우에만 다른 폴더에 기록

FILE_COMMON

4096

모든 클라이언트 터미널 \Terminal\Common\Files의 공통 폴더 에 있는 파일 위치. 파일 열기(FileOpen()), 파일 복사(FileCopy(), FileMove()) 및 파일 존재 확인(FileIsExist())에 플래그를 사용합니다.

 
Alexey Viktorov :

오류가 발생하지 않습니다. 플래그를 사용하지 않는 경우에만 다른 폴더에 기록

FILE_COMMON

4096

모든 클라이언트 터미널 \Terminal\Common\Files의 공통 폴더 에 있는 파일 위치. 파일 열기(FileOpen()), 파일 복사(FileCopy(), FileMove()) 및 파일 존재 확인(FileIsExist())에 플래그를 사용합니다.

음, FileOpen()에서 사용하는 플래그가 있습니다.

input string InpFileName= "data.bin" ;
input string InpDirectoryName= "" ;
string path=InpDirectoryName+ "//" +InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = 파일 열기 오류

 
Top2n :

음, FileOpen()에서 사용하는 플래그가 있습니다.

input string InpFileName= "data.bin" ;
input string InpDirectoryName= "" ;
string path= InpDirectoryName+ "//" + InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = 파일 열기 오류

FileOpen()은 플래그가 아닙니다... 플래그는 FILE_COMMON 입니다.

별도의 폴더에 쓰지 않으려면 경로에 빈 문자열로 지정할 필요가 없습니다. 선택 사항은 노란색으로 강조 표시됩니다.


 
Alexey Viktorov :

FileOpen()은 플래그가 아닙니다... 플래그는 FILE_COMMON 입니다.

별도의 폴더에 쓰지 않으려면 경로에 빈 문자열로 지정할 필요가 없습니다. 선택 사항은 노란색으로 강조 표시됩니다.


연락이 왔어요 감사합니다
 
안녕하세요!
#property strict 속성에 대해 어디에서 읽을 수 있는지 알려주세요.
 
Leo59 :
안녕하세요!
#property strict 속성에 대한 정보는 어디에서 읽을 수 있는지 알려주세요.
예를 들어 여기 https://docs.mql4.com/en/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4