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

 

그리고 아마도 더 빨리)))

어디서 구할 수 있나요?

표시기의 코드는 비공개입니다. 이 열거의 이름을 어떻게 알 수 있습니까?

그리고 어떤 유형의 변수가 필요합니까?

나는 iCustom을 통해 지표를 결합하는 방법을 알고 있으며 운명이 아닙니다.)))

어렵지 않다면 더 쉬울 수 있습니다)))

ENUM_BASE_CORNER를 시도했지만 여전히 작동하지 않습니다.
 
Сергей :

그리고 아마도 더 빨리)))

어디서 구할 수 있나요?

표시기의 코드는 비공개입니다. 이 열거의 이름을 어떻게 알 수 있습니까?

그리고 어떤 유형의 변수가 필요합니까?

iCustom을 통해 표시기를 결합하는 방법을 알고 있지만 운이 없습니다.)))

어렵지 않다면 더 쉬울 수 있습니다)))

ENUM_BASE_CORNER를 시도했지만 여전히 작동하지 않습니다.

다음은 예입니다.

첫 번째 옵션은 일반 열거형 ENUM_BASE_CORNER를 사용하는 것입니다.

두 번째 옵션은 사용자 지정 열거형을 사용하는 것입니다.

그런 다음 iCustom에서 필요한 위치에 선택한 옵션에 따라 base 또는 my_base 변수를 입력합니다.

파일:
100.mq4  5 kb
 
Сергей :

안녕하세요.

말해봐, 내가 머리를 부러뜨렸어.

iCustom을 통해 표시기를 등록하고 문제가 발생했습니다. 표시기에 선택 가능한 텍스트 메뉴가 있고 열리며 여러 항목이 작성되어 있습니다. 글쎄, 이해할 수 있다고 생각합니다)

그럼 어떻게 내 메뉴에 등록할 수 있습니까?

외부 정수 HIT = 0; 롤하지 않고 표시를 중지하고 매개변수 없이 표시되도록 둡니다.

ENUM을 통해 무엇을 선택해야 할까요? 아니면 다른 것을 선택해야 할까요?

미리 감사드립니다.

iCustom의 모든 매개변수(,,,,,,,) 를 올바른 순서로 작성했습니까?

 

좋은 하루 되세요. 주문을 열 때 데이터를 수집하려고 합니다. 주문을 열 때 양초 1,2,3의 adx 표시기 값을 파일에 쓰고 싶습니다.

나는 이것을 위해 다음을 수행합니다. 데이터 디렉토리를 열고 테스터 폴더로 이동하고 이 폴더에서 파일 폴더로 이동한 다음 "ZNA4_ADX.csv"라는 이름의 파일을 생성했습니다. 확장자를 가진 포함된 라이브러리 파일에서 추가로 . mqh 는 기능을 조각하기 시작했습니다. 아래는 주석 처리된 함수 코드입니다.

 void writing_adx_screen1_to_file( int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen ( "ZNA4_ADX.csv" , FILE_WRITE , ';' );
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

   double adx1= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 1 );

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 2 );
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX ( Symbol (), //СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1, // ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
, 3 );
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if (hendel> 0 )
FileWrite (hendel, "ордер " +( string )i_param+ " " +( string )adx1,( string )adx2,( string )adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose (hendel);

   
   } //---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

아래 스크린샷과 같이 데이터가 대략적으로 기록되기를 원합니다.

데이터를 기록하는 방법의 예


즉, 텍스트의 붉은 색은 내가 수동으로 작성할 헤더입니다. 그리고 2행은 이미 함수를 사용하여 등록해야 하는 것입니다. 즉, 테스트 중 1개의 주문 번호입니다. 그리고 3개의 adx 값이 나왔습니다. 또한 테스트에서 두 번째 주문을 열 때 주문 번호가 2가 되고 adx 값이 되는 다음 줄이 필요합니다. 이 주문을 열기 전에 3개의 양초에 대해 쓰여질 것입니다. 테스트에서 얼마나 많은 주문이 해제될 것인지...

아래 코드 스니펫에 표시된 대로 어드바이저 코드에서 함수 자체를 호출합니다.


   //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
   if (f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0 )
  { // НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
       if ( OrderSend ( Symbol (),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print ( "ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО" ); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera); // ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
       if ( GetLastError ()== 141 ){ Alert ( "ОШИБКА № " + string ( GetLastError ())+ "УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА" ); ExpertRemove ();} // ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



테스트는 오류 없이 진행되지만 파일에서 이 결과를 얻었습니다(SCREEN BELOW ).

파일에 쓸 때 얻은 것


결과는 첫 번째 주문과 세 개의 값이 있는 한 줄이었지만 테스트에서는 189개의 미결 주문이 있었습니다. 나는 무엇이며   어디   주문 개수 를 세는 변수를 늘리는 것을 잊었고 첫 주문 이후에 이어지는 데이터를 2.3-189줄로 작성하는 방법을 잊었습니까?   큰 요청은 저를 기본 코드나 다른 재미있는 곳으로 보내지 않는 것입니다. 저는 텍스트를 읽기가 어렵고 다른 사람의 코드를 읽는 것은 거의 불가능합니다. 따라서 필요한 형식으로 데이터를 얻을 수 있도록 무엇을 추가해야 하고 어디에 추가해야 하는지 이해할 수 있는 방식으로 알려주십시오. P/ S 어렵지 않다면 추가로 그 순간을 하이라이트...

 
DanilaMactep :

좋은 하루 되세요. 주문을 열 때 데이터를 수집하려고 합니다. 주문을 열 때 양초 1,2,3의 adx 표시기 값을 파일에 쓰고 싶습니다.

이를 위해 다음을 수행합니다. 데이터 디렉토리를 열고 테스터 폴더로 이동하고 이 폴더에서 파일 폴더로 이동한 다음 "ZNA4_ADX.csv"라는 이름의 파일을 생성했습니다. 확장자를 가진 포함된 라이브러리 파일에서 추가로 . mqh 는 기능을 조각하기 시작했습니다. 아래는 주석 처리된 함수 코드입니다.

아래 스크린샷과 같이 데이터가 대략적으로 기록되기를 원합니다.


즉, 텍스트의 붉은 색은 내가 수동으로 작성할 헤더입니다. 그리고 2행은 이미 함수를 사용하여 등록해야 하는 것입니다. 즉, 테스트 중 1개의 주문 번호입니다. 그리고 3개의 adx 값이 나왔습니다. 또한 테스트에서 두 번째 주문을 열 때 주문 번호가 2가 되고 adx 값이 되는 다음 줄이 필요합니다. 이 주문을 열기 전에 3개의 양초에 대해 쓰여질 것입니다. 테스트에서 얼마나 많은 주문이 해제될 것인지...

아래 코드 스니펫에 표시된 대로 어드바이저 코드에서 함수 자체를 호출합니다.




테스트는 오류 없이 진행되지만 파일에서 이 결과를 얻었습니다(SCREEN BELOW ).


결과는 첫 번째 주문과 세 개의 값이 있는 한 줄이었지만 테스트에서는 189개의 미결 주문이 있었습니다. 나는 무엇이며   어디   주문 개수 를 세는 변수를 늘리는 것을 잊었고 첫 주문 이후에 이어지는 데이터를 2.3-189줄로 작성하는 방법을 잊었습니까?   큰 요청은 저를 기본 코드나 다른 재미있는 곳으로 보내지 않는 것입니다. 저는 텍스트를 읽기가 어렵고 다른 사람의 코드를 읽는 것은 거의 불가능합니다. 따라서 필요한 형식으로 데이터를 얻을 수 있도록 무엇을 추가해야 하고 어디에 추가해야 하는지 이해할 수 있는 방식으로 알려주십시오. P/ S 어렵지 않다면 추가로 그 순간을 하이라이트...

FILE_WRITE 플래그 하나만으로 파일을 열면 파일의 모든 내용이 삭제됩니다. 기존 데이터를 파일에 저장하려면 읽기 및 쓰기를 위해 파일을 열어야 합니다.

그런 다음 포인터를 파일 끝으로 이동하는 것을 잊지 마십시오.

 
Alexey Viktorov :

FILE_WRITE 플래그 하나만으로 파일을 열면 파일의 모든 내용이 삭제됩니다. 기존 데이터를 파일에 저장하려면 읽기 및 쓰기를 위해 파일을 열어야 합니다.

그런 다음 포인터를 파일 끝으로 이동하는 것을 잊지 마십시오.

Alexey, 오류를 "파기"할 방향을 제안해 주셔서 대단히 감사합니다. 한 줄씩 기록을 만들 수 있었습니다. 전체를 분석에 사용할 수 있는 형식으로 빗어내야 합니다.)))
 

배열 값은 서로 이어지는 RAM 셀에 있습니다. 비어 있는 셀의 최대 길이에 따라 다를 수 있습니다.

 
이것이 함수 주소에서 작동하지 않는 이유는 무엇입니까?
 template < typename T>
typedef T (*Fun)( const int , const int , const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit ()
  {
   calculation  = test;
   function     = Dis_HL_Value;
   //-----------------------------------------------------------------
   return ( INIT_SUCCEEDED );
  }
 
안녕하세요, 이것이 2차원 배열 선언이라고 말씀해 주시겠습니까?
       ArrayInitialize (ZigZagBuffer, 0.0 );
미리 감사드립니다!
 
Дмитрий :
안녕하세요, 이것이 2차원 배열 선언인지 알려주실 수 있나요? 미리 감사드립니다!

아니요, 이것은 이미 선언된 것의 초기화입니다.