Отличный советник в бэктесте! - страница 116
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я прочитал эту тему от начала до конца, пытаясь найти решение.
Cyberia Trader1.85g jpy.mq4 версия Я загрузил его и имею лицо, но у меня нет никаких ордеров вообще. Я использую пару USD/CHF на 30mins. Отсутствие ордеров делает очень трудным любое форвард тестирование. система работает уже 4 дня и все еще нет ордеров.
Помощь была бы очень кстати, спасибо.
спасибо
BenoЯ бы помог вам, если бы знал, как сделать лучше 70%, но я не знаю. Я работаю на часовом графике, попробуйте.
Спасибо за этот фрагмент кода. Я посмотрел на него и вижу, что он создает и читает файлы. Я не вижу, чтобы он добавлял что-либо в конец уже созданного файла. Может быть, это так, и я просто не вижу, а может быть, он этого не делает, и смотреть не на что. Я хотел бы знать часть кода, который, как мы знаем, добавляет данные в конец, чтобы я мог увидеть, как он это делает.
Посмотрите эту тему:
https://www.mql5.com/en/forum/175496
Я очень долго ковырялся в этом коде и оставил его в беспорядке... но...
мои попытки заставить его печатать в файл на данный момент не увенчались успехом.
Полагаю, я попрошу тех, кто хочет помочь в сборе данных, попытаться сделать это вручную.
Прилагаемый советник настроен на печать в журнал минимальной логики КТ. Это не захват каких-либо индикаторов, но, возможно, простое изучение логики КТ даст нам что-то, с чем мы сможем работать.
Чтобы собрать эти данные, нужно запустить советника в бэктестере, как он есть. Однако во время его работы нужно следить за вкладкой журнала. Поскольку журнал не сможет вместить больше, чем данные нескольких ордеров, не начав усекать и отбрасывать данные с нижней стороны, вам нужно будет быстро остановить тест, когда вы достигнете примерно каждого следующего 5 - 7 ордера. Затем скопируйте и вставьте данные в блокнот и перезапустите тестер, наблюдая, когда он дойдет до того места, где вы сделали предыдущую копию/вставку. Вы должны быть осторожны, чтобы захватить все данные, когда вы вставляете, что выглядит следующим образом для одного ордера...
2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Recorded Winning Long 56 Opened: 1.2188 Closed: 1.221
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Ticket: 56 DV: -0.0051 CCI: 57.9346 Long order is opened @: 1.2188 StopLoss= 1.2171 TakeProfit= 1.2285
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Buy @ Minute 40
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: open #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 ok
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid:0.0004
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid:0.0004
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid:0.0009
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityMid:0.002
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityMid:0.0021
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityMid:0.0021
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityQuality:8
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityQuality:8
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityQuality:19
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityQuality:7
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityQuality:7
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityQuality:14
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid*UndefinedPossibilityQuality:0.0164
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid*BuyPossibilityQuality:0.0032
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid*SellPossibilityQuality:0.0034
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Hour: 18 Minute: 40
запустите это на часовом графике и захватите данные. затем пришлите мне файл .txt блокнота по электронной почте Возможно, если islandhome начнет с первого ордера и сделает первые 500 сделок 2005 года, а AZBOfin начнет со сделки 500 2005 года и сделает следующие 500?
ах! забейте на это. дайте мне попробовать то, что только что написал гуру кодирования.
Посмотрите эту тему: https://www.mql5.com/en/forum/175496
возможно, вы только что спасли меня от многих проблем...
Не могли бы вы взглянуть на советника, который я разместил, и увидеть, что я пытаюсь распечатать в файл в 4 местах в коде. Дважды, когда он открывает ордера, а затем в отдельных функциях, когда он закрывает ордера. Вы видите, что я пытаюсь извлечь из этого? Не могли бы вы помочь мне написать код так, чтобы он записывал информацию о каждом ордере, логику программы, когда он открывается, и результат, когда ордер закрывается?
Если я буду делать файловую очистку после каждого раза, сотрется ли что-нибудь? Я все еще не понимаю, как работает эта штука с флешем.
Эврика! О, блин, спасибо гуру кодирования, отличное спасение!
Теперь я все еще немного озадачен... обратите внимание на .txt файл, он не печатает строку результатов для каждого ордера. почему он пропускает это для некоторых ордеров, интересно?
Могу ли я предположить, что если он не печатает итоговую строку, то это убыточная позиция?
Вы никогда не сможете расшифровать эти данные в таком формате, вам нужно, чтобы они были в строках, попробуйте включить их.
У меня все еще проблема с тем, что он говорит, что открыто слишком много файлов... но вот основной способ, как должен быть сформирован ваш dumpp, чтобы вы могли просмотреть его в excel
//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file
string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";
File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');
if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",
"SellPossibilityMid*SellPossibilityQuality",
"BuyPossibilityMid*BuyPossibilityQuality",
"UndefinedPossibilityMid*UndefinedPossibilityQuality",
"UndefinedSucPossibilityQuality",
"SellSucPossibilityQuality",
"BuySucPossibilityQuality",
"UndefinedPossibilityQuality",
"SellPossibilityQuality",
"BuyPossibilityQuality",
"UndefinedSucPossibilityMid",
"SellSucPossibilityMid",
"BuySucPossibilityMid",
"UndefinedPossibilityMid",
"SellPossibilityMid",
"BuyPossibilityMid",
"Decision" ) < 0)
{
PrintError();
return (Error);
}
//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data
//Record statistics at time of Order - Added by DudeWorks
void RecordTickets ()
{
if (Error > 0)
return (Error); //stop on error
FileSeek(File,0,SEEK_END);
if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,
SellPossibilityMid*SellPossibilityQuality,
BuyPossibilityMid*BuyPossibilityQuality,
UndefinedPossibilityMid*UndefinedPossibilityQuality,
UndefinedSucPossibilityQuality,
SellSucPossibilityQuality,
BuySucPossibilityQuality,
UndefinedPossibilityQuality,
SellPossibilityQuality,
BuyPossibilityQuality,
UndefinedSucPossibilityMid,
SellSucPossibilityMid,
BuySucPossibilityMid,
UndefinedPossibilityMid,
SellPossibilityMid,
BuyPossibilityMid,
Decision) < 0)
{
PrintError();
return (Error);
}
FileFlush(File);
return(0);
}
Вы никогда не сможете расшифровать эти данные в таком формате, вам нужно, чтобы они были в строках, попробуйте включить эти.
У меня все еще проблема с тем, что он говорит, что открыто слишком много файлов... но вот основной способ, как должен быть сформирован ваш dumpp, чтобы вы могли просмотреть его в excel
//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file
string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";
File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');
if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",
"SellPossibilityMid*SellPossibilityQuality",
"BuyPossibilityMid*BuyPossibilityQuality",
"UndefinedPossibilityMid*UndefinedPossibilityQuality",
"UndefinedSucPossibilityQuality",
"SellSucPossibilityQuality",
"BuySucPossibilityQuality",
"UndefinedPossibilityQuality",
"SellPossibilityQuality",
"BuyPossibilityQuality",
"UndefinedSucPossibilityMid",
"SellSucPossibilityMid",
"BuySucPossibilityMid",
"UndefinedPossibilityMid",
"SellPossibilityMid",
"BuyPossibilityMid",
"Decision" ) < 0)
{
PrintError();
return (Error);
}
//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data
//Record statistics at time of Order - Added by DudeWorks
void RecordTickets ()
{
if (Error > 0)
return (Error); //stop on error
FileSeek(File,0,SEEK_END);
if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,
SellPossibilityMid*SellPossibilityQuality,
BuyPossibilityMid*BuyPossibilityQuality,
UndefinedPossibilityMid*UndefinedPossibilityQuality,
UndefinedSucPossibilityQuality,
SellSucPossibilityQuality,
BuySucPossibilityQuality,
UndefinedPossibilityQuality,
SellPossibilityQuality,
BuyPossibilityQuality,
UndefinedSucPossibilityMid,
SellSucPossibilityMid,
BuySucPossibilityMid,
UndefinedPossibilityMid,
SellPossibilityMid,
BuyPossibilityMid,
Decision) < 0)
{
PrintError();
return (Error);
}
FileFlush(File);
return(0);
}
Для меня это не проблема.
Функция импорта внешних данных в excel помещает их в строки довольно хорошо. просто скажите ему, что они разделены ";" Проблема, которую я хотел бы решить с форматированием, заключается в том, что он не печатает строку результатов для проигрышных позиций. Это означает, что данные в строках не одинаковы для каждого ордера, что затрудняет разработку идентификатора, который распознает проигрышные позиции. Сейчас я могу прекрасно отделить выигрышные данные от остальных, возможно, этого достаточно, думаю, я смогу обойтись тем, что есть, но у меня пока нет индикаторных данных.
Посмотрите на это... Я дал этой штуке собственную функцию, чтобы сохранить строку результатов проигрышной сделки, и все равно она не печатает строку???? ой, да ладно, одна строка - это слишком много?
{
//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderOpenPrice() + Spread >= OrderClosePrice())
{
datetime blorderOpen=OrderOpenTime();
handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);
if(handle!=-1)
{
FileSeek(handle,0,SEEK_END);
FileWrite(handle,"Losing Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",blorderOpen);
FileWrite(handle," ");
Print("Recorded Losing Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
FileFlush(handle);
FileClose(handle);
}
else
{
int err1;
err1=GetLastError();
Print("error(",err1,"): ",ErrorDescription(err1));
return(0);
}
}//if win or lose
}//if buy
}//if symbol and magic number
return (0);
}//record long outcomes[/PHP]
what gives???
see this? this works fine...
[PHP]void RecordLongOutcomes()
{
//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderOpenPrice() + Spread < OrderClosePrice())
{
datetime borderOpen=OrderOpenTime();
handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);
if(handle!=-1)
{
FileSeek(handle,0,SEEK_END);
FileWrite(handle,"Winning Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",borderOpen);
FileWrite(handle," ");
Print("Recorded Winning Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
FileFlush(handle);
FileClose(handle);
}
else
{
int err;
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
//return(0);
}
}//if win or lose
}//if buy
}//if symbol and magic number
RecordLongLOutcomes();
return (0);
}//record long outcomesЭто тот же самый код! (практически) Этот язык mql удивительно темпераментный!
привет Аарагорн
пожалуйста, загрузите лучший файл набора
для кибера
спасибо
пока
привет Аарагорн
Пожалуйста, загрузите лучший набор файлов
для кибера
спасибо
покаон находится здесь...
https://www.mql5.com/en/forum/174700/page71