Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
5_bar_SVM_input
//+------------------------------------------------------------------+
//| 5_bar_SVM_input.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#define NR_OF_ATTRIB 4
#define NR_BARS1 1500 //Bars for train
#define NR_BARS2 300 //Bars for test (predict)
#include <gFiles.mqh>
#property indicator_chart_window
extern int Signal=7;
extern string Symb = "EURUSD";
extern int TrainPeriod=PERIOD_M5;
extern int Price1=PRICE_CLOSE;
extern int FastPeriod=16;
extern int SlowPeriod=26;
extern int SignalPeriod=9;
extern int FutureWindow = 5;
extern int decimalplace=14;
extern bool Ramdisk = false;
string nameData1,nameData2,nameData3;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if(Ramdisk==true)
{
nameData1 = "R:/B4/DD/train"+Signal+"/"+Symbol()+".libsvm"; // name of the data file to be sent
nameData2 = "R:/B4/DD/test"+Signal+"/"+Symbol()+".libsvm";
nameData3 = "R:/B4/DD/s"+Signal+"/"+Symbol();
}
else
{
nameData1 = "B4/DD/train"+Signal+"/"+Symbol()+".libsvm"; // name of the data file to be sent
nameData2 = "B4/DD/test"+Signal+"/"+Symbol()+".libsvm";
nameData3 = "B4/DD/s"+Signal+"/"+Symbol();
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
string s1,s2;
int handle3;
if (Period() !=TrainPeriod)
{
Comment("WARNING: Invalid timeframe! Valid timeframe = M5.");
return(0);
}
if(StringFind(Symbol(),"m",0)>0)
{
Symb = Symb+"m";
}
if ((Symbol() != Symb) )
{
Comment("WARNING: Invalid symbol! Valid symbol = "+Symb);
return(0);
}
//----
if(isNewBarM1())
{
if(Ramdisk==true)
{
handle3 = gFileOpen(nameData3,WRITE);
gFileWrite(handle3,"stop");
gFileClose(handle3);
}
else
{
handle3 = FileOpen(nameData3, FILE_CSV|FILE_WRITE,' ');
if(handle3 < 1)
{
Comment("Creation of "+nameData3+" failed. Error #", GetLastError());
return(0);
}
FileWrite(handle3,"stop");
FileClose(handle3);
}
/////////////////////////
s1=write_data_train_2(); // write the data file
s2=write_data_test_2();
//////////////////////////
if(Ramdisk==true)
{
handle3 = gFileOpen(nameData3,WRITE);
gFileWrite(handle3,"start");
gFileClose(handle3);
}
else
{
handle3 = FileOpen(nameData3, FILE_CSV|FILE_WRITE,' ');
if(handle3 < 1)
{
Comment("Creation of "+nameData3+" failed. Error #", GetLastError());
return(0);
}
FileWrite(handle3,"start");
FileClose(handle3);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
bool isNewBarM1()
{
static datetime BarTimeM1;
bool res=false;
if (BarTimeM1!=iTime(NULL,PERIOD_M1,0))
{
BarTimeM1=iTime(NULL,PERIOD_M1,0);
res=true;
}
return(res);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
bool isNewBarM5()
{
static datetime BarTimeM5;
bool res=false;
if (BarTimeM5!=iTime(NULL,PERIOD_M5,0))
{
BarTimeM5=iTime(NULL,PERIOD_M5,0);
res=true;
}
return(res);
}
//+------------------------------------------------------------------+
//| up to 16 digits after decimal point |
//+------------------------------------------------------------------+
string DoubleToStr1(double number,int precision)
{
double rem,integer,integer2;
double DecimalArray[17]={ 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0,
1000000000.0, 10000000000.0, 100000000000.0, 10000000000000.0, 100000000000000.0,
1000000000000000.0, 1000000000000000.0, 10000000000000000.0 };
string intstring,remstring,retstring;
bool isnegative=false;
int rem2;
//----
if(precision<0) precision=0;
if(precision>16) precision=16;
//----
double p=DecimalArray[precision];
if(number<0.0) { isnegative=true; number=-number; }
integer=MathFloor(number);
rem=MathRound((number-integer)*p);
remstring="";
for(int i=0; i<precision; i++)
{
integer2=MathFloor(rem/10);
rem2=NormalizeDouble(rem-integer2*10,0);
remstring=rem2+remstring;
rem=integer2;
}
//----
intstring=DoubleToStr(integer,0);
if(isnegative) retstring="-"+intstring;
else retstring=intstring;
if(precision>0) retstring=retstring+"."+remstring;
return(retstring);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
string write_data_train_2()
{
int handle;
if(Ramdisk==true)
{
handle = gFileOpen(nameData1,WRITE);
}
else
{
handle = FileOpen(nameData1, FILE_CSV|FILE_WRITE,' ');
if(handle < 1)
{
Comment("Creation of "+nameData1+" failed. Error #", GetLastError());
return(0);
}
}
string ss1;
int i;
// FutureWindow=5 . . . . .
// 4 3 2 1 0
//
int nb1=NR_BARS1+FutureWindow+100;
for (i=(NR_BARS1+FutureWindow)-1; i>=FutureWindow; i--)
{
ss1= Line1(
nb1,
FutureWindow,
Price1,
true,
decimalplace,
i
);
if(Ramdisk==true)
{
gFileWrite(handle,ss1);
}
else
{
FileWrite(handle,ss1);
}
}
if(Ramdisk==true)
{
gFileClose(handle);
}
else
{
FileClose(handle);
}
string s1="File "+nameData1+" has been created. "+TimeToStr(TimeCurrent(), TIME_SECONDS);
return(s1);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
string write_data_test_2()
{
int handle,handle2,handle3,handle4;
int i;
string ss1,sig;
if(Ramdisk==true)
{
handle = gFileOpen(nameData2,WRITE);
handle2 = gFileOpen(nameData2+".t",WRITE);
handle3 = gFileOpen(nameData2+".fw",WRITE);
handle4 = gFileOpen(nameData2+".cl",WRITE);
}
else
{
handle = FileOpen(nameData2, FILE_CSV|FILE_WRITE,' ');
if(handle < 1)
{
Comment("Creation of "+nameData2+" failed. Error #", GetLastError());
return(0);
}
//...............................................................................
handle2 = FileOpen(nameData2+".t", FILE_CSV|FILE_WRITE,' ');
if(handle2 < 1)
{
Comment("Creation of "+nameData2+".t"+" failed. Error #", GetLastError());
return(0);
}
//...............................................................................
handle3 = FileOpen(nameData2+".fw", FILE_CSV|FILE_WRITE,' ');
if(handle3 < 1)
{
Comment("Creation of "+nameData2+".fw"+" failed. Error #", GetLastError());
return(0);
}
//...............................................................................
handle4 = FileOpen(nameData2+".cl", FILE_CSV|FILE_WRITE,' ');
if(handle4 < 1)
{
Comment("Creation of "+nameData2+".cl"+" failed. Error #", GetLastError());
return(0);
}
//...............................................................................
}
int nb2=(NR_BARS2+FutureWindow)-1+100;
for (i=(NR_BARS2+FutureWindow)-1; i>=0; i--)
{
ss1= Line1(
nb2,
FutureWindow,
Price1,
false,
decimalplace,
i
);
if(Ramdisk==true)
{
gFileWrite(handle,ss1);
gFileWrite(handle2,DoubleToStr(Time[i],0)+"\n");
gFileWrite(handle4,StringConcatenate(DoubleToStr(Time[i],0),",",DoubleToStr(Close[i],Digits))+"\n");
}
else
{
FileWrite(handle,ss1);
FileWrite(handle2,Time[i]);
FileWrite(handle4,Time[i],Close[i]);
}
}
if(Ramdisk==true)
{
gFileClose(handle);
gFileClose(handle2);
gFileClose(handle4);
gFileWrite(handle3,DoubleToStr(FutureWindow,0));
gFileClose(handle3);
}
else
{
FileClose(handle);
FileClose(handle2);
FileClose(handle4);
FileWrite(handle3,FutureWindow);
FileClose(handle3);
}
string s1="File "+nameData2+" has been created. "+TimeToStr(TimeCurrent(), TIME_SECONDS);
return(s1);
}
//+------------------------------------------------------------------+
//|
//+------------------------------------------------------------------+
string Line1(
int nb1,
int FW,
int Price1,
bool train,
int pr1,
int i
)
{
int sig0;
string ss0;
string ssig0;
/*
extern int NrOfBars=500;
extern int bars1 = 5;
*/
if(train)
{
sig0 = iCustom(Symbol(),0,"5_bar_sig",
nb1,
FW,
0,
i+0);
}
else
{
sig0 = 0;
}
string x1=DoubleToStr1(iMACD(Symbol(),0,FastPeriod,SlowPeriod,SignalPeriod,Price1,MODE_MAIN,i+0)/Point,pr1);
string x2=DoubleToStr1(iMACD(Symbol(),0,FastPeriod,SlowPeriod,SignalPeriod,Price1,MODE_MAIN,i+1)/Point,pr1);
string x3=DoubleToStr1(iMACD(Symbol(),0,FastPeriod,SlowPeriod,SignalPeriod,Price1,MODE_SIGNAL,i+0)/Point,pr1);
string x4=DoubleToStr1(iMACD(Symbol(),0,FastPeriod,SlowPeriod,SignalPeriod,Price1,MODE_SIGNAL,i+1)/Point,pr1);
if(sig0==-1)
ssig0="1";//SELL
else if(sig0==1)
ssig0="2";//BUY
else
ssig0="3";//NO TRADE
if(Ramdisk==true)
{
ss0=StringConcatenate(ssig0,
" 1:"+x1,
" 2:"+x2,
" 3:"+x3,
" 4:"+x4,
"\n"
);
}
else
{
ss0=StringConcatenate(ssig0,
" 1:"+x1,
" 2:"+x2,
" 3:"+x3,
" 4:"+x4
);
}
return(ss0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---