その他の「トレーディング戦略」についてはこちら - ページ 4

 
doshur: アベレージ・インは常にOKだが、巨大なロット・サイズを持っていてエグジットしたい場合、希望する価格でエグジットするためのボリュームが ない可能性がある。

ニュースリリースがあったとき、このシステムがオーディのように生き残ることができるのかどうか。

ロットサイズが十分小さければ、どんなものでも生き残ることができる。それがあなたにとって 価値があるかどうかは、全く別の問題です。最近、Audでもっとうまくやれるシステムを提出できるでしょうか?念のため言っておきますが、このスレッドは他の人の儲かる システムについてのスレッドではありません。これは、人々が様々な専門家を提出し、戦略についての良い点と悪い点を検討することを意図しているスレッドです。儲かるか儲からないかは問題ではありません。
 

YesLstTrdWin()関数 内にバグを 発見しました。

bool YesLstTrdWin(){
    if(!PositionSelect(CurSetSymbol)){return(false);}
    ulong   PosType=PositionGetInteger(POSITION_TYPE);
    ulong   PosOpTime=PositionGetInteger(POSITION_TIME);
    double  PosPrice=PositionGetDouble(POSITION_PRICE_CURRENT);
    HistorySelect(PosOpTime,TimeCurrent());
    int DealsTotal=HistoryDealsTotal();
    for(int i=DealsTotal-1; i>=0; i--){
        ulong DealTicket=HistoryDealGetTicket(i);
        ulong DealEntry=HistoryDealGetInteger(DealTicket,DEAL_ENTRY);
        if(DealEntry!=DEAL_ENTRY_IN){continue;}
        ulong DealMagic=HistoryDealGetInteger(DealTicket,DEAL_MAGIC);
        if(DealMagic!=SystemMagic1){continue;}
        string DealSymb=HistoryDealGetString(DealTicket,DEAL_SYMBOL);
        if(DealSymb!=CurSetSymbol){continue;}
        ulong  DealType=HistoryDealGetInteger(DealTicket,DEAL_TYPE);
        double DealPrice=HistoryDealGetDouble(DealTicket,DEAL_PRICE);
        if(DealType==DEAL_TYPE_BUY  && PosPrice>DealPrice){return(true);}
        if(DealType==DEAL_TYPE_SELL && PosPrice<DealPrice){return(true);} //This Line Was Left Out.
        return(false);
    }   return(false);
}

私は、ポジション範囲の内側で平均化するようにした最後の売り取引チェッカーを忘れていました。

*別のメモ:内部および/またはアンチグリッドの平均化は、トレンドシステムのための効果的な戦略である可能性があります。

 
Ubzen:

YesLstTrdWin()関数内にバグを 発見しました。

私は、ポジション範囲の内側で平均化するようにした最後の売り取引チェッカーを忘れていました。

*もう一つの注意点:グリッド内および/またはアンチグリッドの平均化は、トレンドシステムにとって効果的な戦略である可能性があります。

Ubzenさん、こんにちは。

私はしばらく前にこのスレッドを見て、私は貢献するつもりだった、私は遅れて申し訳ありませんが、これはmql5内のこれらのミニフォーラム-スレッドのいずれかになることを願っています。最適化されていないランダムなシグナルを使用して安定した利益を上げているという事実は、確かに有望です。私はまだ実際にシグナルを研究していないのですが、実は今日コードを見たばかりで、あなたのMaxDDCurrency()関数にまっすぐズームインしました。バグと思われる行があるのですが・・・。

これは

if(TempDD>MaxDDCurency){return;}

はこれでしょうか?

if(TempDD<=MaxDDCurency){return;}

もう一つ一般的な質問です。ストラテジーテスターの 価格データは、特にスプレッドに関しては、どの程度信頼できると思いますか?

追記:私のものも近日中に掲載する予定です。

 

を呼んでいるようでもありますね。

BrkEveEquity();

を呼び出しているようです。これはHighestEquity()関数の中で、つまり株式の高値が更新されたときに呼び出すべきではありませんか。私のコメントが外れているように見えたらすみません まだ私自身はストラテジーテスターで EAを実際にテストしていませんが、あなたがこれを書いたときに何を考えていたかを感じ取ることができると思いました。

 
ssn: こんにちは、Ubzen。私は少し前にこのスレッドを見て、私は貢献するつもりだった、私は遅れて申し訳ありませんが、これはmql5内のこれらのミニフォーラムのスレッドのいずれかになることを願っています。最適化されていないランダムシグナルで安定した利益を上げているのは、確かに有望ですね。私はまだ実際にシグナルを研究していないのですが、実は今日コードを見たばかりで、あなたのMaxDDCurrency()関数にまっすぐズームインしました。バグと思われる行があるのですが・・・。

これはこれで良いのでしょうか?もう一つ一般的な質問です。ストラテジーテスターの価格データは、特にスプレッドに関してはどの程度信頼性があると思いますか?追記:私のものも近日中に掲載する予定です。

機能全体

void MaxDDCurency(){
    int TempDD=AcountEquity-HighesEquity;
    if(TempDD>MaxDDCurency){return;}
    MaxDDCurency=TempDD;
}

1) 通貨単位でMaximum DrawDownを設定します。この関数は、同名のグローバル変数に、口座 通貨での最低ドローダウンを-Negativeに設定します。値がマイナスなので、逆に考えることになります。例)Highest_Equity=10,000。Account_Equity=9,500。ドローダウンの最大値を-500ドルにしたい。9,500 - 10,000]と計算されます。そして、Temporary Draw Down が -500 よりも小さい場合、それを新しい MaxDD として登録したいのです。

2)ストラテジーテスターの スプレッドは、現在多くの人が支払うスプレッドよりもはるかに高いです。多くのブローカーがsub-pipsを提供しているので、私の意見です。価格データはそれほど重要ではありません。EAは1分足で処理するのではなく、そのチャートのm1バーのオープニングで処理します。m1バーが大量にないデータでない限り、この方法は十分信頼できるはずです。

3) 私が得た結果は、これを組み立てて最初に得た結果です。その後、他のテストを行ったが、あまり期待できない結果だった。しかし、私が実行した他の3つのテストでも、システムはわずかに利益を得るか、わずかに利益を得ないまま終了しました。しかし、最適化されていないランダムなシステムが、2008年の危機を乗り越え、2012年まで生き残ったことは事実です。このようなシステムを最適化することは、さらなる研究の対象になるかもしれませんね。例:あなたの個人的な方向性、**ランダムよりも悪いことはできません右;)

4) もちろん、あなたがいつも面白いと教えているシステムと、そのシステムに関して気になることを投稿してください。私はその問題点を解決するためのアイデアを提案しようと思います。

 
ssn: また、On tickを呼び出しているようですが、これはHighestEquity()関数の中で呼び出すべきではありません。これはHighestEquity()関数の中で、つまり株式の高値が更新されたときに呼び出すべきではありませんか。私のコメントが外れているように見えたらすみません まだ私自身がストラテジーテスターでEAを実際にテストしていないのですが、あなたがこれを書いたときに何を考えていたかを感じ取ることができると思いました。

関数 全体。

void BrkEveEquity(){
    if(SysMagTotCnt()!=0){return;}
    BrkEveEquity=HighesEquity;
    BrkEveEquTme=(int)TimeCurrent();
    SysCloseMode=false;
}
Break-Even Equityは私が以前から使っているものです。この関数はEquity_High関数の中にあることもあるのですが、以下の理由でずいぶん前にその場所から外したと思います。1) Break-Even Equity が Equity_High の中にあるのなら、Equity_High で代用できるので、BE は必要ない。2) System_Magic_Total_Count==0 の時ではなく、Account_Equity が High になった時に Equity_High を設定したい。 3) All_Symbols が終了した時に Break_Even を設定したい。これはLiveで取引する場合、以下のようなメリットがあります。全ポジションを決済すると、マイナスのスリッページが発生する可能性がある。 新しい目標は、例えばAccount_Balance+ Target$$ ではなく、 Equity_High + Target$$ になる。
 

- はい、DDは陰性です、それは見ていませんでした。Thx

- m1の建値にも bidとaskがあると思います。エントリーがbidの場合、askでエグジットする必要があります(例:ショートした場合)。mt5のデータとカスタム固定スプレッドでテストしてみましたが、結果は目に見えて違いますね。

- テクニカルをベースにしたエントリーであれば、ランダムシグナルを使った方法が良いと思います。最適化を省くことができれば、もっと良いはずなのですが...。と思うのですが...。)

- 私が投稿するシステムはSOMを使用しています...実際には再利用可能なクラスとなります。最終的な微調整が必要ですが...。

- さて、これでBEはクリアです。MinPerMinLotは固定変数で、すべてのポジションをクローズしてからの時間に比例してボリュームを設定するために使用するのですか?

Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
ssn:

- はい、DDは陰性です、それは見ていませんでした。Thx

- m1の建値にも bidとaskがあると思います。エントリーがbidの場合、askでエグジットする必要があります(例:ショートした場合)。mt5のデータとカスタム固定スプレッドでテストしてみましたが、結果は目に見えて違いますね。

- テクニカルをベースにしたエントリーであれば、ランダムシグナルを使った方法が良いと思います。最適化を省くことができれば、もっと良いはずなのですが...。と思うのですが...。)

- 私が投稿するシステムはSOMを使用しています...実際には再利用可能なクラスとなります。最終的な微調整が必要ですが...。

- さて、これでBEはクリアです。MinPerMinLotは固定変数で、すべてのポジションがクローズされてからの時間に比例してボリュームを設定するために使うのですか?

1) どういたしまして。

2)同感です。mt5のスプレッドを固定できればいいのですが。でも、現実的なスプレッドでテストして、自分をごまかさないことも重要です。

3) 私の経験では、最適化されたシステムでは、1ヶ月のライブテストは、通常、期待される結果と全く異なるように見えます。このテスト方法は、私のライブテストでは、期待された統計値を出すが、ストラテジーテスターの中で死ぬのと同じ方法で死ぬことが多い。

4) k

5) そうです。しかし、「account_equity が >= break-even equity であったときから」と見るのがよりよいでしょう。Break_Even_Equity関数からSet_Break_Even_Timeを取り除きました。個々の変数に独自のset_functionを設定する方が、別のset_functionに束ねるよりもはるかに再利用性が高いと実感しています。

次はトレンドフォローのシステムで、トレンドが進むにつれてロットを追加していこうと考えています。

 
Ubzen:

1) どういたしまして。

2)同感です。mt5でスプレッドを固定できればいいのですが。でも、現実的なスプレッドでテストして、自分をごまかさないことも重要です。

3) 私の経験では、最適化されたシステムでは、1ヶ月のライブテストは、通常、期待される結果と全く異なるように見えます。このテスト方法は、私のライブテストでは、期待された統計値を出すが、ストラテジーテスターの中で死ぬのと同じ方法で死ぬことが多い。

4) k

5) そうです。しかし、「account_equity が >= break-even equity であったときから」と見るのがよりよいでしょう。Break_Even_Equity関数からSet_Break_Even_Timeを取り除きました。個々の変数に独自のset_functionを設定する方が、別のset_functionに束ねるよりもはるかに再利用性が高いと実感しています。

次はトレンドフォローのシステムで、トレンドが進むにつれてロットを追加していこうと考えています。

4)...
ファイル:
SignalSOM.mqh  24 kb
 
ssn: 4)...
???ルールに 従った追加のものはありますか?#1、#3、#4が抜けているように見える。