Firebird v63G - ページ 30

 

先週のUSDCHFのチャートでお分かりのように、Firebirdはレンジ相場の中で非常にうまくいっています。市場がトレンドになるにつれ、Firebirdはしばしば間違った判断を下しています。つまり、相場がトレンドになったらすぐに降りて、レンジ相場に戻ったら戻ってくればいいのです。

Phoenixには、このような変化を見守るコードがあります。つまり、過去24時間、12時間、6時間、2時間の高値を取って、いつトレンドが発生し、いつレンジ相場が復活するかを判断することができるのです。

ファイル:
 

Hendrickの素晴らしい仕事、あなたのブレインストーミングが実を結んだのですね。

Hendrick:
USDCHFの荒れ模様の時のPhoenixとFirebirdの動作の違いをご覧ください。

Firebirdは3回買いを入れましたが、全てストップアウトしました。

Phoenixはタイミングを待って3回売りを出し、全てTPにヒットしました。

良いですか?
 
MarvinSk:
だいぶ近づいてきましたね。

これを追加しました。

if ((Safe1!=1)&&(DealTime==2)){。

for (int i=OrdersTotal()-1; i>=0; i--){

if (注文選択(i, SELECT_BY_POS, MODE_TRADES)) { { { { (注文シンボル()-1; i>=0; i--)

if (オーダーシンボル()==シンボル()) { {

if (オーダータイプ()==OP_BUY){

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (オーダータイプ()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK).OrderTicket(OrderSymbol()、MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

バックテストでは、OpenTradesを閉じているのがわかりますが、Safe1とDealTime変数が一致したときに、POSITIVE GAINSがあるトレードを閉じているので、STOPLOSS検索機能を追加する必要があります....

だから、Stoplossは3番目のトラップでなければならない....来週、うまくいったらこれを転送するつもりです。

繰り返しになりますが、マーケットが不安定な時に、既存のオープントレードをコントロールすることは、誰もが思いつくことです...もしトレードがストップするなら、100%ではなく、半分でストップしてほしい。少なくとも、マーケットが回復したときに、埋め合わせをする必要はない。

感謝

マーヴィン、こんにちは。

シグナルが変化したら、すぐにオープン・トレードをクローズするのが、より簡単な解決策だろう。どうでしょうか?

 
Hendrick:
マーヴィン、もっと簡単な方法は、シグナルが変化したらすぐにオープントレードをクローズすることです。どうでしょうか?

ヘンドリック...シグナルというのは、Safe1とDealtimeの値が真になったときということでしょうか?

もしそうなら、今市場が閉じているので、私がバック テストで見たのは、いくつかのPostive TradesもClosed outになったということです...だからSTOPLOSSのチェックは、それを制御するための第3の変数です。

私はELIHAYUNによって 提示されたいくつかのコードを持っています。

これをチェックしてみてくださいHendrick...

void CloseOrder(int ticket,double numLots,double close_price) { CloseOrder(intチケット,doubleロット,doubleクローズプライス)

{

int CloseCnt, err;

// 3回のクローズを試みる

CloseCnt = 0;

while (CloseCnt < 3)

{

if (OrderClose(ticket,numLots,close_price,Slippage,Violet))を実行します。

{

CloseCnt = 3;

}

それ以外

{

err=GetLastError();

Print(CloseCnt," Error closing order :(", err , ") " + ErrorDescription(err));

if (err > 0) CloseCnt++;

}

}

}

void CloseHalfSL()

{

double LosePercent = 50.0; // S/Lから50%。

for(int i=OrdersTotal()-1;i>=0;i--) // 全ての注文とポジションをスキャン...

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber() != MagicNumber) continue;

if ( OrderSymbol()==Symbol() )

if (OrderProfit() < 0) // 損切りトレードが発生しました。

{

double prc = Bid;

if (OrderType() == OP_SELL) prc = Ask;

double ord_prc = OrderOpenPrice();

double ord_SL = OrderStopLoss();

int SL_points = MathAbs(ord_prc - ord_SL) / Point;

int Actual_Lose = MathAbs(prc - ord_prc) / Point;

if ( (Actual_Lose * 100 / SL_points) >= LosePercent) // 負けすぎ。

{

CloseOrder(OrderTicket(), OrderLots(), prc);

}

}

}

}

/// ---- 取引が安全でないことを確認し、CloseHalfSLを呼び出します。

if (NotSafeToTrade) CloseHalfSL();

 
MarvinSk:
もうちょっとだ

これを追加しました。

if ((Safe1!=1)&&(DealTime==2)){。

for (int i=OrdersTotal()-1; i>=0; i--){

if (注文選択(i, SELECT_BY_POS, MODE_TRADES)) { { { { (注文シンボル()-1; i>=0; i--)

if (オーダーシンボル()==シンボル()) { {

if (オーダータイプ()==OP_BUY){

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (オーダータイプ()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK).OrderTicket(OrderSymbol()、MODE_ASK)。

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

バックテストでは、OpenTradesを閉じているのがわかりますが、Safe1とDealTime変数が一致したときに、POSITIVE GAINSがあるトレードを閉じているので、STOPLOSS検索機能を追加する必要があります....

だから、Stoplossは3番目のトラップでなければならない....来週、うまくいったらこれを転送するつもりです。

繰り返しになりますが、マーケットが不安定な時に、既存のオープントレードをコントロールすることは、誰もが思いつくことです...もしトレードがストップするなら、100%ではなく、半分でストップしてほしい。少なくとも、マーケットが回復したときに、埋め合わせをする必要がない...。

感謝

これは、POSITIVE GAINSの注文をオープンにしておく方法かもしれません。if(OrderType()) の行に "&& OrderProfit()<0" を追加してください。

if ((Safe1!=1)&&(DealTime==2)){」とします。

for (int i=OrdersTotal()-1; i>=0; i--){

if (オーダーセレクト(i,SELECT_BY_POS,MODE_TRADES)){。

if (オーダーシンボル()==シンボル()) { {

if (OrderType()==OP_BUY && OrderProfit()<0)){

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL && OrderProfit() <0){

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

ワッケナ

 
Wackena:
これはPOSITIVE GAINSの注文を放置しておく方法かもしれませんね。if(OrderType()) の行に "&& OrderProfit()<0" を追加してください。

if ((Safe1!=1)&&(DealTime==2)){。

for (int i=OrdersTotal()-1; i>=0; i--){

if (注文選択(i, SELECT_BY_POS, MODE_TRADES)) { { { { (注文シンボル()-1; i>=0; i--)

if (オーダーシンボル()==シンボル()) { {

if (OrderType()==OP_BUY && OrderProfit()<0)){

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL && OrderProfit() <0){

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

ワクテナ

Wackenaさん、ありがとうございます。

double pBid, pAsk;

if ((Safe1!=1)&&(DealTime==2)){。

for (int i=OrdersTotal()-1; i>=0; i--){

if (注文選択(i, SELECT_BY_POS, MODE_TRADES)) { { { { (注文シンボル()-1; i>=0; i--)

if (オーダーシンボル()==シンボル()) { (オーダーシンボル()==シンボル())

if ((OrderType()==OP_BUY)&&(OrderProfit()<0)){ (オーダータイプ()==OP_BUY)&&(オーダープロフィット()<0))

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

if ((オーダータイプ()==OP_SELL)&&(OrderProfit()<0)){。

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

 

OK 全て私は、市場が変動しているときに既存のオープントレードの処理に関して行った追加でフォワードテストをしています...

私が持っている唯一の例外は...0から24までのTradingHourの代わりに

私はこのパターンで取引しています。

0 - 7 EST

11 - 24 EST

NYがオープンする時間帯はEAが取引しないようにしたいので、このようにしています。私は8 -10 ESTで多くのボラティリティを見たことがあります。

週が進むにつれて、私の結果を掲載します...。今週はノイズメーカーのニュースがあるので、何が起こるか見てみましょう。

 

ライオンの国でバードウォッチング」という本を読み終えました。 悪くはないです。 最終章は参考になる。 また、火の鳥とフェニックスの背後にある考え方にかなり関連しています。 このアイデアは全く同じではありませんが、非常によく似ており、そこからいくつかの良いアイデアを盗んで、ファイアーバードをさらに素晴らしいEAにするために導入することができます。 もしHendrickやWackena、その他Firebirdの開発者たちがこの本を読むことに興味があれば、私に知らせてください。

 

Firebirdをテストしたい

こんにちは、hendrikです。ファイヤーバードの新しいバージョンをテストしたいのですが(ファイヤーバードのバージョンはたくさんあるので)、教えてもらえますか?

ファイヤーバードをフェニックスに開発した皆さん、お疲れ様でした。

ありがとうございました。

 

ライブ口座では問題なし

MarvinSk:
インターバンクFXのLIVE口座を持っている方

私はこれらのエラーを取得しています

2006.06.26 20:10:59 : order buy 1.00 USDCHFm opening at 1.2407 sl: 1.2307 tp: 1.2417 failed [共通エラー].

LIVE口座ではEAを認めないということでしょうか?

IBFXのLIVE口座を持っていて、今のところ問題はないのですが・・・。