//+----------------------------------------------------------------------------+double LastOrderProfit() {
double Profit=0;
datetime t;
int i, j;
for (i=0; i<OrdersHistoryTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderMagicNumber()!=Magic) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)
Profit=OrderProfit()+OrderSwap()+OrderCommission();
return(Profit);
}
//+----------------------------------------------------------------------------+
.
を挿入しています。 サイクルの問題やサイクル終了後の初期値の復元について
最後のトレードが利益を生んだのか、利益を生んでいないのかを答える関数はこちらです。
そして、その答えをゼロと比較することで、TP/SLをそのままにするか、変更するかを決定するのです。
皆さん、こんにちは。IN10TION NewsReaderのインジケーターに興味があります。EAに添付したいのですが。
赤い線が表示され(Market.TdOpen)、Market.Price.DOWN(赤)が表示されたら売り
赤線が表示され(Market.TdOpen)、Market.Price.UP(緑)が表示されたら、買い
iCustomを試しましたが、うまくいきません。
_yIN10TIONfNewsReaderov09.99kblite.ex4(115.59 KB) 削除
管理人さんには何度も申し訳ないのですが、まだ誰も半分も言ってくれないんです。これは、IsConnected()関数では正しく修正できないようなメッセージ、つまり接続失敗やリクエストなどをログに保存して出力するものです。そうでなければ、なぜEAが今何もしていないのかがわかりません。
ログファイルを読むには、以下のようなコードを提案してください。現在のログファイルを日付ごとに自動的に読み出して、プリンターに出力します。
どこで
部品からファイルを組み立てているところです。しかし、ファイル全体は必要なく、最後の一行だけでいいのです。修正にご協力ください。
EAを変更するためのヘルプが必要
Expert Advisorは逆張りで取引してください。
売り指値 注文の代わりに買い 指値注文
と買い指値注文の売り
最後の取引が利益を生んだのか、利益を生まなかったのかを答える関数はこちらです。
そして、その答えをゼロと比較することで、TP/SLをそのままにするか、変更するかを決定するのです。
この関数は、最後の 注文を必ず 返しますか?それとも、負けていない最初の注文を返して くれるのでしょうか?なぜ、チケットにチェックが入っているのですか?
私ならこうする。
これは、最後に閉じた注文を正確に見つけるために、あなたの機能を再設計したものです。
クローズド・オーダーが全くない場合は、0を返すという欠点がある。従って、これを使用すると、履歴にクローズド・オーダーがあるかないかを確実に知ることはできません。結局のところ、返されたゼロは、注文が全くないことを示すのではなく、ゼロで閉じていることを示すのです。
アドバイスをお願いします。
については、インジケータ値のレンダリングにのみ関心があります。 これより先 バーです。しかし、新しいバーを 開くと、古い値がチャートに残ってしまう...。このゴミを強制的に削除するにはどうしたらいいのでしょうか?バー[0]はインジケータ値を計算して表示し、バー[1]~[Bar-1]はこれらの値をリセットするという条件を指定することは可能でしょうか。
artmedia70:
注文が全く成立していない場合は、0を返すという欠点がある。従って、これを使用すると、履歴にクローズド・オーダーがあるかないかを確実に知ることはできません。結局、NULLが返ってきたからといって、注文がまったくないわけではなく、ゼロで決済されたことがわかる。
ありがとうございました。返信はありませんでしたが、以前私が質問した「利益の正しい計算方法」について回答していただきました。
アドバイスをお願いします。
については、インジケータ値のレンダリングにのみ関心があります。 これより先 バーです。しかし、新しいバーを開くと、古い値がチャートに残ってしまう...。このゴミを強制的に削除するにはどうしたらいいのでしょうか?バー[0]はインジケータ値を計算して表示し、バー[1]~[Bar-1]はこれらの値をリセットするという条件を指定することは可能でしょうか。
この関数は、最後の 注文を必ず 返しますか?それとも最初に遭遇した ものが不採算にならないのか?なぜ、チケットにチェックが入っているのですか?
私ならこうする。
これは、最後の閉じた順番を正確に見つけるために、あなたの関数を変換するものです。
もし、クローズド・オーダーが全くなかった場合は、ゼロを返すという欠点がある。したがって、これを使用する場合、履歴の中にクローズド・オーダーがあるかどうかを確実に知ることはできません。返されたNULLは、注文が全くないことを示すわけではなく、ゼロで決済されたことを示す。
1.この関数は,履歴の中で最大のティッカーを持つ注文を 見つけます.これは,最後に決済された注文を意味します(もちろん,例外的な場合を除き,決済時刻の最大値を持つバリアントが望ましいでしょう).
2.この条件では, 最初の注文は指定された TP/SL で発注され,2番目の注文のみ新しい TP/SL で発注することができます.つまり,この関数は最初の取引が 0 の場合のみ 0 を返すことができますが,履歴に決済済み注文がない場合は 0 を返しません.
最後にもうひとつ。あなたのバリアントでは、関数内でjと別のSELECTを使用することは冗長です。
で十分です。
Start()の冒頭で、バッファをEMPTY_VALUEで初期化する。
どうですか?int init()の後のインジケータの行の 設定にこんなのがあります。
SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,165); SetIndexBuffer(0,Buffer); SetIndexEmptyValue(0,0.0);