'CopyTicks' 테스트 - 페이지 3

 

나는 테스트하지 않고 개발자에게 상기시킵니다. 연습은 이것이 불필요한 것이 아님을 보여줍니다))

거래 방향에 관해서는 - Forts의 경우 항상 거래소에서 제공합니다.

현재 터미널에서 사용하는 알고리즘은 이에 적합하지 않습니다. 교환기에서 정보를 가져와야 합니다.

 
Dmitriy Skub :

나는 테스트하지 않고 개발자들에게 상기시킨다. 연습은 이것이 불필요한 것이 아님을 보여줍니다))

거래 방향에 관해서는 - Forts의 경우 항상 거래소에서 제공합니다.

현재 터미널에서 사용하는 알고리즘은 이에 적합하지 않습니다. 교환기에서 정보를 가져와야 합니다.

"대기"로 끝나는 카피틱(및 mqltickinfo)에 대한 몇 가지 주제가 있습니다.

예를 들면 다음과 같습니다.

https://www.mql5.com/ru/forum/61607


정말 "기다려" :-)

CopyTicks на медленном рынке
CopyTicks на медленном рынке
  • www.mql5.com
На нём видно, что после получения первых 10 тиков после запуска терминала, CopyTicks перестаёт работать:. - - Категория: автоматические торговые системы
 
이제 빌드 1210에서 CopyTicks()는 어떻게 됩니까?
 
Михаил :
이제 빌드 1210에서 CopyTicks()는 어떻게 됩니까?
다 괜찮아: 티크 이야기
 
Михаил :
이제 빌드 1210에서 CopyTicks()는 어떻게 됩니까?

거의 작동합니다. 쌍둥이가 없습니다. 볼륨은 사라지지 않습니다.

그러나 플래그의 트랜잭션 방향이 누락되었습니다. 입찰/매도에 의한 계산은 정당한 충실도를 제공하지 않습니다.

구조는 실제이며 도움말에 설명된 것과 다릅니다. 그래서 나는 이것이 중간 빌드라는 것을 이해합니다. 따라서 항상 그렇듯이 다음을 기다리고 있습니다.))

 
Dmitriy Skub :

거의 작동합니다. 쌍둥이가 없습니다. 볼륨은 사라지지 않습니다.

그러나 플래그의 트랜잭션 방향이 누락되었습니다. 입찰/매도에 의한 계산은 정당한 충실도를 제공하지 않습니다.

구조는 실제이며 도움말에 설명된 것과 다릅니다. 그래서 나는 이것이 중간 빌드라는 것을 이해합니다. 따라서 항상 그렇듯이 다음을 기다리고 있습니다.))

감사해요
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MqlTick

짐바브베15 , 2016.02.03 06:15

브로커 "개방" 도구 ED-3.16 왼쪽 테이블 - 틱 데이터는 OnCalculate 프로시저의 표시기에 의해 SymbolInfoTick 요청을 통해, 오른쪽 테이블은 CopyTicks를 통해 작성됩니다. 구조는 시간, 입찰가, 질문, 마지막, 볼륨, time_msec, 플래그와 같이 거기에 있습니다.

동일한 틱이 볼륨과 플래그 값이 다른 이유는 무엇입니까?

플래그가 0인 브로커로부터 SymbolInfoTick을 통해 시장에서 원시 데이터를 수신하면 터미널이 이미 들어오는 틱을 처리하고 있으며 이전 틱과의 비교 결과에 따라 플래그를 할당하는 것으로 나타났습니다. 그렇다면 볼륨과 함께 하는 방법은 무엇입니까? 그 차이는 상당합니다.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MqlTick

짐바브베15 , 2016.02.03 06:39

브로커 FiboFroup은 SymbolInfoTick을 통한 왼쪽 틱 테이블, CopyTicks를 통한 오른쪽 테이블. 구조는 시간, 입찰가, 질문, 마지막, 볼륨, time_msec, 플래그와 같이 거기에 있습니다.

플래그가 다르기 때문에 입찰/매도 값은 다른 방식으로 기록된 동일한 틱에서 춤을 추고 있습니다.


 
zimbabve15 :


코드 없이 "시트"를 게시하는 것이 전염병입니까?
 

카피틱

////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // //////

MqlTick tick_array[];

int OnInit()
{
int copy=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,countHistoryTicks);
if(Save_File!=NOT_SAVE)
{
SaveTicksToFile(tick_array);
}
반환(INIT_SUCCESSED);

}


무효 SaveTicksToFile(MqlTick &massiveTicks[])

{

문자열 파일 이름, file_buffer;

StringConcatenate(파일 이름, 기호(),".txt");

int file_handle=FileOpen(파일명,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);

파일찾기(file_handle,0,SEEK_END);

int sizeMassiveTicks=ArraySize(massiveTicks);

정수 i=0;

동안(i<sizeMassiveTicks)

{

StringConcatenate(file_buffer,TimeToString(massiveTicks[i].time,TIME_DATE|TIME_SECONDS)," ",DoubleToString(massiveTicks[i].bid,_Digits)," ",DoubleToString(massiveTicks[i].ask,_Digits)," " ,DoubleToString(massiveTicks[i].last,_Digits)," ",IntegerToString(massiveTicks[i].volume,_Digits)," ",IntegerToString(massiveTicks[i].time_msc)," ",IntegerToString(massiveTicks[i] .flags,_Digits));

파일쓰기(file_handle,file_buffer);

나는 ++;

}

파일 닫기(file_handle);

}

SymbolInfoTick

////////////////////////////////////////////////////// / /////////////////////////

int OnCalculate(const int rate_total,

const int prev_calculated,

const 날짜/시간 및 시간[],

const 이중 및 열기[],

const 더블 & 하이[],

const 더블 & 로우[],

const 이중 및 닫기[],

const long &tick_volume[],

const 긴 볼륨[],

const int &spread[])

{

MqlTick last_tick;

SymbolInfoTick(Symbol(),last_tick);


TickStruct 틱={0,0,0,0,0,0,0};

tick.time=TimeCurrent();

tick.bid=last_tick.bid;

tick.ask=last_tick.ask;

tick.flag=last_tick.flags;

tick.last=last_tick.last;

tick.time_msc=last_tick.time_msc;

tick.volume=last_tick.volume;

정수 합계=ArraySize(g_ticks);

if(ArrayResize(g_ticks,total+1,1000)<0)

{

Alert(": 표시기의 메모리가 부족하여 다음 틱에 대한 데이터를 저장할 수 없습니다.");

}

또 다른

{

g_ticks[총]=틱;

UpTick[rates_total-1]=총계;

}

if(총>999)

{

SaveTempTicks();

ArrayFree(g_ticks);

}

반환(요금 합계);

}

무효 SaveTempTicks()

{

// 틱 히스토리 파일 생성

int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);

if(hTicksFile<1)

반품;

FileSeek(hTicksFile,0,SEEK_END);

// 파일 쓰기

정수 합계=ArraySize(g_ticks), i=0;

동안(i<전체)

{

if(FileWriteStruct(hTicksFile,g_ticks[i])==0)

{

Print("임시 파일에 데이터를 저장하는 중 오류가 발생했습니다...");

반품;

}

나는 ++;

}

파일 닫기(hTicksFile);

}

 
메시지를 수정하십시오( 포럼에 코드를 올바르게 삽입하십시오 ). 메시지에 있는 코드 외에 파일 자체(*.mq5)를 첨부하면 좋습니다.
사유: