Кто может подскажите : есть скрипт который который оперативно записывает историю в файл но при открытом файле запись не идёт.... Скрипт этот вы наверняка знаете или видели называется currency_loader
// loading history data from M1 void LoadingM1(){//1 int MaxBars=MaxBarsInFile; if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);} if(ArrSizeM1>1){//2 if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;} for(i2=1; i2<=Tryes; i2++){//3 h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV); if(h1==-1){LastError=GetLastError();Info("1.2",1,""," There is an error while opening file: "+FileNameM1+" at "+i2+" Try "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1.2",2,"","File "+FileNameM1+" successfully opened ");} FileWrite(h1,FirstLine); for (i=MaxBars-1; i>=0; i-- ){//4 if(!USRegionSet){ CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+" "; // date of bar CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // time of bar } else{ BarTime=ArrayM1[i][0]; CString=CString+GetUSFormatTime(BarTime)+" "; // date of bar BarTime=0; } CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // Open price CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // High price CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // Low price CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+""; // Close price FileWrite(h1,CString); CString=""; }//4 FileClose(h1); LCM1 = iTime(Symbol(),PERIOD_M1,0); return; }//3 }//2 }//1
На сколько я понял здесь заморочка где то в хэндлах а вот где вопрос...
А как же ты тестил? И как он показывает прибыль, если он не работает? И как он не работает? Что печатает журнал? Ты где, в тестере его тестил? Или в онлайне?
Посмотри заодно, что за функция OrdersTotal, для чего она нужна и как вставляеися....
//---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
} if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ А ты парень настырный, получи. Это работает,но только глупость.Скопируй в MetaEditor,а то опять + на - перепутаешь.
На сколько я понял здесь заморочка где то в хэндлах а вот где вопрос...
Вот пример получения Handle int hwnd1 = WindowHandle(Symbol(), Period()); У тебя ничего подобного я что то незаметил. Если файл "csv" открыт Excel,то он блокирован и доступа на write у файла нет, разве это тайна.
А как же ты тестил? И как он показывает прибыль, если он не работает? И как он не работает? Что печатает журнал? Ты где, в тестере его тестил? Или в онлайне?
Посмотри заодно, что за функция OrdersTotal, для чего она нужна и как вставляеися....
Например, int total=OrdersTotal(); if(total<1) {
Тестил тестером, как еще то? :) Показывает прибыль 504, кол-во сделок 432, просадка 788$, 7,31%. В настройках ставил м5 по фунту, 17/03/08 по 19.03.08 А когда на графике запустил, мои условия для сделок выполнялись, а эксперт ничего не делал.......
//---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
} if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ А ты парень настырный, получи. Это работает,но только глупость.Скопируй в MetaEditor,а то опять + на - перепутаешь.
salesman77: Стесняюсь спросить :))) А как сделать так, чтоб мой эксперт открывал только одну сделку и пока она не завершится, не открывал другие?
Организовать в цикле перебор всех открытых позиций, проверять их на соответствие текущему символу и магику. Если таковых не окажется, то включаем зелёный свет. В кодобазе таких примеров полно, почти в каждом советнике.
Доброго времени суток.
Кто может подскажите : есть скрипт который который оперативно записывает историю в файл но при открытом файле запись не идёт.... Скрипт этот вы наверняка знаете или видели называется currency_loader
// loading history data from M1
void LoadingM1(){//1
int MaxBars=MaxBarsInFile;
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0);}
if(ArrSizeM1>1){//2
if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}
for(i2=1; i2<=Tryes; i2++){//3
h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV);
if(h1==-1){LastError=GetLastError();Info("1.2",1,""," There is an error while opening file: "+FileNameM1+" at "+i2+" Try "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1.2",2,"","File "+FileNameM1+" successfully opened ");}
FileWrite(h1,FirstLine);
for (i=MaxBars-1; i>=0; i-- ){//4
if(!USRegionSet){
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+" "; // date of bar
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; // time of bar
}
else{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // date of bar
BarTime=0;
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; // Open price
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // High price
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // Low price
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+""; // Close price
FileWrite(h1,CString);
CString="";
}//4
FileClose(h1);
LCM1 = iTime(Symbol(),PERIOD_M1,0);
return;
}//3
}//2
}//1
На сколько я понял здесь заморочка где то в хэндлах а вот где вопрос...
Всеравно не работтттттает!!!!
Помогите разобраться, в чем причина.
А как же ты тестил? И как он показывает прибыль, если он не работает? И как он не работает? Что печатает журнал? Ты где, в тестере его тестил? Или в онлайне?
Посмотри заодно, что за функция OrdersTotal, для чего она нужна и как вставляеися....
Например, int total=OrdersTotal(); if(total<1) {
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
А ты парень настырный, получи. Это работает,но только глупость.Скопируй в MetaEditor,а то опять + на - перепутаешь.
На сколько я понял здесь заморочка где то в хэндлах а вот где вопрос...Вот пример получения Handle
int hwnd1 = WindowHandle(Symbol(), Period());
У тебя ничего подобного я что то незаметил.
Если файл "csv" открыт Excel,то он блокирован и доступа на write у файла нет, разве это тайна.
А как же ты тестил? И как он показывает прибыль, если он не работает? И как он не работает? Что печатает журнал? Ты где, в тестере его тестил? Или в онлайне?
Посмотри заодно, что за функция OrdersTotal, для чего она нужна и как вставляеися....
Например, int total=OrdersTotal(); if(total<1) {
Показывает прибыль 504, кол-во сделок 432, просадка 788$, 7,31%. В настройках ставил м5 по фунту, 17/03/08 по 19.03.08
А когда на графике запустил, мои условия для сделок выполнялись, а эксперт ничего не делал.......
int start()
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
А ты парень настырный, получи. Это работает,но только глупость.Скопируй в MetaEditor,а то опять + на - перепутаешь.
А как сделать так, чтоб мой эксперт открывал только одну сделку и пока она не завершится, не открывал другие?
Стесняюсь спросить :)))
А как сделать так, чтоб мой эксперт открывал только одну сделку и пока она не завершится, не открывал другие?
Организовать в цикле перебор всех открытых позиций, проверять их на соответствие текущему символу и магику. Если таковых не окажется, то включаем зелёный свет. В кодобазе таких примеров полно, почти в каждом советнике.