Successivamente, dobbiamo fare una corretta fissazione che la barra è elaborata, ma qui dobbiamo calcolare l'intero approccio alla TOR.
Finora, da quello che vedo dal tuo post, abbiamo bisogno di fare questo:
L'essenza è che se lo spread è più del normale, allora usciamo di nuovo inOnTick, e su un nuovo tick controlliamo lo spread, se è normale - inviamo un ordine e ricordiamo che c'è stato un trade su questa barra.
C'è anche un secondo modo:
In generale, è necessario definire la logica, quando deve registrare, e non controllare di nuovo fino a quando la "Nuova barra" è formata.
Signori, potete darmi un suggerimento? Ho cercato di scrivere i dati dell'indicatore in un file per la seconda settimana per poterli leggere in seguito e costruire un indicatore basato sui dati. L'indicatore è di formazione, calcolo il volume su ogni tick di una certa barra. Se il tick è positivo il suo volume viene aggiunto con "+", se è negativo - con "-". Aggiungo i volumi accumulati ottenuti e ottengo un delta e considero questo delta cumulativo. Questo produce una curva. Tuttavia, questa curva è costruita solo in tempo reale. Non può essere tracciato nella storia. A questo scopo, ho deciso di scrivere i dati in un file. Mi sono bloccato in questa fase. Sono riuscito con dolore a far sì che il codice non generi errori di compilazione. Tuttavia, il prodotto risultante non funziona. L'indicatore funzionava prima. Dopo aver allegato il codice per scrivere il file, l'indicatore non funziona più. Il programma crea un file con un record incomprensibile e muore a questo punto. Sono stato seduto qui tutto il giorno e non riesco a capirlo. Qualcuno può aiutarmi?
//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22inputstring InpFileName="111.csv"; // Имя файла inputstring InpDirectoryName="Data"; // Имя каталога datetime Время=0; // Время прошлого бараdouble Bid1;
double Buf_1[];
// double ExtBuffer;long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогом//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit()
{
IndicatorDigits(0);
SetIndexBuffer(0,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1=Bid;
V5=0;
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime Вр=Time[0]; // Время текущего бараif(Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
datetime date_Buf_1[]; // массив дат индикатора datetime time_Buf_1[]; // массив времени // --- считаю объем для положительных и отрицательных тиков if(Bid>=Bid1)
{
if(Bid>Bid1) // если тик положительный..
{
V1=iVolume(NULL,0,0); // если повышающий цену тик, то находим его объем
V2= V1 + V2;
}
else
{
V1=0; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2= V1 + V2;
}
}
else
{
V3 = iVolume(NULL, 0, 0); // если понижающий цену тик
V4 = V3 + V4; // то находим его объем
}
V5=V2-V4; // определяем разницу (дельту) между объемами положительных и отрицательных тиков
Bid1=Bid;
Buf_1[0]=V5; // в буфер сгружаем дельту// ExtBuffer = Buf_1 [0];// double macurrent=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,0); // запись в файл данных буфера//--- установим для массивов признак таймсерии ArraySetAsSeries(Buf_1,true);
ArraySetAsSeries(date_Buf_1,true);
//--- скопируем таймсерию int copied=CopyTime(NULL,0,0,0,date_Buf_1);
//--- подготовим массив Buf_1 ArrayResize(Buf_1,copied);
//--- скопируем значения линии индикатора for(int i=0;i<copied;i++)
{
Buf_1[i]=V5;
}
//--- откроем файл для записи значений индикатора ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("Файл %s открыт для записи",InpFileName);
PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- сначала запишем значения индикатора FileWrite(file_handle,Buf_1[0]);
//--- запишем время и значения в файл for(int i=0;i<Buf_1[0];i++)
FileWrite(file_handle,time_Buf_1[i],Buf_1[i]);
//--- закрываем файл FileClose(file_handle);
PrintFormat("Данные записаны, файл %s закрыт",InpFileName);
}
elsePrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
return(rates_total);
}
//+------------------------------------------------------------------+
Signori, potete darmi un suggerimento? Ho cercato di scrivere i dati dell'indicatore in un file per la seconda settimana per poterli leggere in seguito e costruire un indicatore basato sui dati. L'indicatore è di formazione, calcolo il volume su ogni tick di una certa barra. Se il tick è positivo il suo volume viene aggiunto con "+", se è negativo - con "-". Aggiungo i volumi accumulati ottenuti e ottengo un delta e considero questo delta cumulativo. Questo produce una curva. Tuttavia, questa curva è costruita solo in tempo reale. Non può essere tracciato nella storia. A questo scopo, ho deciso di scrivere i dati in un file. Mi sono bloccato in questa fase. Ho gestito con amarezza il fatto che il codice non genera errori del compilatore. Tuttavia, il prodotto risultante non funziona. L'indicatore ha funzionato prima. Dopo aver allegato il codice per scrivere il file, l'indicatore non funziona più. Il programma crea un file con un record incomprensibile e muore a questo punto. Sono stato seduto qui tutto il giorno e non riesco a capirlo. Qualcuno può aiutarmi?
Sarebbe una buona idea spostare il puntatore alla fine del file prima di registrare.
Если выставить позицию за "правую границу" файла (больше, чем размер файла), то последующая запись в файл будет будет произведена не с конца файла, а с выставленной позиции. При этом между предыдущим концом файла и выставленной позицией будут записаны неопределенные значения...
A cosa serve questo? Ho letto il link, ma non lo capisco.
Per quale motivo? Quando si apre un file, il puntatore viene posizionato all'inizio del file e le informazioni vengono scritte all'inizio del file. Per scrivere nel posto giusto, devi spostare il puntatore nel posto giusto.
C'è un servizio di formazione online dove si può imparare MQL4 gratuitamente/pagato tramite esempi con un tutor? Ho quasi letto il tutorial MQL4, ma non so programmare affatto. Non ho familiarità con la programmazione prima. Sto cercando di imparare qualcosa in questo thread, ma non ho fatto alcun progresso. Potete darmi qualche consiglio?
C'è un servizio di formazione online dove si può imparare MQL4 gratuitamente/pagato tramite esempi con un tutor? Ho quasi letto un tutorial di MQL4, ma non so proprio programmare. Non ho familiarità con la programmazione prima. Sto cercando di imparare qualcosa in questo thread, ma non ho fatto alcun progresso. Puoi darmi qualche suggerimento?
1. Lavorare con i file in mql4 è lo stesso che in mql5.
2. Con tutto il rispetto per Sergei Kovalev, anche lui ha risposto alle mie domande a suo tempo, ma secondo me, le lezioni di Kirill sono più facili da capire. In Yandex si digita e subito 2 link alla sua lezione
Ciao, il tutorial del sito mi è bastato, dopo qualche anno di botte sui deflettori ho imparato a scrivere i miei indicatori. Ma le domande rimangono. Ora non capisco perché gli indicatori si confondono. Su M1 dopo 12 ore alcuni di loro iniziano a disegnare in modo errato ma segnalano correttamente. Alcuni di loro disegnano e segnalano in modo scorretto. Sulla M5 continuano a disegnare cinque volte di più. Puoi darmi un suggerimento?
1. La gestione dei file in mql4 è la stessa di mql5.
2. Con tutto il rispetto per Sergei Kovalev, anche lui ha risposto alle mie domande a suo tempo, ma secondo me, la lezione di Kirill è più facile da capire. In Yandex, digita su e subito 2 link alla sua lezione
È possibile imparare con l'aiuto delle lezioni di "Kirill" se non avete mai programmato prima? Quanto tempo ci vuole, dal suo punto di vista?
Che all'inizio sia così.
Successivamente, dobbiamo fare una corretta fissazione che la barra è elaborata, ma qui dobbiamo calcolare l'intero approccio alla TOR.
Finora, da quello che vedo dal tuo post, abbiamo bisogno di fare questo:
L'essenza è che se lo spread è più del normale, allora usciamo di nuovo inOnTick, e su un nuovo tick controlliamo lo spread, se è normale - inviamo un ordine e ricordiamo che c'è stato un trade su questa barra.
C'è anche un secondo modo:
In generale, è necessario definire la logica, quando deve registrare, e non controllare di nuovo fino a quando la "Nuova barra" è formata.
Ti capisco, grazie!
Signori, potete darmi un suggerimento? Ho cercato di scrivere i dati dell'indicatore in un file per la seconda settimana per poterli leggere in seguito e costruire un indicatore basato sui dati. L'indicatore è di formazione, calcolo il volume su ogni tick di una certa barra. Se il tick è positivo il suo volume viene aggiunto con "+", se è negativo - con "-". Aggiungo i volumi accumulati ottenuti e ottengo un delta e considero questo delta cumulativo. Questo produce una curva. Tuttavia, questa curva è costruita solo in tempo reale. Non può essere tracciato nella storia. A questo scopo, ho deciso di scrivere i dati in un file. Mi sono bloccato in questa fase. Sono riuscito con dolore a far sì che il codice non generi errori di compilazione. Tuttavia, il prodotto risultante non funziona. L'indicatore funzionava prima. Dopo aver allegato il codice per scrivere il file, l'indicatore non funziona più. Il programma crea un file con un record incomprensibile e muore a questo punto. Sono stato seduto qui tutto il giorno e non riesco a capirlo. Qualcuno può aiutarmi?
Signori, potete darmi un suggerimento? Ho cercato di scrivere i dati dell'indicatore in un file per la seconda settimana per poterli leggere in seguito e costruire un indicatore basato sui dati. L'indicatore è di formazione, calcolo il volume su ogni tick di una certa barra. Se il tick è positivo il suo volume viene aggiunto con "+", se è negativo - con "-". Aggiungo i volumi accumulati ottenuti e ottengo un delta e considero questo delta cumulativo. Questo produce una curva. Tuttavia, questa curva è costruita solo in tempo reale. Non può essere tracciato nella storia. A questo scopo, ho deciso di scrivere i dati in un file. Mi sono bloccato in questa fase. Ho gestito con amarezza il fatto che il codice non genera errori del compilatore. Tuttavia, il prodotto risultante non funziona. L'indicatore ha funzionato prima. Dopo aver allegato il codice per scrivere il file, l'indicatore non funziona più. Il programma crea un file con un record incomprensibile e muore a questo punto. Sono stato seduto qui tutto il giorno e non riesco a capirlo. Qualcuno può aiutarmi?
Sarebbe una buona idea spostare il puntatore alla fine del file prima di registrare.
Sarebbe bene spostare il puntatore alla fine del file prima di scrivere.
A cosa serve questo? Ho letto il link, ma non lo capisco.
A cosa serve questo? Ho letto il link, ma non lo capisco.
Per quale motivo? Quando si apre un file, il puntatore viene posizionato all'inizio del file e le informazioni vengono scritte all'inizio del file. Per scrivere nel posto giusto, devi spostare il puntatore nel posto giusto.
Signori, potete darmi un suggerimento? Per la seconda settimana ho cercato di scrivere i dati dell'indicatore in un file...
L'hai letto?
Sto ancora imparando MQL4. Non ho letto.
C'è un servizio di formazione online dove si può imparare MQL4 gratuitamente/pagato tramite esempi con un tutor? Ho quasi letto il tutorial MQL4, ma non so programmare affatto. Non ho familiarità con la programmazione prima. Sto cercando di imparare qualcosa in questo thread, ma non ho fatto alcun progresso. Potete darmi qualche consiglio?
Sto ancora imparando MQL4. Non ho letto.
C'è un servizio di formazione online dove si può imparare MQL4 gratuitamente/pagato tramite esempi con un tutor? Ho quasi letto un tutorial di MQL4, ma non so proprio programmare. Non ho familiarità con la programmazione prima. Sto cercando di imparare qualcosa in questo thread, ma non ho fatto alcun progresso. Puoi darmi qualche suggerimento?
1. Lavorare con i file in mql4 è lo stesso che in mql5.
2. Con tutto il rispetto per Sergei Kovalev, anche lui ha risposto alle mie domande a suo tempo, ma secondo me, le lezioni di Kirill sono più facili da capire. In Yandex si digita e subito 2 link alla sua lezione
Ciao, il tutorial del sito mi è bastato, dopo qualche anno di botte sui deflettori ho imparato a scrivere i miei indicatori. Ma le domande rimangono. Ora non capisco perché gli indicatori si confondono. Su M1 dopo 12 ore alcuni di loro iniziano a disegnare in modo errato ma segnalano correttamente. Alcuni di loro disegnano e segnalano in modo scorretto. Sulla M5 continuano a disegnare cinque volte di più. Puoi darmi un suggerimento?
1. La gestione dei file in mql4 è la stessa di mql5.
2. Con tutto il rispetto per Sergei Kovalev, anche lui ha risposto alle mie domande a suo tempo, ma secondo me, la lezione di Kirill è più facile da capire. In Yandex, digita su e subito 2 link alla sua lezione
È possibile imparare con l'aiuto delle lezioni di "Kirill" se non avete mai programmato prima? Quanto tempo ci vuole, dal suo punto di vista?