MQL5를 사용하는 주식 오실레이터 - 페이지 6

 
joo :

가능한 한 드물게 파일에 쓰는 것이 좋으므로 전체 배열로 쓰는 것이 좋습니다. 분당 한 번만 값을 측정하십시오. 그렇지 않으면 차트에 표시하는 데 문제가 발생합니다(또한 리소스가 많이 필요함). 즉, 실행이 끝날 때입니다. 그러나 이 옵션도 가능합니다.

알고리즘은 다음과 같습니다.

1) 테스터에서 Expert Advisor를 시작했습니다.

2) 이자의 가치를 측정하였다.

3) 이 값을 파일에 씁니다 .

4) 새로운 값이 기록되었음을 의미하는 별도의 파일에 true로 기록

5) 종료 조건이 플래그가 있는 파일의 false 플래그인 무한 루프를 시작했습니다.

6) 별도의 차트에서 스크립트는 플래그가 있는 파일을 읽고 새 값이 나타나면 차트에 위험을 표시하고 파일에 false를 씁니다.

테스터의 시각적 테스트 모드는 다음과 같습니다.

조금만 기다리면 경쟁이 끝나고 아마도 더 우아하고 아름다운 솔루션이 제공 될 것입니다.

joo, 잠깐, 모두가 가치에 관심이 있다면 관심 가치는 무엇입니까? :)

그렇게 생각해요:

1. Expert Advisor의 OnTick에서 틱별로 계정 상태의 프로그램 배열을 형성합니다.

2. 테스트가 끝나면 이 전체 프로그램 배열을 파일에 씁니다(각 매개변수는 별도의 파일에 저장하는 것이 좋습니다).

3. 그런 다음 표시기의 OnInit에서 지정된 1차원 배열을 추출합니다.

4. OnCalculated에서 틱 단위로 표시기 배열 틱에 복사합니다.

유일한 문제는 배열을 작성하는 것조차 어떤 이유로 여전히 문제라는 것입니다(위 참조).

 
DV2010 :

잠깐, 내가 모든 값에 관심이 있다면 관심 가치는 무엇입니까? :)

예, 적어도 모든 것입니다.

DV2010 :

그렇게 생각해요 -

1. Expert Advisor의 OnTick에서 틱별로 계정 상태의 프로그램 배열을 형성합니다.

2. 테스트가 끝나면 이 전체 프로그램 배열을 파일에 씁니다(각 매개변수는 별도의 파일에 저장하는 것이 좋습니다).

그렇게 될 수 있습니다.

DV2010 :

3. 그런 다음 표시기의 OnInit에서 지정된 1차원 배열을 추출합니다.

그렇다면 왜 onit에서? 한 번만 필요한가요? 글쎄, 당신은 거의 실시간으로 테스트를 따라야한다고 말했습니다.

DV2010 :

4. OnCalculated에서 틱 단위로 표시기 배열 틱에 복사합니다.

유일한 문제는 배열을 작성하는 것조차 어떤 이유로 여전히 문제라는 것입니다(위 참조)

문제는 차트에 눈금 데이터를 표시할 수 없다는 것입니다. 물론 진드기를 모으지 않는 한 ....... 요컨대, 이미 경고했습니다. 데이터를 1분에 한 번 이상 저장하지 마십시오. 그러나 예를 들어 거래 상품을 참조하지 않고 분석하려는 경우 파일을 Excel에 업로드할 수도 있습니다.

 

, 아니! :)

지금 내가 필요한 것은 테스터가 일을 하고 내가 역사에 필요한 점수의 곡선 오실레이터를 얻는 것뿐입니다!

귀하의 의견으로는 왜 내 Expert Advisor가 데이터 기록을 거부하는지 말해주십시오. 코드는 위에 제공되고 링크는 아래에 제공됩니다.

 
DV2010 :

로쉬

, 이유가 정확히 무엇인지 이해할 수 없지만 내 표시기와 달리 귀하의 표시기로 시작할 때 메시지가 표시됩니다.

귀하의 코드를 기반으로, 저는 이제 모든 Equity 값을 틱 단위로 파일에 기록해야 하는 유사한 가장 단순한 Expert Advisor를 만들었습니다(코드에서는 작성된 0바이트 수를 포함하여 임의의 출력만 변경했습니다. 변수는 전역으로 이동하고 파일 열기 및 쓰기를 OnInit 및 OnTick으로 이동), 그러나 쓰기 오류가 없고 파일이 생성되지만 항목과 파일은 비어 있습니다.

아무렇게나 하지 않았습니까?

 FileClose ( filename );
 
Rosh :

아무렇게나 하지 않았습니까?

망했는데 수정한 것( FileClose (handle); )과의 차이는 별로 느껴지지 않네요 :)

아직 쓰지 않는다! :) 동시에 그는 당파처럼 침묵합니다(0바이트가 기록된다는 "설명" 제외).

 
DV2010 :

망했는데 수정한 것( FileClose (handle); )과의 차이는 별로 느껴지지 않네요 :)

아직 쓰지 않는다! :) 동시에 그는 당파처럼 침묵합니다(0바이트가 기록된다는 "설명" 제외).

나는 당신이 거기에서 무엇을하고 있는지 모르겠어요. 다음은 작동하는 옵션입니다

 //+------------------------------------------------------------------+
//|                                          Demo_File_Common_EA.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"
//--- input parameters
input string    filename= "equity.txt" ;
int handle;
string common_folder;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   common_folder= TerminalInfoString ( TERMINAL_COMMONDATA_PATH );
//---
   handle= FileOpen (filename, FILE_WRITE | FILE_READ | FILE_COMMON );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   FileClose (handle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (handle!= INVALID_HANDLE )
     {
       FileSeek (handle, 0 , SEEK_END );
       uint written= FileWrite (handle, TimeToString ( TimeCurrent ()), AccountInfoDouble ( ACCOUNT_EQUITY ));
       if (written> 0 )
        {
         //PrintFormat("Записано %d байт в общую папку всех терминалов - %s",written,common_folder);
        }
     }
   else
     {
       Print ( "Не удалось открыть на запись файл " ,filename, ".  Ошибка " , GetLastError ());
     }

  }
//+------------------------------------------------------------------+
 
Rosh :

나는 당신이 거기에서 무엇을하고 있는지 모르겠어요. 다음은 작동하는 옵션입니다

감독자! 따라서 파일에 쓰기 위해서는 FileWrite 외에 FileSeek를 통한 포인터 설정도 필요하다.
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 

... 어제 이미 제기된 문제에 대해.

OnTick 및 OnCalculated에 삽입:

 Print ( "ObjectsTotal =" , ObjectsTotal ( ChartID ()));

그러나 테스트가 완료된 후 열기 및 닫기 위치와 관련된 개체가 있음에도 불구하고(터미널의 화살표 및 선 매개변수는 경로를 따라 볼 수 있음: Charts>Objects>List of objects), 반환된 값은 어떤 이유로 0입니다. .

왜 이런 일이 일어나고 있는지 누가 제안할 수 있습니까?

테스터는 자신이 자동으로 생성한 객체를 실제로 보지 못합니까?

 
DV2010 :

왜 이런 일이 일어나고 있는지 누가 제안할 수 있습니까?

테스터는 자신이 자동으로 생성한 객체를 실제로 보지 못합니까?

테스트 중에 생성된 그래픽 개체는 테스트가 완료된 후 열리는 차트에 있는 개체와 아무 관련이 없습니다. 즉, 테스트된 Expert Advisor 에서 Expert Advisor 테스트 완료 후 나타날 진입/종료 화살표에 도달할 수 있는 방법이 없습니다.
 
Rosh :
테스트 중에 생성된 그래픽 개체는 테스트가 완료된 후 열리는 차트에 있는 개체와 아무 관련이 없습니다. 즉, 테스트된 Expert Advisor 에서 Expert Advisor가 테스트된 후 나타날 진입/종료 화살표에 도달할 수 있는 방법이 없습니다.

이것이 바로 내가 두려워했던 것입니다!

글쎄, 그렇다면 나는 이러한 일반 개체 위에 내 자신을 그려야 할 것입니다. 비록 내가 필요한 것은 해당 위치의 결과(이익 또는 손실)의 부호에 따라 선의 색상을 변경하는 것뿐입니다. 수익성 및 손실 거래의 가장 빠른 분석의 관점에서 볼 때 결과의 색상은 방향의 색상보다 훨씬 중요합니다. 더 중요한 것은 - 차트의 위 또는 아래 방향을 이런 방식으로 볼 수 있기 때문에(선 자체의 기울기와 화살표의 색상으로) 거래의 손실 또는 수익성을 이해하기 위해 표준 접근 방식을 사용하면 매번 포지션 유형을 시장 움직임의 방향과 비교할 필요가 있습니다.

그리고 테스터에 몇 개의 위치만 있으면 좋습니다. 수백 또는 수천은 어떻습니까? 표준 접근 방식을 사용하면 이 경우 손실 및 수익성 있는 포지션의 분포를 보는 것이 비현실적일 것입니다. 반면 손실 거래가 빨간색 선으로 표시되고 수익성 있는 거래가 파란색으로 표시되면 분포가 가장 작은 것에서도 볼 수 있습니다. 규모.

이것이 중요한 이유는 무엇입니까?.. 거래 시스템은 시간대에 따라 다르게 작동할 수 있고 가장 약한 측면을 식별하고 이러한 순간을 극복하기 위해 이러한 일련의 가격 역학에 대한 아이디어가 필요합니다. 거래를 잃는 것과 관련이 있습니다.

상인의 많은 요청은 사적인 성격을 가지며 장단점이 있습니다. "맛과 색" 범주에서 MetaTrader 인터페이스 수준에서 거래 라인 유형을 사용자 정의하는 기능은 많은 거래자들에게 기록 분석을 훨씬 더 편안하게 만들어 줄 것입니다. 보기에는 이게 하기 쉽고, 단점도 없는 것 같아요. 즉, 포지션 유형에 따른 기존 등록 옵션, 거래 결과에 따른 등록 옵션의 대안이 필요합니다. 그렇다면 이 제안을 포럼 회원들 사이의 투표에 추가하거나 최소한 넣어도 될까요?

두 가지 구현이 있습니다.

1. OnTcik 전문가와 함께 그리기 개체에 대한 링크를 만들어 이러한 개체를 프로그래밍 방식으로 변경할 수 있습니다.

2. 창 인터페이스 수준에서 설정을 추가합니다.

계정 상태 오실레이터는 이 문제를 부분적으로만 해결할 수 있지만 거래의 효율성을 가장 편리하게 표현하는 것은 가격 역학에 가장 가까운 시각적 표현이기 때문에 부분적으로만 해결할 수 있습니다.

일반적으로 말하자면, 제 생각에는 현대 5 버전의 가장 약한 점은 테스터와 거래 효율성의 시각화입니다. 지금까지 차트 및 결과의 형태로 이전 버전의 유산만 여기에 있지만 두 가지 모두 Expert Advisor 전체의 효율성만 판단할 수 있게 해주며 그 인상조차 오해의 소지가 있을 수 있습니다. Expert Advisor의 전체 주식 차트가 꾸준히 상승하고 있는 반면, 자세히 조사한 결과 상대적으로 큰 하락과 기타 "놀라움"이 드러난 경우가 여러 번 있습니다.