//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
質問 一連の負け注文を計算する方法は?
戦術を検証するために、何回連続でストップで決済した注文があるのか知りたい...特に最後の
みんな、本当に必要なんだ・・・・・。
私の場合はこうやって計算しています。
反復=あなたの感覚でのストップが損切りの終値であれば、連続した注文が何回ストップで引けたか。
ありがとうございます。 しかし、私が理解するところでは、このコードは、それが100トレード前であろうと、5 ......であろうと、履歴の中の全シリーズを見つけるのです。
いいえ、最も近いクローズドから選択して履歴を深く掘り下げ、クローズドが利益に転じた時点で、連続負けトレードの回数=Iterationを出力してシリーズを中断します。
こんにちは。
この組み合わせでいいのでしょうか?
私はこの作品が好きでした:)
私はこれが好きです:)
はエラーになるのでしょうか?
Spread=0となるバーの値を返す必要があります。
そのような値が見つからない場合、-1を返す。
こんにちは。
質問:OrderSend() は実行後、"0 "または"-1 "より小さい値を返すことができますか?このようなことに遭遇された方はいらっしゃいますか?それとも「資料」に記載されている内容が正しいのでしょうか。
トレードサーバーが注文に割り当てたチケット番号、または失敗した場合は -1 を返します。
私は水平線で仮想トロールを作りました、それはテスターでうまく動作しますが、最適化中にテスターはおそらくこれらの行で動作しません、なぜですか、そしてどのようにそれを修正するには?
なぜ水平線が必要なのですか?行の値を変数に格納すれば、ハッピーになれる!!!そして、Expert Advisorはより速く "考える "ようになります。また、横線は視覚的な効果だけで残してもかまいません。
その理由は、テスターはビジュアルモードでしかグラフィカルなオブジェクトを 扱えないからです。最適化の際、ビジュアルモードが全くない...。ただし、TFやペア名の後に括弧で「ビジュアル」と書いてチャートを残しておくようにするとか...。しかし、それが役に立つかどうかはわからない。確認はしていません。このチャート(以前、可視化テストに使用したもの)で注文が出たり消えたりしているのが見えるので、参考になるかと...(チャートはまだ起動していないのですが)。もしかしたら、誰かが教えてくれるかもしれませんね。
私からのアドバイスは、グラフィカル・オブジェクトからのパラメータ抽出を使用しないことです。これらのパラメータを変数に格納しておくと...。グラフィックオブジェクトを変数にするな!:))))
こんにちは。
質問:OrderSend()は実行後、"0 "または"-1 "より小さい値を返すことができますか?このようなことに遭遇された方はいらっしゃいますか?それとも「資料」に記載されている内容が正しいのでしょうか。
追伸:テレパスとして働きながら、他人のコードのエラーを探す...ハイ!
なぜダメなのか?再注文により 注文が開けない場合など。
このために、例えばこのような、注文を実際に開くためのループがあります - エラー処理で開くための試行回数。