ゴゲッターEA - ページ 2

 
Maji:
正直なところ、私はあなたのお役に立てるかどうかわかりません。第一に、そのために時間を割かなければならず、それが今、私の負担になっているからです。第二に、今まで私は「指標」にすべての描画を任せていて、EAを使ったことがないからです。それは可能であり、私は理論が同じであると思います。

Codersguruが線や矢印などの描画に関する章を書いたと思います。それを読んでみてください。

繰り返しになりますが、コピペはやはり自分が何をやっているのか理解する必要があります。自助努力に勝るものはなく、その点をよく証明していますね。これからも頑張ってください。

OK,了解です、頑張ったからには認めてあげます。 TGIF!というわけで、今回はこの辺で。休息に値する。

インジケータを使った描画の件...私はそれがどのように達成されるかは(ある程度)気にしませんが、ただ達成されることが重要です...もし、チャートにオープニングとクローズを矢印で表示するインジケータを作ることができれば、それも有効だと思います...私のライブ口座は、私が何も指示しなくてもテスターで勝手にすべてを描きますが、一方私のデモ口座では... 問題が発生します。

複数のトレードのタイミングが気になるのですが、'tick mode' を使用すると改善されるのでしょうか?フォワードテストで見ていますが、1つのバーに1つのトレードを行うので、シグナルが出た後、ピップワイズでかなり離れたところにトレードを置くことができます。もしシグナルで5つのポジションを持つなら、シグナルの30分後に分散させるのではなく、シグナルと同時に持たせたいのですが...(苦笑)

 

ビルド1.01 -longs

これは、私が少しやり直したあるシグナルが動作します。gogetshortsとは使用する移動 平均とシグナルロジックの一部に違いがあります...longsで動作していたオリジナルのgoggetterからシグナルを取り出し、もう少し遊んでみました。

これはGPB/USDの5mTFが一番好きです。他の時間枠ではかなりクラッシュします。

を楽しんでください、あなたの結果/問題点などを投稿してください。

ファイル:
 
eric79:
こんにちは、素敵なカーブに仕上がっておめでとうございます。このテストのモデリング品質が改善される可能性があります。90%あればもっと良いですね。

私はGGs 2.11でそれに非常に近いものを得ています。

私はバージョンとビルド番号を 使うのに慣れていません...これが私の最初の冒険なので...これはファクトイドフォーラムからGrahamによって加えられました...追跡するためにもう一つです...これらは現在チャートウィンドウに現在のビルドとバージョン番号を持つべきです... 同じ論理とコードただ良い化粧品です。

この2つをデモでフォワードテストさせながら、改良に取り組んでいます。

ファイル:
 

この中で、さらにエントリーシグナルやパラメーターを 開発していきたいと考えています。

 

ある日うまくいっていたものが、次の日にはうまくいかなくなるというのは本当に不思議なことで、私は何も変更していないのですが...。

ストラテジーテスターに ある私のEAは、「maxopentrade」の設定を変更すると反応しません...何があっても2つのトレードを使います。

先週は一度に5つの取引を許可すると言えば一度に5つの取引を許可し、一度に1つの取引を許可すると言えば一度に1つの取引を許可した......。私はそれが動作するのを見たことがある!

今、私はそれが私を救うために動作させることができません。

と思っていたら、if MaxOpenTradeの行の括弧か何かを紛失していました...。

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

改善されず、MaxOpenTrade コントロールを無視したままです。

2つのうちどのシグナルを変更したかを記録しておくと、役に立ちますね。

私は理性を失っているのです。

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

これは、同時に注文を修正することはできませんが...。注文の変更機能で 同じようなことをやって、全部を同じ時間に変更する必要があると思うのですが...。

 

よくわかりませんが、やりたいことをやるには正しい方法とは思えません。

次のような関数を 使います。

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

あなたのプログラムでは、次のように呼び出します。

if CountTrades<MaxTrades then....

また、forループでカウントアップする癖をなくし、カウントダウンのスタイルにしましょう。これは、取引を終了するときに便利で、一般に、より一貫したコーディングスタイルになります。

がんばってください。

 

GGlongs EaのすべてをCountTrades()で更新し、OrdersTotal()を使っていた以前のCloseAll()も更新しました...だからこの特定の構築物のすべてが、カウントアップではなくカウントダウンになりました私はその関数を よく呼び出します。

EAは、複数の注文を同時に開き、それらを同時にS/LまたはT/Pすることは大丈夫なようです。

一方、それらを変更することは...不規則で、同時にそれらをすべて変更しない...。

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

レポートでは、このような改造の仕方は好きではないが、それにもかかわらず、より多くの利益をもたらしている......。

最終的にはこのままがいいのかもしれませんが、オープニングとクロージングでやっているように、同時に全部を修正する方法を知りたいのです。

 

さてさて...ここまで来たら...よく考えて...せっかくcounttradesのコードがあるんだから、それを改造してオーダーモディファイをする...こんな感じかな...。

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

基本を押さえたのですから、あとはあなた次第です。

グッドラック。

 
Maji:
さてさて...ここまで来たら...よく考えて...せっかくcounttradesのコードがあるんだから、それを改造して注文を修正するのはどうだろう...こんな感じかな...。

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

基本は押さえたので、あとはあなた次第です。

グッドラック。

これはうまくいきました...添付ファイルをご覧ください...

.htmファイルはアップロードするには大きすぎました...それは、それが同時にカウントダウン各順序を修正することを言うのに十分です...それはさらに共鳴して利益を上げています このばかな信号のために悪くないです。

ファイル: