Отличный советник в бэктесте! - страница 116

 
Beno:
Я прочитал эту тему от начала до конца, пытаясь найти решение.

Cyberia Trader1.85g jpy.mq4 версия Я загрузил его и имею лицо, но у меня нет никаких ордеров вообще. Я использую пару USD/CHF на 30mins. Отсутствие ордеров делает очень трудным любое форвард тестирование. система работает уже 4 дня и все еще нет ордеров.

Помощь была бы очень кстати, спасибо.

спасибо

Beno

Я бы помог вам, если бы знал, как сделать лучше 70%, но я не знаю. Я работаю на часовом графике, попробуйте.

 
Aaragorn:
Спасибо за этот фрагмент кода. Я посмотрел на него и вижу, что он создает и читает файлы. Я не вижу, чтобы он добавлял что-либо в конец уже созданного файла. Может быть, это так, и я просто не вижу, а может быть, он этого не делает, и смотреть не на что. Я хотел бы знать часть кода, который, как мы знаем, добавляет данные в конец, чтобы я мог увидеть, как он это делает.

Посмотрите эту тему:

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: close #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 at price 1.2210

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?

ах! забейте на это. дайте мне попробовать то, что только что написал гуру кодирования.

 
codersguru:
Посмотрите эту тему: 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);

}

 
DudeWorks:
Вы никогда не сможете расшифровать эти данные в таком формате, вам нужно, чтобы они были в строках, попробуйте включить эти.

У меня все еще проблема с тем, что он говорит, что открыто слишком много файлов... но вот основной способ, как должен быть сформирован ваш 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 помещает их в строки довольно хорошо. просто скажите ему, что они разделены ";" Проблема, которую я хотел бы решить с форматированием, заключается в том, что он не печатает строку результатов для проигрышных позиций. Это означает, что данные в строках не одинаковы для каждого ордера, что затрудняет разработку идентификатора, который распознает проигрышные позиции. Сейчас я могу прекрасно отделить выигрышные данные от остальных, возможно, этого достаточно, думаю, я смогу обойтись тем, что есть, но у меня пока нет индикаторных данных.

 

Посмотрите на это... Я дал этой штуке собственную функцию, чтобы сохранить строку результатов проигрышной сделки, и все равно она не печатает строку???? ой, да ладно, одна строка - это слишком много?

void RecordLongLOutcomes()

{

//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 удивительно темпераментный!

 

привет Аарагорн

пожалуйста, загрузите лучший файл набора

для кибера

спасибо

пока

 
nanoc:
привет Аарагорн

Пожалуйста, загрузите лучший набор файлов

для кибера

спасибо

пока

он находится здесь...

https://www.mql5.com/en/forum/174700/page71

Причина обращения: