|
|||||
|
|||||
Èíîãäà ñîçäàåòñÿ âïå÷àòëåíèå, ÷òî òåñòåð â ÌÒ4 è ñàìè áîòû æèâóò ñàìîñòîÿòåëüíîé æèçíüþ. Äàæå áîëåå-ìåíåå ïðèáûëüíûå ñòðàòåãèè èç-çà íåêîððåêòíûõ äåéñòâèé ÏÎ ÌÒ4 ìîãóò ñëèâàòü. Ïîýòîìó ðåçóëüòèðóþùèé ñòåéò - íå ïîêàçàòåëü. Íàäî êàæäóþ ñäåëêó ïðîâåðÿòü è àíàëèçèðîâàòü.
Ïîáåäèòåëåé íå ñóäÿò... Õèùíèêîâ òîæå...
clusterdelta.com - áèðæåâîé èíôîðìàöèîííî-àíàëèòè÷åñêèé ïîðòàë
Ñ óâàæåíèåì, Ðàäèê
ïðèâåò âñåì! êàê óçíàòü êîä VWAP õîòåë áû íàïèñàòü ñîâåòíèê, êñòàòè ÿ ÷àéíèê)
à êîä íà Ìåòà Ýäèòîð íå ïîäñêàæåøü äîáðûé äðóã)))
òèïà int; ... è ò ä
Âñåì ïðèâåò, ïîìîãèòå ïîæàëóéñòà ñ ïðîôèëåì äåëüòû. Íóæåí ñïåöèàëüíûé èíäèêàòîð ïðîôèëÿ. Êòî ìîæåò ïîìî÷ü ñëîâîì, à ìîæåò è äåëîì?????
Äîáðûé äåíü, óâàæàåìûå ôîðóì÷àíå!
Ïðîøó âàøåé ïîìîùè â ðåøåíèè ñëåäóþùåé çàäà÷è.
Åñòü CSV-ôàéë èñòîðèè (âçÿò ïðîìî-ôàéë íà ýòîì ñàéòå).
Õî÷ó îòîáðàçèòü íà ýêðàíå (èëè ïîäãðóçèòü äàííûå â òåðìèíàë) èñòîðèþ èç ýòîãî CSV-ôàéëà. Ìåíÿ èíòåðåñóþò òîëüêî îáúåì è äåëüòà.
ß ñåáå ýòî ïðåäñòàâëÿþ òàê – îáúåìû â îäíîì ïîäîêíå ïîä ãðàôèêîì, äåëüòà âî âòîðîì ïîäîêíå ïîä îáúåìàìè.
Òàê êàê ðàçíûå ïîäîêíà, òî ÿ ïîíèìàþ, ÷òî òóò íåîáõîäèìî áóäåò äâà èíäèêàòîðà (èëè ñêðèïòà???) – îäèí äëÿ îáúåìîâ, äðóãîé äëÿ äåëüòû. Îíè áóäóò ïðàêòè÷åñêè èäåíòè÷íûìè.
Òàêæå, åñëè ýòî âîçìîæíî, òî ñðàçó ïðåäóñìîòðåòü òàêóþ âîçìîæíîñòü, ÷òî áû â áóäóùåì ñòîðîííèé ïîëüçîâàòåëüñêèé èíäèêàòîð (èëè ñîâåòíèê) ñìîã êàê-òî îáðàùàòüñÿ ê ýòîìó èíäèêàòîðó/ñêðèïòó è ðàáîòàòü ñ äàííûìè îáúåìà è äåëüòû. Èëè òàê íå ïîëó÷èòñÿ?
ß ÷èòàë ñïðàâêó ïî MQL ïî ôàéëîâûì îïåðàöèÿì, íî, ÷åñòíî ïðèçíàþñü, òóãî. Ïðèìåðîâ ìàëîâàòî.
Õî÷åòñÿ ðàçîáðàòüñÿ â ýòîì ñàìîìó. Íî íå çíàþ ñ ÷åãî íà÷àòü
Çàðàíåå áëàãîäàðåí!
Âñåì ïðîôèòîâ!!!
Äîáðîãî âðåìåíè ñóòîê!
 ïðîäîëæåíèå ñâîåãî âîïðîñà î ÷òåíèè ôàéëà èñòîðèè
Íà÷àë êîïàòü. Ïîêà âñ¸ ÷òî óäàëîñü íàéòè - ýòî ñêðèïò, êîòîðûé ÷èòàåò CSV-ôàéë è ðèñóåò âåðòèêàëüíûå ëèíèè íà ãðàôèêå
Âçÿë åãî çà îñíîâó. Íåìíîãî ïîäïðàâèë.
Íî ñåé÷àñ ó ìåíÿ âîçíèêëà ïðîáëåìà ñ âûâîäîì äàííûõ â ôóíêöèè DrawIndicator.
Ïîêà óìà íå ïðèëîæó, êàê è ÷òî òàì íàäî íàïèñàòü, ÷òî áû ïðàâèëüíî ðèñîâàëàñü ãèñòîãðàììà îáúåìîâ (âåðíåå ñêàçàòü, ÷òî áû îíà âîîáùå òàì ðèñîâàëàñü).
Ïðîøó ëþäåé, ðàçáèðàþùèõñÿ â MQL ïîñìîòðåòü è ïîäñêàçàòü.
Âîò êîä:
//+------------------------------------------------------------------+
//| History_VOLUME_1.mq4 |
//|  êà÷åñòâå îñíîâû âçÿò ñêðèïò |
//| http://www.mqlvopros.net |
//| Ñïèñîê âîïðîñîâ |
//| Âîïðîñ |
//| Çäðàâñòâóéòå! Ïîäñêàæèòå, ïîæàëóéñòà, êàê ïðàâèëüíî âûçâàòü |
//| òåïåðü ôóíêöèþ ReadCSVFile |
//+------------------------------------------------------------------+
//--- indicator settings
#property indicator_separate_window // ðèñóåì èíäèêàòîð â îòäåëüíîì îêíå
#property indicator_buffers 1 // êîëè÷åñòâî áóôåðîâ èíäèêàòîðà - 1
#property indicator_color1 Black // öâåò èíäèêàòîðíîé ëèíèè
#property indicator_width1 2 // òîëùèíà èíäèêàòîðíîé ëèíèè - 2
//---- indicator buffers
double VOL[];
//+------------------------------------------------------------------+
//| Ñòðóêòóðà äëÿ õðàíåíèÿ äàííûõ |
//+------------------------------------------------------------------+
struct History
{
datetime date_op; // äàòà îòêðûòèÿ áàðà
datetime time_op; // âðåìÿ îòêðûòèÿ áàðà
datetime date_cl; // äàòà çàêðûòèÿ áàðà
datetime time_cl; // âðåìÿ çàêðûòèÿ áàðà
double open; // öåíà îòêðûòèÿ
double high; // ìàêñèìàëüíàÿ öåíà
double low; // ìèíèìàëüíàÿ öåíà
double close; // öåíà çàêðûòèÿ
int volume; // îáúåì
int delta; // äåëüòà
int ask; // àñê
int bid; // áèä
datetime expiration; // ìåñÿö ýêñïèðàöèè
};
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//--- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
//---- indicator buffers mapping
SetIndexBuffer(0,VOL);
//--- name for DataWindow and indicator subwindow label
IndicatorShortName("VOLUME");
SetIndexLabel(0,"VOLUME");
//--- initialization done
return(0);
}
//--------------------------------------------------------------- 1 --
int start() // Ñïåö. ôóíêöèÿ start
//--------------------------------------------------------------- 2 --
{
string File_Name="EURO_15_min_2014.csv"; // Èìÿ ôàéëà èñòîðèè
{
//---
History lines[];
// Ïðî÷èòàåì äàííûå èç ôàéëà
// Åñëè ôàéë óñïåøíî íàéäåí è îòêðûò ïîëó÷èì true
if(ReadCSVFile(File_Name, lines))
{
// ïðîâåðèì áûëè ëè ñîáðàíû äàííûå
if(ArraySize(lines) > 0)
{
// îòðèñóåì êàæäûé ïðî÷èòàííûé îáúåì
for(int i = ArraySize(lines)-1; i >= 0; i--)
DrawIndicator(lines[i]);
}
else
Print("Äàííûå îòñóòñòâóþò!");
}
else
Print("Îøèáêà èçâëå÷åíèÿ äàííûõ!");
//---
}
return (0);
}
//---------------------------------------------------------------- 3 --
//+--------------------------------------------------------------------+
//| Âûïîëíÿåò ÷òåíèå äàííûõ èç csv ôàëà
//| fileName - èìÿ csv ôàéëà
//| lines - ðåçóëüòèðóþùèé ìàññèâ
//+--------------------------------------------------------------------+
bool ReadCSVFile(string File_Name, History &lines[])
{
bool _result = false;
// Îáíóëåíèå ðåçóëüòèðóþùåãî ìàññèâà
ArrayResize(lines,0);
// îòêðûòèå ôàéëà
int _fileHandle = FileOpen(File_Name,FILE_READ|FILE_CSV,";");
if(_fileHandle != INVALID_HANDLE)
{
// èçìåíèì ðåçóëüòàò âûïîëíåíèÿ ìåòîäà
_result = true;
// Óñòàíîâêà ôàéëîâîãî óêàçàòåëÿ â íà÷àëî ôàéëà
FileSeek(_fileHandle,0,SEEK_SET);
// ×òåíèå äî êîíöà ôàéëà
while(!FileIsEnding(_fileHandle))
{
// óâåëè÷èì ðàçìåð ðåçóëüòèðóþùåãî ìàññèâà
ArrayResize(lines,ArraySize(lines)+1);
// ïîëó÷èì íîìåð äîáàâëåííîãî ýëåìåíòà
int _addItemNum = ArraySize(lines)-1;
// ÷òåíèå äàòû îòêðûòèÿ áàðà
lines[_addItemNum].date_op = (int)FileReadNumber(_fileHandle);
// ÷òåíèå âðåìåíè îòêðûòèÿ áàðà
lines[_addItemNum].time_op = FileReadString(_fileHandle);
// ÷òåíèå çíà÷åíèÿ îáúåìà
lines[_addItemNum].volume = FileReadDatetime(_fileHandle);
}
// Çàêðîåì ôàéë
FileClose(_fileHandle);
}
else
Print("Îøèáêà îòêðûòèÿ ôàéëà: " + IntegerToString(GetLastError()));
//
return _result;
}
//+------------------------------------------------------------------+
// Ìåòîä âûâîäÿùèé â ïîäîêíî ãèñòîãðàììó îáúåìà
//+------------------------------------------------------------------+
bool DrawIndicator(History &lines)
{
bool _result = false;
// îòðèñîâûâàòü íåîáõîäèìî òîëüêî ñäåëêè ïî òåê èíñòðóìåíòó
if(lines.date_op != 0) return _result;
// íàéäåì èíäåêñ áàðà, íà êîòîðîì íóæíî ðàçìåñòèòü ãðàôè÷åñêèé îáúåêò
int _indexBar = iBarShift(_Symbol,_Period, lines.orderOpenTime, true);
if(_indexBar > -1)
{
// Ñîñòàâèì èìÿ ãðàôè÷åñêîãî îáúåêòà
string _objName = "order #"+IntegerToString(lines.ticketNum);
// Ïðîâåðèì, ÷òî áû òàêîãî ãðàôè÷åñêîãî îáúåêòà íå ñóùåñòâîâàëî
if(ObjectFind(0, _objName) == -1)
{
// Îïðåäåëèì òèï îáúåêòà â çàâèñèìîñòè îò òèï îðäåðà
ENUM_OBJECT _objType = NULL;
if(lines.orderType == OP_BUY)
{
_objType = OBJ_ARROW_BUY;
}
else
if(lines.orderType == OP_SELL)
{
_objType = OBJ_ARROW_SELL;
}
if(_objType != NULL)
{
// Ñîçäàíèå ãðàôè÷åñêîãî îáúåêòà
if(!ObjectCreate(0, _objName, _objType, 0, Time[_indexBar],
lines.orderOpenPrice))
{
Print("Îøèáêà ïðè ñîçäàíèè îáúåêòà "+_objName+
" #"+IntegerToString(GetLastError()));
}
}
}
}
//
return _result;
}
//+------------------------------------------------------------------+
ÏÑ
Ìîæåò ÿ çðÿ âåëîñèïåä èçîáðåòàþ è ó êîãî-íèáóäü óæå åñòü òàêîé èíäèêàòîð, êîòîðûé ÷èòàåò èñòîðèþ ???
Ãðóáî ãîâîðÿ ó òåáÿ ìàññèâ òàéìñåðèé - Time, Bars, Open, Close è òàê äàëåå.
Ïîñëåäíèé (òåêóùèé) áàð èìååò èíäåêñ 0, âñå ÷òî âëåâî îò íåãî èäåò 1, 2, 3 è òàê äàëåå
ó òåáÿ åñòü ìàññèâ VOL, îí îïðåäåëåí êàê áóôåð äëÿ ãèñòîãðàììû îáúåìà
Ñîîòâåòñòâåííî âñå çíà÷åíèÿ â ýòîì áóôåðå áóäóò îòîáðàæåíû êàê ãèñòîãðàììà èíäèêàòîðà. Íîìåðà èíäåêñîâ òàêèå æå êàê è òàéìñåðèé.
Çàäà÷à: ïîëó÷èòü âðåìÿ è îáúåì áàðà èç ÑSV, íàéòè ñîîòâåòñòâóþùåå âðåìÿ îòêðûòèÿ â ÌÒ4, íàéòè åãî ïîðÿäêîâûé íîìåð è ïðèñâîèòü ïîðÿäêîâîìó íîìåðó ìàññèâà VOL çíà÷åíèå îáúåìà. Äëÿ ïîèñêà ìîæíî èñïîëüçîâàòü ôóíêöèþ MT4 ArrayBSearch, íî íàäî ïîìíèòü, ÷òî îíà èùåò áëèæàéøèé ïî çíà÷åíèþ ýëåìåíò â îòñîðòèðîâàííîì ìàññèâå.
 âûøåïðèâåäåííîì ïðèìåðå èñïîëüçóåòñÿ ôóíêöèÿ iBarShift(_Symbol,_Period, lines.orderOpenTime, true);
Äàëüøå â ïðèìåðå ñòðîÿòñÿ îáúåêòû íà êàæäûé îáúåì, íî ÿ áû òàê íå äåëàë - âåäü ïî ôàêòó îïðåäåëåí áóôåð, çàíåñè â íåãî çíà÷åíèÿ è îáúåêòû ÌÒ4 ïîñòðîèò ñàìîñòîÿòåëüíî + ñàì æå áóäåò ñëåäèòü çà èõ èçìåíåíèåì .
(C) 2009-2023 ClusterDelta.com.