Napisałem strategie, która ma zapisywać każdy tick. Jak rozumiem funkcja start() wykonuje się dla każdego ticku. Dlaczego więc nie zapisuje ticków. W czym może być problem.
int start()
{
string strSymbol="EURUSD";
double bid =MarketInfo(strSymbol,MODE_BID);
double ask =MarketInfo(strSymbol,MODE_ASK);
double time =MarketInfo(strSymbol,MODE_TIME);
string strDate=TimeToStr(time,TIME_DATE);
string strTime=TimeToStr(time,TIME_SECONDS);
int FileHandle;
FileHandle=FileOpen("tick.txt",FILE_WRITE|FILE_READ|FILE_CSV,",");
FileSeek(FileHandle, 0, SEEK_END);
FileWrite(FileHandle,strDate,strTime,bid,ask);
//Print(bid,",",ask);
FileClose(FileHandle);
return(0);
return(0);
}
Nie działa funkcja start() w MetaTraderze.
U mnie działa.
Przy wrzucaniu strategii na wykres trzeba zaznaczyć umożliw handel .
Plik zapisuje się w
właściwie powinno być :
Przy wrzucaniu strategii na wykres trzeba zaznaczyć umożliw handel .
Plik zapisuje się w
Kod: Zaznacz cały
folder z terminalem\experts\files
Kod: Zaznacz cały
FileHandle=FileOpen("tick.txt",FILE_WRITE|FILE_READ|FILE_CSV,','); //<<--- ','
Nie spiesz się , zawsze zdążysz stracić .
Wklej ten kod :

Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
string strSymbol="EURUSD";
double bid =MarketInfo(strSymbol,MODE_BID);
double ask =MarketInfo(strSymbol,MODE_ASK);
double time =MarketInfo(strSymbol,MODE_TIME);
string strDate=TimeToStr(time,TIME_DATE);
string strTime=TimeToStr(time,TIME_SECONDS);
int FileHandle;
FileHandle=FileOpen("tick.txt",FILE_WRITE|FILE_READ|FILE_CSV,',');
FileSeek(FileHandle, 0, SEEK_END);
FileWrite(FileHandle,strDate,strTime,bid,ask);
//Print(bid,",",ask);
FileClose(FileHandle);
return(0);
}
//+------------------------------------------------------------------+

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Nie spiesz się , zawsze zdążysz stracić .
Niestety nie działa. Jak kod wkleję do init() i zrobię pętlę działa. Ale powinno działać ze start(). W opisie MT4 jest, że kod w start() wykonuje się dla każdego ticku. Chcę rozwiązać ten problem, bo piszę dużo bardziej skomplikowaną strategię i włąśnie testuję w ten sposób funkcję start(). Chciałbym wiedzieć co robię źle, że ta funkcja nie działa.
int init()
{
while(true)
{
Dump("Tick-"+TimeToStr(TimeCurrent()));
string strSymbol="EURUSD";
double bid =MarketInfo(strSymbol,MODE_BID);
double ask =MarketInfo(strSymbol,MODE_ASK);
double time =MarketInfo(strSymbol,MODE_TIME);
string strDate=TimeToStr(time,TIME_DATE);
string strTime=TimeToStr(time,TIME_SECONDS);
int FileHandle;
FileHandle=FileOpen("tick.txt",FILE_WRITE|FILE_READ|FILE_CSV,",");
FileSeek(FileHandle, 0, SEEK_END);
FileWrite(FileHandle,strDate,strTime,bid,ask);
//Print(bid,",",ask);
FileClose(FileHandle);
}
return(0);
}
Dodano po 5 minutach:
Nie ma ryjka!!! Co zrobić? U Ciebie działa ten kod ze start()?
Dodano po 6 minutach:
Wiem w czym rzecz!!! Nie włączyłem przycisku "Włącz strategie". Myślałem, że dodanie wystarcza. Bez tego działają tylko funkcje init() i deinit(). Dzięki za pomoc!!!
int init()
{
while(true)
{
Dump("Tick-"+TimeToStr(TimeCurrent()));
string strSymbol="EURUSD";
double bid =MarketInfo(strSymbol,MODE_BID);
double ask =MarketInfo(strSymbol,MODE_ASK);
double time =MarketInfo(strSymbol,MODE_TIME);
string strDate=TimeToStr(time,TIME_DATE);
string strTime=TimeToStr(time,TIME_SECONDS);
int FileHandle;
FileHandle=FileOpen("tick.txt",FILE_WRITE|FILE_READ|FILE_CSV,",");
FileSeek(FileHandle, 0, SEEK_END);
FileWrite(FileHandle,strDate,strTime,bid,ask);
//Print(bid,",",ask);
FileClose(FileHandle);
}
return(0);
}
Dodano po 5 minutach:
Nie ma ryjka!!! Co zrobić? U Ciebie działa ten kod ze start()?
Dodano po 6 minutach:
Wiem w czym rzecz!!! Nie włączyłem przycisku "Włącz strategie". Myślałem, że dodanie wystarcza. Bez tego działają tylko funkcje init() i deinit(). Dzięki za pomoc!!!