int ExitMarket() // -------------------- Working the open orders -------------------
{
total = OrdersTotal();
for(int cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// We search for orders opened by this code on our currency
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)// if this code has an open order on this currency
{
if(OrderType() == OP_SELL) // If the obtained order is by the selling of the currency
{
if(Ask >= OrderStopLoss())// Closing order if it reached the level of the stoploss
{
OrderClose(OrderTicket(), OrderLots(), MODE_ASK , SlipPage, Violet); // Close the order
}
else
{
// We close when the direction reverses
if(ADX DIplus1 || Closing > LowerE)
{
total = OrdersTotal();
OrderClose(OrderTicket(), OrderLots(), MODE_ASK , SlipPage, Violet); // Close the order
Print("Patient1 closed short ticket ",OrderTicket()," on a reverse @: ",Ask," Orders remaining open: ",total," BECAUSE cls: ",Closing," > lwrE: ",LowerE," or ADX: ",ADX," DI+1: ",DIplus1);
低モデリング品質のレポートよりコンリュ-ションを取る意味は何ですか?
仮想の結果で判断する前に、モデリングの質を向上させるべきであることを知るべきである。
90%のバックテストでさえ、あまり信用に値しない。
メカニックトレーダーはこうあるべきだと思う。
1.90%のバックテスト。
2.2.デモ口座で数ヶ月間。
3.リアル口座
4.利益
5.笑い
50%のモデリング品質報告で「非常によく動く」EAに、すべてのクレジットを与えるべきではないと思うのです。良い点
モデリングクオリティ50.00%......これは良くないな。
90%でも十分とは言えませんが、フォワードテストが良い結果を出してくれれば、それに越したことはありません。
コーディングのヘルプが必要です...
助けが必要だ...なぜこんなに難しいのか理解できません。
私が欲しいのは、いくつかの条件に基づいた単純なクローズオーダーです。
これはショートハーフです。それに対応するもう一つのロングハーフがあります。
しかし、なぜこのコードは...
{
total = OrdersTotal();
for(int cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// We search for orders opened by this code on our currency
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)// if this code has an open order on this currency
{
if(OrderType() == OP_SELL) // If the obtained order is by the selling of the currency
{
if(Ask >= OrderStopLoss())// Closing order if it reached the level of the stoploss
{
OrderClose(OrderTicket(), OrderLots(), MODE_ASK , SlipPage, Violet); // Close the order
}
else
{
// We close when the direction reverses
if(ADX DIplus1 || Closing > LowerE)
{
total = OrdersTotal();
OrderClose(OrderTicket(), OrderLots(), MODE_ASK , SlipPage, Violet); // Close the order
Print("Patient1 closed short ticket ",OrderTicket()," on a reverse @: ",Ask," Orders remaining open: ",total," BECAUSE cls: ",Closing," > lwrE: ",LowerE," or ADX: ",ADX," DI+1: ",DIplus1);
total = OrdersTotal();
Print(" Orders remaining open: ",total);
}
else
{
Print("stays open");
}
}
}//ifsell
}//if order is open
}//fororders
return(0);
}//exitmarket [/PHP]
why does it produce this output?
[PHP]2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: Orders remaining open: 1
2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: Patient1 closed short ticket 1 on a reverse @: 1.272 Orders remaining open: 1 BECAUSE cls: 1.2718 > lwrE: 1.2715 or ADX: 30.0152 DI+1: 19.1701
2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: found ticket: 1 type: 1 total open orders: 1
2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: Orders remaining open: 1
2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: Patient1 closed short ticket 1 on a reverse @: 1.2719 Orders remaining open: 1 BECAUSE cls: 1.2717 > lwrE: 1.2715 or ADX: 30.0152 DI+1: 19.1701
2006.11.06 19:07:30 2006.11.05 23:11 Patient1 EURUSDm,H1: found ticket: 1 type: 1 total open orders: 1
2006.11.06 19:07:30 2006.11.05 23:10 Patient1 EURUSDm,H1: Orders remaining open: 1
2006.11.06 19:07:30 2006.11.05 23:10 Patient1 EURUSDm,H1: Patient1 closed short ticket 1 on a reverse @: 1.272 Orders remaining open: 1 BECAUSE cls: 1.2718 > lwrE: 1.2715 or ADX: 30.0152 DI+1: 19.1701
2006.11.06 19:07:30 2006.11.05 23:10 Patient1 EURUSDm,H1: found ticket: 1 type: 1 total open orders: 1
2006.11.06 19:07:30 2006.11.05 23:08 Patient1 EURUSDm,H1: Orders remaining open: 1
2006.11.06 19:07:30 2006.11.05 23:08 Patient1 EURUSDm,H1: Patient1 closed short ticket 1 on a reverse @: 1.2718 Orders remaining open: 1 BECAUSE cls: 1.2716 > lwrE: 1.2715 or ADX: 31.5632 DI+1: 19.1701
2006.11.06 19:07:30 2006.11.05 23:08 Patient1 EURUSDm,H1: found ticket: 1 type: 1 total open orders: 1
2006.11.06 19:07:30 2006.11.05 23:07 Patient1 EURUSDm,H1: Orders remaining open: 1
2006.11.06 19:07:30 2006.11.05 23:07 Patient1 EURUSDm,H1: Patient1 closed short ticket 1 on a reverse @: 1.2717 Orders remaining open: 1 BECAUSE cls: 1.2715 > lwrE: 1.2715 or ADX: 31.5632 DI+1: 19.1701
2006.11.06 19:07:30 2006.11.05 23:07 Patient1 EURUSDm,H1: found ticket: 1 type: 1 total open orders: 1
反転条件を満たさないのに反転ラインを表示してしまうのでしょうか?
そして反転ラインを表示してもポジションを閉じないのでしょうか?
なぜ人々はこのEAで時間を浪費するのでしょうか? ライブ口座では使えません。 そのようなフィルを得ることはできません。
なぜ人々はこのEAで時間を浪費するのでしょうか? このEAで時間を無駄にするのはなぜ? このようなフィルを得ることはできないだろう。
何か良いものがないですか?
個人的には、私はここで学び、多くのコーディングの経験と練習を積んでいます。もし目的が学ぶことであるなら、私にとっては多くの価値があります。しかし、もしあなたが、私が「時間を無駄にする」ためのより良いEAを持っているならば...私はすべてを聞いています。
もし可能なら、このコーディングの問題を自由に解決してください。
https://www.mql5.com/en/forum/174700/page75
なぜこのEAで時間を浪費するのでしょうか? それは、ライブ口座では動作しないでしょう。 そのようなフィルを得ることはできません。
EAスペシャリスト博士」、面白い結論ですね...。
このEAを実際に使ってみて、うまくいかなかったと言えるのかどうか...。
少なくとも、どんなEAでも...。
おそらく、そしてそれが最も可能性が高いと思われることですが、あなたは「古典的な3ステップ」のEAを使った経験がまったくなく、「豊かさへの魔法の公式」で期待を膨らませて失望するのを恐れているのでしょう。
なんて哀れなんでしょう。
しかし、彼らは間違いなく、学び、改善するためにここにいるのです。
私たちは、あなたのような人とは違って、何度も何度もテストし、負け、改善し、変化し、自分の視点をリセットし、堅実で柔軟な戦略、つまり「変化を受け入れる」ことを確実に含むものを信じることを好みます。
このEAは実際の口座では 動作しないように見えるかもしれませんが、私たちはこのEAを動作させるためにここにいるのです。
以前のコーディングの問題は解決したようです。
しかし、新たな問題と疑問が残りました。
このEAの取引方法から、伝統的なインジケータはあまり役に立たないと結論づけました。このEAは同じバー内でトレードすることが多いので、トレンド系インジケータはバー内では追従しません。逆張りトレーダーであるため、典型的なトレンド系指標はあまり役に立ちません。
しかし、まだ利用されていない取引をフィルタリングする方法が1つ残っています。つまり、プログラム独自の意思決定ロジックです。これはかなり大変な作業ですが、サイバリアのパラメータがどのように勝ちトレードを構成し、何が負けトレードを構成するかというデータプロファイルをサイバリアロジックで開発することに潜在的な報酬があると信じています。
そのために、バックテスターを使って、サイベリアが注文を出すときに受け入れる決定パラメータをジャーナルに生成し、勝ちトレードと負けトレードをそれぞれのグループに分類し、その2つのグループの分析から、フィルターパラメータとしてインストールし使用できる何か特徴的なものがあるかどうかを確認することを提案したいのです。
私は水の212度の温度について、しばらく前に投稿した以前のムービークリップは、ここで適用されると思います。今、これは70〜72%程度で取引されています。これは良いことですが、今はまだかなり蒸気が出ているところです。暑いですが、211度の水と同じで、本当に使えるようになるには1度足りないのです。私の目標は、その1度を上げることです。そのためには、勝率をあと数パーセント上げるしかないかもしれません。もし、あと10パーセントで80パーセントになるとしたら、すごいことです。このままでは、本当に軌道に乗るとは思えないので、継続するのは難しいプログラムだ。(私の経験上)...。
もし私がこのコースを追求するならば、誰か私を助けてくれる人はいないかしら。私は、EAが注文を開くときにデータを出力するコードのバージョンを作成しました。これは、ジャーナルが出力を圧縮し始め、データが失われる前に、ジャーナルに一度に約7から14の注文を出力します。つまり、かなりの量のデータを収集するために、テスターは何度も再起動する必要があります。
とにかく、私はデータを分析するためのスプレッドシートを開発する間、このプロジェクトのデータ収集者として働きたいIBFXミニ口座を持っている人を探しています。もし興味があれば、PMで知らせてください。そして、あなたのメールアドレスを教えてください。まだ、もう一つ修正しなければならないことがありますが、ほとんど動作可能な状態になっています。
一番気になるデータは、すでに確認したタワーパターンにおいて、同じバー内で発生するものです。特にこの時間帯にサイバリアのロジックの中で何が起こっているのか、まずは十分なテストデータを集めたいと思っています。他の取引状況を無視すべきとは思いませんが、それほど大きな可能性を持っているようには見えないので、まずは最も高い確率でリターンが得られるところに焦点を合わせています......。
サイバイラとの付き合いが長いので、この確率の話が身に染みているのかもしれませんね。
また、MTエディタからすぐに使えるファイル書き込みのサンプルもあります。
これでcsvファイルにログを取ることができ、好きなように出力することができます。
int handle;
datetime orderOpen=OrderOpenTime();
handle=FileOpen("c:\cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');
if(handle>0)
{
FileWrite(handle, Close[0], Open[0], High[0], Low[0], TimeToStr(orderOpen));
FileClose(handle);
}
私はIBFXライブを使用しているので、マイクロロットでライブのフォワードテストができます。しかし、私は口座に他のライブトレードを持っているので、CTの結果を別々に取り出さなければならないでしょう。
電子メールアドレスのために私をPM
エンジニアを募集します!
どうやら、以前のコーディングの問題は解決したようです。
これでまた新たな問題と疑問が生まれました。
このEAの取引方法から、伝統的なインジケータはあまり役に立たないと結論づけました。このEAは同じバー内でトレードすることが多いので、トレンド系インジケータはバー内では追従しません。逆張りトレーダーであるため、典型的なトレンド系指標はあまり役に立ちません。
しかし、まだ利用されていない取引をフィルタリングする方法が1つ残っています。つまり、プログラム独自の意思決定ロジックです。これはかなり大変な作業ですが、サイバリアのパラメータがどのように勝ちトレードを構成し、何が負けトレードを構成するかというデータプロファイルをサイバリアロジックで開発することに潜在的な報酬があると信じています。
そのために、バックテスターを使って、サイベリアが注文を出すときに受け入れる決定パラメータをジャーナルに生成し、勝ちトレードと負けトレードをそれぞれのグループに分類し、その2つのグループの分析から、フィルターパラメータとしてインストールし使用できる何か特徴的なものがあるかどうかを確認することを提案したいのです。
私は水の212度の温度について、しばらく前に投稿した以前のムービークリップは、ここで適用されると思います。今、これは70〜72%程度で取引されています。これは良いことですが、今はまだかなり蒸気が出ているところです。暑いですが、211度の水と同じで、本当に使えるようになるには1度足りないのです。私の目標は、その1度を上げることです。そのためには、勝率をあと数パーセント上げるしかないかもしれません。もし、あと10パーセントで80パーセントになるとしたら、すごいことです。このままでは、本当に軌道に乗るとは思えないので、継続するのは難しいプログラムだ。(私の経験上)...。
もし私がこのコースを追求するならば、誰か私を助けてくれる人はいないかしら。私は、EAが注文を開くときにデータを出力するコードのバージョンを作成しました。これは、ジャーナルが出力を圧縮し始め、データが失われる前に、ジャーナルに一度に約7から14の注文を出力します。つまり、かなりの量のデータを収集するために、テスターは何度も再起動する必要があります。
とにかく、私はデータを分析するためのスプレッドシートを開発する間、このプロジェクトのデータ収集者として働きたいIBFXミニ口座を持っている人を探しています。もし興味があれば、PMで知らせてください。そして、あなたのメールアドレスを教えてください。まだ、もう一つ修正しなければならないことがありますが、ほとんど動作可能な状態になっています。
一番気になるデータは、すでに確認したタワーパターンにおいて、同じバー内で発生するものです。特にこの時間帯にサイバリアのロジックの中で何が起こっているのか、まずは十分なテストデータを集めたいと思っています。他の取引状況を無視すべきとは思わないが、それほど大きな可能性を持っているようには見えないので、まずは最も高い確率でリターンが得られる分野に集中している......。
サイバイラとの付き合いが長くなって、この確率の話が少しづつ浸透してきたような気がします。私は、アラゴルンを助ける準備ができているし、できる。私のメールアドレスはp.m.をチェックして ください。
バックテスト
Aaragornです。
cyberiaを修正し、バーの始値でバックテストができるようにすることは可能でしょうか。これは現在動作しません。
これはバックテストに最も信頼できる方法です。
この記事を読んでください。
https://www.mql5.com/en/code/9500
エントリーが始値、または出口が終値でない限り、注文が同じバーで満たされ、終了した場合、バックテスト結果は常に信頼性が低くなります。これは、バー内のプライスアクションを知ることができないためです。バックテストは、そのバーで何が起こったかを推定します。時には、その推定は、終了前に発生すると推定される価格でのフィルが、実際には終了後に発生することがあります。これは、特に市場が一方向に急変した場合に、あり得ない価格でフィルを行う可能性があります。ストラテジーによっては、このようなありえない価格を悪用して、ありえない結果を生むことがあります。