バックテストでは素晴らしいEA - ページ 116

 
Beno:
私はこのスレッドを前から後ろまで読んで、解決策を見つけようとしたのですが、私が持っているのは

Cyberia Trader1.85g jpy.mq4 version 読み込んで、 の顔を持っていますが、全く注文がありません。私は30分足でUSD/CHFペアを使用しています。注文がないため、フォワードテストを行うのが本当に難しくなっています。システムは4日間稼働していますが、まだ注文がありません。

何か手助けがあればありがたいです。

乾杯

ベノ

もし私が70%以上の利益を出す方法を知っていれば、あなたを助けたいのですが、私は知らないのです。私は1時間足チャートで運用していますが、試してみてください。

 
Aaragorn:
このコードのビットに感謝します。私はそれを見て、それがファイルを作成し、読むことの両方を見ることができます。すでに作成されたファイルの末尾に何かを追加しているようには見えません。多分、それはあるのですが、私が見ていないだけで、もしかしたら、それはやっていなくて、見るべきものは何もないのかもしれません。私は、私たちが知っているコードの一部を知っていれば、それがどのようにそれを行うかを見ることができるように、最後にデータを追加するWAS。

このスレッドを見てみてください。

https://www.mql5.com/en/forum/175496

 

私は本当にこのコードでハッキングしてきたし、私はむしろ混乱したままにしてきた...しかし....

これをファイルに印刷させるための私の努力は、現在、失敗していることが証明されています。

データ収集に協力したい人には、これを手動で行う試みをするようお願いすることになると思います。

この添付のEAは、CTの最小限のロジックをジャーナルに印刷するように設定しています。これは何かインジケータを掴んでいるわけではありませんが、おそらくCTのロジックを見るだけでも、何かヒントが得られると思います。

このデータを収集するために必要なことは、バックテスターの セットアップでEAをそのまま実行することですが、実行中にジャーナルタブを監視する必要があります。ジャーナルは、データを切り捨てたり、下端から落としたりしないと、数回の注文のデータ以上は保持できないので、連続した5~7回の注文に到達したら、非常に迅速にテストを停止する必要があります。その後、データをメモ帳にコピー&ペーストし、テスターを再起動し、前回のコピー&ペーストを行った場所に到達するのを確認します。貼り付けの際には、1つの注文に対してこのように見えるすべてのデータをキャプチャするように注意する必要があります...

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

1時間のチャートでこれを実行し、データをキャプチャします。そして、私に電子メールで.txtメモ帳ファイルを送信します。おそらく、islandhomeは最初の注文で開始し、2005年の最初の500取引を行い、AZBOfinは2005年の取引500で開始し、次の500を行う場合?

あ、そうだ、今、コーダーズグルが投稿してくれたのを試してみよう。

ファイル:
 
codersguru:
このスレッドを見てください:https://www.mql5.com/en/forum/175496

わぁ、あなたは私の悩みを解決してくれたかもしれませんね...。

私が投稿したEAを見て、コード内の4つの場所でファイルに印刷しようとしているところを見てください。注文を開くときに2回、そして注文を閉じるときに別の関数で。私がここから何を引き出そうとしているかわかりますか?各注文の情報、注文開始時のプログラムのロジック、注文終了時の結果を記録するようにコーディングするのを手伝ってくれませんか?

毎回ファイルフラッシュを行うと、何か消去されるのでしょうか?フラッシュがどのように機能するのか、まだ理解していません。

 

ユーレカ!というわけで、「コーダーの達人」、ナイスレスキューです。

.txtファイルでは、すべての注文の結果行が印刷されないことに気がつきました。

もし、結果行が印刷されないなら、それは負けポジションだと考えていいのでしょうか?

ファイル:
 

その形式ではデータを解読することはできません。行単位にする必要があります。

まだ、「開いているファイルが多すぎる」という問題がありますが、エクセルで表示できるようにするには、以下のような基本的な形式が必要です。

//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が形成される必要がある基本的な方法は次のとおりです。

//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の外部データのインポート 機能を使えば、うまく行にまとめることができます。「;」で区切られていることを伝えればOKです。これは、行のデータが各注文に対して同じでないことを意味し、負けたエントリーを認識する識別子を設計することを難しくする。今、私は勝ったデータを残りのデータから分離することができ、おそらくそれで十分です。

 

これを見てください...負けトレードの結果行を保存するために、私は今それ自身の関数を このものに与えました、そしてまだそれは行を印刷しませんか? おい、1行に来ることはあまりにも多くを要求しているのでしょうか?

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言語は驚くほど気性が荒い!

 

Aaragornさん、こんにちは。

最適なセットファイルをアップロードしてください。

サイバー用

tnx

バイバイ

 
nanoc:
こんにちは、Aaragorn

最適なセットファイルをアップロードしてください。

サイバー用

tnx

バイバイ

この中にある...

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