コードとしては、if (OrderSymbol() == Symbol()...) then if (OrderSymbol()!= Symbol()) continue; が使われていれば、どちらかは必要ないのです。
for (int k = 0; k < OrdersTotal(); k++) これを次のように置き換えた方がよいでしょう。
for (int k = OrdersTotal()-1; k >=0 ; k--)とすると、より安全です。
このように書きました。
if(NumberOfPositionsSell(Symbol())==1 && NumberOfPositionsBay_otl(Symbol())==1 &&GetOrderLotsOtlBay(Symbol())==start_Lot*2 &&GetOrderLotsSell(Symbol())==start_Lot)
{
for (int kk = OrdersTotal()-1; kk >=0 ; kk--)
{
if (OrderSelect(kk,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
OrderModify(OrderTicket(), NormalizeDouble(b+Point+spred, Digits),sl_buy_otl,tp_buy_otl,0);
Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otl, Digits)+"\n"+"sl_buy_otl = ",DoubleToStr(sl_buy_otl, Digits)+"\n"+" цена открытия бай стоп = ", DoubleToStr(b+Point+spred, Digits)+"\n"+"OrderSymbol() = ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
}
if (OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
sl_sell_otl=NormalizeDouble(b+spred+Point, Digits);
OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
}
}
}
}
а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет
編集パネルにSRCボタンがあり、コードは自動的にそこに色づけされます ;)
コードとしては、if (OrderSymbol() == Symbol()...) then if (OrderSymbol()!= Symbol()) continue; が使われていれば、どちらかは必要ないのです。
for (int k = 0; k < OrdersTotal(); k++) これを次のように置き換えた方がよいでしょう。
for (int k = OrdersTotal()-1; k >=0 ; k--)とすると、より安全です。
このように書きました。
gbpusdの保留中の注文を削除し、そこからEAを削除した途端、ユーロの注文がすぐに修正された
gbpusdの保留中の注文を削除し、そこからEAを削除した途端、ユーロの注文がすぐに修正されました。
皆さん、こんにちは。皆さん、この5年越しのEAテストは 成功したと言えるのでしょうか?それとも、収益性が小さく、ドローダウンが大きいのでしょうか。私の意見を聞きたいのですが、テスターのデータと実際の口座(アルパリのターミナルでテストしました)とはかなり違うのでしょうか?結果を示しています。
皆さん、こんにちは。皆さん、この5年越しのEAテストは成功したと言えるのでしょうか?それとも、収益性が小さく、ドローダウンが大きいのでしょうか。私の意見を聞きたいのですが、テスターのデータと実際の口座(アルパリのターミナルでテストしました)とはかなり違うのでしょうか? 結果を示しています。
これではドローダウンが大きく、採算が合わないのでは...。ファンドのドローダウンはどのくらいですか?
あるいは、そうかもしれません。
相対値:0.78%)
Max Money: 97.81% ))
ドローダウンが大きく、収益性も少し低いのですが...。ファンドのドローダウンはどのくらいですか?
そうかもしれませんね。
相対値:0.78
ファンドの最大数97.81% ))
EAで独自のインジケーターを使用していますが、テスト中に視覚的に成長しているのがわかり、条件に従って買いを開くはずなのですが、それが起きないのです。
ログには以下のようなエラーが表示されます(2種類あるので、1つずつ表示しています)。
TestGenerator: データが一致しないエラー (2013.12.11 21:00 のボリューム制限 372 を超過)
TestGenerator: unmatched data error (low value 1.33097 at 2013.09.12 19:45 is not reached from lowest timeframe, low price 1.33105 mismatches.).
カスタムインジケーターの動作にクセがあるのでは?このEAを2ヶ月間いじくりまわして、無期限延期しています。
エラー129,138は、1つのEAで時々発生します。端末を再起動しないと解決しない。
Market Info機能を追加して、bidとaskを更新して確認したい。
エラー129,138を人為的に呼び出すことは可能か?
エラー129 - 価格が違います
エラー 138 - 新しい価格 (再引用)
取引要求を送信 する前に、RefreshRates()を使用して取引環境を更新するか、MarketInfo()から直接、最新の価格を取得します。
それを忘れてはいけない。
Expert Advisorとスクリプトは、履歴データの独自のコピーで動作します。エキスパートアドバイザーやスクリプトの初回起動時に、現在のシンボルのデータのコピーが作成されます。
Expert Advisor またはスクリプトを次に実行するたびに、最初に作成されたコピーが更新されます。Expert Advisor やスクリプトの実行中に、1つ以上の新しいティックが到着することがあり、データが古くなることがあります。
エラー129 - 価格が正しくありません
エラー 138 - 新しい価格 (再引用)
取引要求を送信する前に、RefreshRates()を使用して取引環境を更新するか、MarketInfo()から直接、最新の価格を取得します。
それを忘れてはいけない。
Expert Advisors とスクリプトは、履歴データの独自のコピーで動作します。エキスパートアドバイザーやスクリプトの初回起動時に、現在のシンボルのデータのコピーが作成されます。
Expert Advisor またはスクリプトを次に実行するたびに、最初に作成されたコピーが更新されます。Expert Advisor やスクリプトの実行中に、1つ以上の新しいティックが到着することがあり、データが古くなることがあります。
ありがとうございました。
何が問題なのかがわかった。
買うときに使いました。
私の知る限り、買いはaskですが、iClose(Symbol(),Period(),0)はbidから価格を取得します。これがエラーの原因になっている可能性があります。
しかし、そこで疑問が生じます。このEAはPipsではないので、価格がずっと買いゾーンにあり、ティックごとに更新されていました。今は次のような組み合わせで使っています。
なぜトレードが始まらないのか?EAがエラーでハングアップして、それ以上の値動きを見ないことが判明?
Expert Advisor のテンプレートはhttps://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4 から取得しました。
ご意見として、このEAのエラー処理機能に129と138のエラーのチェックを追加したほうがいいでしょうか?
その場合、どのようにすればよいのでしょうか?