78 lines
5.3 KiB
Plaintext
78 lines
5.3 KiB
Plaintext
//+------------------------------------------------------------------+
|
|
//| LeadLagRelationshipTester.mq5 |
|
|
//| Хасанов Ильнур Фаритович (aharata) |
|
|
//| https://www.mql5.com/ru/users/aharata |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Хасанов Ильнур Фаритович (aharata)"
|
|
#property link "https://www.mql5.com/ru/users/aharata"
|
|
#property version "1.00"
|
|
#property description "Скрипт для проверки индикатора LeadLagRelationship"
|
|
|
|
sinput uint inpTimerPeriod = 100; // период основного таймера в мс
|
|
sinput string inpFilename = "buffer.csv"; // название файла для отправки котировок (\Terminal\Common\Files)
|
|
sinput string inpGlobalVariableAsk = "ask"; // название глобальной переменной для аск
|
|
sinput string inpGlobalVariableBid = "bid"; // название глобальной переменной для бид
|
|
sinput int inpUseMode = 0; // режим канала; 0 - файл, 2 - глобальные перменные терминала
|
|
sinput int inpSetLag = 12000; // заданное отставание в мс
|
|
|
|
uint msCounter, memMsCounter = 0;
|
|
MqlTick tick, ticks[];
|
|
int sizeTicks = 0;
|
|
int fileHandle;
|
|
|
|
void OnStart()
|
|
{
|
|
if(!EventSetMillisecondTimer(inpTimerPeriod)) // количество миллисекунд
|
|
{
|
|
Print("Ошибка установки таймера, код ошибки:" + IntegerToString(GetLastError()));
|
|
ResetLastError();
|
|
}
|
|
|
|
sizeTicks = (int)MathRound(inpSetLag / inpTimerPeriod);
|
|
ArrayResize(ticks, sizeTicks, sizeTicks);
|
|
|
|
while(!IsStopped())
|
|
{
|
|
msCounter = GetTickCount();
|
|
if(msCounter - memMsCounter >= inpTimerPeriod)
|
|
{
|
|
SymbolInfoTick(Symbol(), tick);
|
|
|
|
ticks[0] = tick;
|
|
for(int i = sizeTicks - 1; i > 0; i--)
|
|
{
|
|
ticks[i] = ticks[i - 1];
|
|
}
|
|
tick = ticks[sizeTicks - 1];
|
|
|
|
if(inpUseMode == 0)
|
|
{
|
|
fileHandle = FileOpen(inpFilename, FILE_WRITE|FILE_CSV|FILE_COMMON|FILE_SHARE_READ|FILE_SHARE_WRITE);
|
|
if(fileHandle != INVALID_HANDLE)
|
|
{
|
|
FileWrite(fileHandle, tick.ask, tick.bid);
|
|
FileFlush(fileHandle);
|
|
FileClose(fileHandle);
|
|
}
|
|
Sleep(1);
|
|
}
|
|
|
|
if(inpUseMode == 2)
|
|
{
|
|
GlobalVariableSet(inpGlobalVariableAsk, tick.ask);
|
|
GlobalVariableSet(inpGlobalVariableBid, tick.bid);
|
|
}
|
|
|
|
memMsCounter = msCounter;
|
|
}
|
|
}
|
|
|
|
EventKillTimer();
|
|
if(inpUseMode == 0)
|
|
{
|
|
if(fileHandle != INVALID_HANDLE)
|
|
{
|
|
FileClose(fileHandle);
|
|
}
|
|
}
|
|
} |