서버에서 틱 기록을 사용할 수 있습니까? - 페이지 4

 
제안된 솔란더 에 합리적인 알갱이가 있다고 생각하는데 개인적으로 연구용으로 필요해서 일주일에 진지한걸 드리기 힘든데 그런 인디게이터가 나온지 딱 일주일전에 공백이 있어서 그런게 있어서 내 동료 중 한 명이 썼습니다. 문제가 있을 뿐입니다. 그는 초기화할 때마다 파일을 틱으로 덮어씁니다. 그와 나는 둘 다 손을 떼지 않았습니다. 가끔 틱이 와서 볼륨이 1만큼 변하지 않기 때문에 고정 볼륨으로 막대를 형성합니다.
//+------------------------------------------------------------------+
//|                                                    TickSaver.mq4 |
//|                               Copyright © 2006, Cherednikov K.M. |
//|                                            mailto:chkm76@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Cherednikov K.M."
#property link      "mailto:chkm76@mail.ru"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black

#include <WinUser32.mqh>
//---- input parameters
extern int NumTicksPerBar=3;
extern int Minutes_for_HSTfilename=3;

//---- buffers
double ExtMapBuffer1[];

//---- глобальные переменные
int hFile=-1;
int iFilePos;
int CurrTickNumber=0;
datetime i_time, i_time_bar0;
double d_open, d_low, d_high, d_close, d_volume;
double d_low_bar0, d_high_bar0, d_volume_bar0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int    nVersion=400;
   string szCopyright;
   string szSymbol=Symbol();
   int    iDigits=Digits;
   int    iUnused[13];

   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   hFile=FileOpenHistory(szSymbol + Minutes_for_HSTfilename + ".hst", FILE_READ);
   if(FileSize(hFile)<0){
   // Дабы не затереть реальные файлы историй, в имя файла добавлен "0" перед периодом
   hFile=FileOpenHistory(szSymbol + Minutes_for_HSTfilename + ".hst", FILE_BIN|FILE_WRITE);
   if(hFile < 0) return(-1);
   //---- Записать заголовок hst-файла
   szCopyright="(C)opyright 2003, MetaQuotes Software Corp.";
   FileWriteInteger(hFile, nVersion, LONG_VALUE);
   FileWriteString(hFile, szCopyright, 64);
   FileWriteString(hFile, szSymbol, 12);
   FileWriteInteger(hFile, Minutes_for_HSTfilename, LONG_VALUE);  //  файл - М2
   FileWriteInteger(hFile, iDigits, LONG_VALUE);
   FileWriteInteger(hFile, 0, LONG_VALUE);
   FileWriteInteger(hFile, 0, LONG_VALUE);
   FileWriteArray(hFile, iUnused, 0, 13);
   FileFlush(hFile);
   iFilePos=FileTell(hFile);
    }
    
    else{ iFilePos=FileTell(hFile); }
   i_time = CurTime();
   i_time_bar0 = Time[0];
   d_open = Close[0];
   d_low = d_open;
   d_high = d_open;
   d_close = d_open;
   d_volume = 1;
   d_volume_bar0 = Volume[0];

   /*d_low_bar0 = Low[0];
   d_high_bar0 = High[0];*/
   
   //----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   if(hFile>=0)
    { 
      FileClose(hFile); 
      hFile=-1; 
    }
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   CurrTickNumber++;
   //********* Обновление данных в переменных текущего бара **************
   d_close = Close[0];
   if (d_low > d_close) d_low = d_close;
   if (d_high < d_close) d_high = d_close;

   // Объем
   if (i_time_bar0!=Time[0])  // если на реальном графике появился новый бар, а для 
                              //   нас еще не набралось тиков закончить тиковый бар...
    { //расчитать изменение объема с учетом пополнения предыдущего реального бара
      d_volume += Volume[1] + Volume[0] - d_volume_bar0;
      i_time_bar0 = Time[0];
    }
   else
    { //расчитать изменение объема только с учетом текущего реального бара
      d_volume += Volume[0] - d_volume_bar0;
    }
   d_volume_bar0 = Volume[0];

   // Обновление данных последнего бара
   FileSeek(hFile, iFilePos, SEEK_SET);
   FileWriteInteger(hFile, i_time, LONG_VALUE);
   FileWriteDouble(hFile, d_open, DOUBLE_VALUE);
   FileWriteDouble(hFile, d_low, DOUBLE_VALUE);
   FileWriteDouble(hFile, d_high, DOUBLE_VALUE);
   FileWriteDouble(hFile, d_close, DOUBLE_VALUE);
   FileWriteDouble(hFile, d_volume, DOUBLE_VALUE);

   if (CurrTickNumber==NumTicksPerBar)
   {
      iFilePos=FileTell(hFile);
      CurrTickNumber=0;
      i_time = CurTime();// / 60 / Minutes_for_HSTfilename;
      //i_time *= 60 * Minutes_for_HSTfilename;
      d_open = Close[0];
      d_low = d_open;
      d_high = d_open;
      d_close = d_open;
      d_volume = 1;
      FileWriteInteger(hFile, i_time, LONG_VALUE);
      FileWriteDouble(hFile, d_open, DOUBLE_VALUE);
      FileWriteDouble(hFile, d_low, DOUBLE_VALUE);
      FileWriteDouble(hFile, d_high, DOUBLE_VALUE);
      FileWriteDouble(hFile, d_close, DOUBLE_VALUE);
      FileWriteDouble(hFile, d_volume, DOUBLE_VALUE);
   }
   FileFlush(hFile);

   // Обновление окна автономно открытого файла
   int hwnd=WindowHandle(Symbol(), Minutes_for_HSTfilename);
   if (hwnd!=0) PostMessageA(hwnd, WM_COMMAND, 33324, 0);

   Comment("Отладочная Инфа: \n"+
           "Тиков в баре: " + CurrTickNumber +
           "\nOpen=" + d_open + "    Close=" + d_close +
           "\nHigh=" + d_high + "    Low=" + d_low +
           "\nVol=" + d_volume +
           "\nПозиция файла: " + iFilePos
   );

   return(0);
  }
//+------------------------------------------------------------------+
 
개인적으로 개발자들이 인위적으로 개발한 것 같습니다. 틱 이력의 관점에서 MT를 정제하지 않으려는(또는 불가능) 전에 스스로를 정당화하는 문제.
틱 파일 문자열 (Time,Close,Volume) = (int,double,double) = (4,8,8,) = 20바이트.


따옴표는 각각 10000과 100(일본어)을 곱하여 정수로 저장할 수 있습니다.
또한 마지막 인용문을 기준으로 주요 포인트와 오프셋을 저장할 수 있습니다.
이것들은 모두 기술적인 문제입니다.
주요 문제는 전략적입니다.
Kvotos는 원하지 않으며 그렇게 할 것이라고 생각하지 않습니다. 터미널이 경쟁자에 의해 강제 퇴출되는 경우에만 틱 터미널을 생성하기 위한 전제 조건이 있습니다.
문제가 하나 더 있습니다. 클라이언트는 터미널 비용을 지불하지 않습니다.
서버를 구매하는 DC가 지불하며 DC는 틱 터미널에 관심이 없습니다. craftsmen-pipsers가 나타나 DC 인용문의 특성을 연구합니다.
 
DC는 틱 터미널에 관심이 없습니다. craftsmen-pipsers가 나타나 DC 인용문의 특성을 연구합니다.

DC가 터미널이 어떠해야 하는지(시간 또는 틱)에 대해 전혀 생각하지 않을 것입니다. 그들은 완전히 다른 관심사를 가지고 있습니다. DC가 필요로 하는 모든 것은 아마도 개발자일 것입니다. 저는 그들이 이미 모든 것을 제공했다고 생각합니다(자동 거래의 허가/금지, 비시장 가격 거래 취소 등). 챔피언십 통계에 따르면 모든 DC는 좋은 "주방"을 구성할 수 있으며 일부 특수 틱 터미널의 출현은 근본적인 것을 변경하지 않습니다. 최소한 DC가 개발되면 커미셔닝에 저항할 가능성은 거의 없습니다. 글쎄요, 아직 틱 계열을 도입해야 한다는 구체적인 증거가 없기 때문에 질문은 지금과 동일할 것입니다.
"모든 틱 및 시간 프레임"을 수행하는 Omega 플랫폼의 틱 증명 결과를 살펴보는 것은 흥미로울 것입니다.

브로커에 대한 논의는 이미 포럼의 범위를 벗어났습니다. 이제 모두 청소할까요? :o)
 
제안된 solandr 에 합리적인 알갱이가 있다고 생각하지만 개인적으로 연구용으로 필요하고 일주일에 진지한 내용을 거의 제공하지 못하는게 아쉬워요...

"MQL4: 진드기 수집기"
EA는 지정된 기호에 대한 틱 기록을 저장합니다.
 
나는 틱 시리즈 문제에 대한 끝없고 무의미한 구두 논쟁에서 상세한 증명으로 이동할 것을 제안합니다. 이를 위해서는 다음을 수행해야 합니다. 원하는 틱 볼륨으로 틱 시리즈를 생성하고 데이터를 CSV 파일에 쓰는 간단한 스크립트를 작성할 수 있습니다. 또한 이 파일을 EXCEL에서 열면 표준 EXCEL 도구를 사용하여 틱 계열 차트를 작성할 수 있습니다. 예를 들어, 주어진 틱 프레임으로 일주일 동안 그러한 차트가 있는 경우 표준 MT4 차트와 비교하여 틱 차트가 어떠한 경우에도 얻을 수 없는 이러한 추가 진입/종료 지점을 제공했음을 보여줄 수 있습니다. 예를 들어 지지/저항의 추세선을 사용할 때 표준 시계열에서 벗어나거나 거기에 다른 것을 사용할 수 있습니다.

친애하는 솔란더 !
이 논란에 왜 이렇게 화를 내는 걸까? 미래에 대한 모든 것을 알고 있다고 고집스럽게 믿는 이유는 무엇입니까?

귀하가 제공하는 "증명 구성" 프로그램은 원칙적으로 올바르지 않습니다. 틱 거래의 성공이 유일하게 신뢰할 수 있는 주장이 되기를 원합니다. 그렇게 생각한다면 기존 t/fs가 전혀 필요하지 않습니다. 결국 특정 t/f 덕분에 급격한 성공을 달성했다고 보고한 사람은 아직 없습니다.

알려드립니다. period_converter를 기준으로 틱 이력을 기록할 뿐만 아니라 차트에 실시간으로 표시 하는 Expert Advisor를 작성한 적이 있습니다. 따라서 다른 TF에서 수행할 수 있는 모든 작업을 틱 차트에서도 수행할 수 있습니다. 이것은 MT4+MKL4 도구가 얼마나 강력한지 다시 한 번 보여줍니다. 그리고 이 서비스를 내장하는 것이 그렇게 어렵지 않다는 사실에 대해서도.

또한 진드기 데이터를 조사하는 데 많은 시간을 할애했습니다. 이것으로 인해 시장에 성공했는지 아닌지는 전혀 중요하지 않습니다. 사람들은 자신의 능력과 노력 덕분에 무언가를 성취하거나 달성하지 못합니다. 그러나 결과를 얻으려면 무엇보다도 먼저 할 수 있어야 합니다. 이 조건은 충분하지 않지만 필요합니다! :-)

시간 프레임으로 작업할 수 있는 기회가 있지만 틱 프레임으로 작업할 수 없는 이유는 무엇입니까? 이 상황은 개발자의 제한된 능력(일시적, 인간적 등)으로 충분히 설명할 수 있습니다. 그러나 서비스의 완성도와 전략의 관점에서 완전히 용납 할 수 없습니다. 따라서 오늘 시장이 어느 정도 만족한다면 내일은 더 이상 그렇지 않을 것입니다.
 
2 조니
제안된 솔랜더에 합리적인 알갱이가 있다고 생각하지만 개인적으로 연구용으로 필요하고 일주일에 진지한 것을 제공하기는 거의 불가능하지만 그런 지표의 공백이 있습니다


정확히 !. 그게 바로 내가 의미하는 바입니다.

그건 그렇고, 이것은 전문가로서 구현해야합니다. 표시기가 틱을 건너뜁니다!
파일 덮어쓰기를 방지하려면 다음과 같이 열어야 합니다. FILE_BIN|FILE_READ|FILE_WRITE
그리고 쓰기 전에 레코드 포인터를 파일 끝으로 설정해야 합니다.
 
Yurixx님 , 저는 제 관점을 표현했을 뿐입니다! 그것은 무료 포럼이며 모든 사람이 자신의 의견을 표현할 권리가 있습니까? 아니면 항상 다수의 의견에 귀를 기울여야 할까요? 그러나 대다수가 "병합"된 후에는 챔피언십을 보십시오!

사람들은 개발자들에게 틱 히스토리 를 만들어달라고 요청했고, 개발자들은 단호한 거절로 대답했습니다. 다음은 무엇입니까? 개발자들이 '근로자들의 소원'을 들어주지 않았다는 불만만 산더미처럼 여기에 쓰겠습니까? 제 입장에서는 단순히 개발자들에게 합리적인 버전의 압력을 제공했을 뿐입니다. 아무 것도 아닙니다! 모든 사람들이 문제에 대한 실질적인 진전 없이 끝없는 구두 불만을 원하신다면, 저는 개인적으로 그것에 대해 아무런 반대 의견이 없습니다.
 
"MQL4: 진드기 수집기"
EA는 지정된 기호에 대한 틱 기록을 저장합니다.


전문가님은 물론 감사하지만 급하게 봤는데 csv로 저장하는 것 같던데 내꺼는 히스토리에 있는줄 알았는데 오프라인에서 이 그래프를 바로 열어서 분석도 가능합니다.
 
전문가님은 물론 감사하지만 급하게 봤는데 csv로 저장하는 것 같던데 내꺼는 히스토리에 있는줄 알았는데 오프라인에서 이 그래프를 바로 열어서 분석도 가능합니다.

"MQL4: simple_csv2fxt"
간단한 csv to fxt 변환기.


내 Expert Advisor와 이 스크립트를 결합하고 약간 패치해야 합니다. 필요한 것입니다. ;)
 
틱 데이터가 필요한지 묻는 것은 쓸모없는 것 같습니다. 대답은 분명하기 때문입니다. 더 많은 기회가 제공될수록 더 완전하고 고품질의 서비스가 제공되며 항상 한 가지 또는 필요한 사람이 있을 것입니다. 또 다른 완전히 ... 질문에 대한 대답은 이 기능이 곧 구현될 것인지 여부입니다. - 그것은 또한 "아니오"일 것입니다... 제 생각에는 한 가지 중요한 이유가 있습니다... 즉, 이 단계에서 새로운 계약을 체결하는 형태로 Metaquote에 수입을 가져다주는 것만이 구현될 것이며, 이것은 논리적이고 정확합니다.. 중개 회사(중개사, DC 등)가 수입을 가져오기 때문에 실현될 것은 그들의 삶을 더 쉽게 만들고 그들의 삶을 복잡하게 만드는 것은 전혀 ...
틱 데이터는 다음과 같은 이유로 삶을 복잡하게 만듭니다.
1. 틱 데이터의 가용성으로 인해 틱 시간 프레임을 거래하는 전문가가 필연적으로 생겨날 것이며, 따라서 이러한 전문가의 중복으로 인해 엄청난 어려움이 발생할 것입니다.
2. 또한 신뢰할 수 있는 진드기 데이터가 있으면 테스터에서 진드기 전문가를 테스트할 수 있게 됩니다.
3. 틱 데이터에 접근한 후, 대중은 REAL 볼륨에 대한 접근을 요구할 것입니다 :))))))
4. 그리고 벌써 4위, 개발자들의 의욕이나 고용 (DC의 요구가 있었다면 2주 안에 했을 텐데 :))
5. 그리고 마지막으로 미친 트래픽과 디스크 공간에 대한 "트럼프 카드" 논쟁...