Bo pos powinno byc na ostaniej pozycji (w miejsce zera) a nie odwrotnieborysewicz pisze: if (ws) wyj = wyj + delimiter+iCustom(NULL,0,"Stochastic",KPeriod4,DPeriod4,Slowing4,pos,0);
PS.
Prosba, jezeli juz dodales nowe parametry (przyznam sie ze jak tworzylem to na szybko to nie pomysalem o tym) to dodaj prosze komentarz obok WS bo pozniej moze sie okazac ze wiecej osob bedzie dodawalo, i ostatecznie nikt nie po kuma co znaczy jakis skrot....i wersje wyzej (chciaz moze zwiekszyles, nie pamietam jaka byla ostatania)
A zreszta sam sam poprawie i dorobie troszke
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| EA_export.mq4 |
//| Jacek W. |
//| Subversor |
//+------------------------------------------------------------------+
#property copyright "Ver 3.6 "
#property link "Subversor jacekwn@gmail.com"
//---- input parameters
extern int last_X=500;
extern string delimiter = ",";
extern bool data_czas_osobno = true;
extern bool op = true; //open
extern bool hi = true; //high
extern bool lo = true; //low
extern bool cl = true; //close`
extern bool vo = true; //volume
extern bool ws = false; //Stochastic
extern bool misc = true; //dowolny (no prawie
extern string name = "dane.csv";
// Stochastic4 filtr
extern string StochasticInfo4Filtr = "Stochastic";
extern int KPeriod4=12;
extern int DPeriod4=9;
extern int Slowing4=26;
extern string iCustomInfo4Filter = "Parametry dowolnego wskaznika";//przyjmuje parametry tylko typu int
//moze komus bedzie sie chcialo dodac inne
extern string wsk_name = "MACD"; //np.MACD co jest bez sensu akurat jesli chodzi o iCustom
extern int mode = 0; //nr indeksu wykresu najczesciej zero
extern int ile_parametrow = 4; //nie liczac oczywiscie symbol timeframe mode i shift
extern int param1 = 12;
extern int param2 = 26;
extern int param3 = 9;
extern int param4 = 0;
extern int param5 = 0;
extern int param6 = 0;
extern int param7 = 0;
extern int param8 = 0;
extern int param9 = 0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if (StringLen(delimiter)!=1){
Print("Delimiter musi miec 1 znak");
return;
}
string linia;
int handler;
if(!NewBar()) return;
//handler =FileOpen(name,FILE_CSV|FILE_WRITE,delimiter);
handler =FileOpen(name,FILE_CSV|FILE_WRITE,delimiter);
if (handler<1){
Print("blad otwarcia pliku");
return;
}
for (int i=0;i<last_X;i++){
linia = get_linia(i);
FileWrite(handler,linia);
}
FileClose(handler);
//----
return(0);
}
//+------------------------------------------------------------------+
string get_linia(int pos){
string wyj;
if (data_czas_osobno){
wyj = TimeToStr(Time[pos],TIME_DATE);
wyj = wyj +delimiter;
wyj = wyj +TimeToStr(Time[pos],TIME_MINUTES);
}else{
wyj = TimeToStr(Time[pos],TIME_DATE|TIME_MINUTES);
}
if (op) wyj = wyj + delimiter+Open[pos];
if (hi) wyj = wyj + delimiter+High[pos];
if (lo) wyj = wyj + delimiter+Low[pos];
if (cl) wyj = wyj + delimiter+Close[pos];
if (vo) wyj = wyj + delimiter+Volume[pos];
if (ws) wyj = wyj + delimiter+iCustom(NULL,0,"Stochastic",KPeriod4,DPeriod4,Slowing4,0,pos); //n-tu
if (misc) wyj = wyj + delimiter+i_custom(pos);
return(wyj);
}
bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
double i_custom(int pos){
switch(ile_parametrow){
case 0:
return(iCustom(Symbol(),Period(),wsk_name,mode,pos));
break;
case 1:
return(iCustom(Symbol(),Period(),wsk_name,param1,mode,pos));
break;
case 2:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,mode,pos));
break;
case 3:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,mode,pos));
break;
case 4:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,mode,pos));
break;
case 5:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,
param5,mode,pos));
break;
case 6:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,
param5,param6,mode,pos));
break;
case 7:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,
param5,param6,param7,mode,pos));
break;
case 8:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,
param5,param6,param7,param8,mode,pos));
break;
case 9:
return(iCustom(Symbol(),Period(),wsk_name,param1,param2,param3,param4,param5,
param6,param7,param8,param9,mode,pos));
break;
}
}