double Current_Loss, Sum_Loss; // текущий и суммарный убыток
int start() // -----------------------СТАРТ ЭКСПЕРТА---------------
{
//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
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;
}
}
}
}
}
//Print("Iteration at History = ", Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),// " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
...
...
}// конец старт
if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
現在はこんな感じです。
//+------------------------------------------------------------------+
//| mo_bidir.mq4
//| 5Mの時間枠で最適に動作します。
//+------------------------------------------------------------------+
#property copyright"著作権 © 2010 - モヌ・オグベ"
#define MAGIC 1234
#define IDENT "mo_bidir"
extern double lots = 1;
extern double stop_loss = 76; // 外付けのダブルストップロス
EXTERN DOUBLE TAKE_PROFIT = 750; // 外部のダブル テイクプロフィット
extern int steps = 5; // 保留注文のステップ
int start(){
if (OrdersTotal() == 0){ (オーダートータル() == 0){ (オーダートータル() == 0){)
OrderSend(Symbol(), OP_BUY, lots,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue)を実行。
OrderSend(Symbol(), OP_SELL, lots,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red)を実行。
OrderSend(Symbol(), OP_BUYSTOP, 0.5*lots,Ask+steps*Point, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue)を実行。
OrderSend(Symbol(), OP_SELLSTOP, 0.5*lots,Bid-steps*Point, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red)を実行。
}
return(0)です。
}
歴史上のコードブレークイーブンを探しています。持っているかもしれません。共有。 私はブレークイーブンのコードを持っていますが、それはオープン注文に基づいて動作します。 私は反対の信号で損切りを閉じ、信号で開くEAを持っています。そして今、あなたは赤字にどのくらい覚えて、第二などの注文がすでに考慮に過去の損失を取って、チャート上のゼロ利益のラインを見ているように情報を渡すためにこのブレークイーブンのコードを持ってする必要があります。Expert Advisor にはストップロスはありません。つまり、負けトレードはストップロスで決済されません。
毎回、必要な価格(終値でブレイクイーブン)に移動させ、注文を閉じて次の注文で古い価格を見たときに(ラインを)削除しないこと
ヒストリーのブレークイーブンコードを探しているのですが、どなたかお持ちではないでしょうか。
Breakevenのコードはあるのですが、未決済の注文をベースにしています。
注文に損失が出たときにうまく注文を出し、注文がゼロになったときに開くようにしています。 注文は、これまでの損失を考慮し、すでにチャート上のプロフィットラインのゼロラインを見ています。Expert Advisor にはストップロスがないため、負けトレードの決済はストップロスによるものではありません。
毎回、必要な価格(終値でブレイクイーブン)に移動し、注文を閉じて次の注文で古い価格を見たときにそれ(ライン)を削除しないでください
これは簡単なことではありません。
自分では実装できない。
負けトレードの時にラインを表示させて、ラインに達したら決済できるようにしたい。
つまり、負け注文があったときだけ引かれる線が必要なのですが、この線は、オープントレードのロットと過去の負けトレードの履歴に基づいて引かれることになります。もし私の理解が正しければ、ご質問の部分は、あなたのEAの連続した負けトレードの合計損失を考慮し、現在の市場注文の利益水準と比較して、損益分岐点を設定することでしょうか? 。
ストップライン、つまりストップロスもテイクプロフィットも持って いない。
前の決済した注文が重なるような形で、決済に行かなければならない価格帯のラインを表示したい。
スタートブロックの後ろに、カウントしてスタートブロックに情報を転送するブロックが必要で、この情報を使って、この価格ラインに到達したら取引を終了します。
グローバル変数が必要な場合は、それをグローバルターミナル、またはグラフオブジェクトにすることで、このグラフ上でのみ表示されます。多くのバリエーションがあります。
。
以下は私のコードセクションで、この特定のEAの連続した負けトレードの全損失を計算する役割を担っています(マジシャンによれば)。私は、ネットのアバランチの私の変種のためにそれを作った - あなたはあなたの必要性に応じて編集することができます - コードはコメントアウトされている...
グローバル変数
このコード部分の後、まさにこのEAの未決済注文をループして、その合計利益を計算することもできます。そして、この値と変数
と判断してください。
ヒストリーのブレークイーブンコードを探しているのですが、どなたかお持ちではないでしょうか。
Breakevenのコードはあるのですが、未決済の注文をベースにしています。
注文に損失が発生したときに、損益分岐点に到達した時点で開くようにすれば、うまくいくのですが。 注文は、これまでの損失を考慮し、すでにチャート上のプロフィットラインのゼロラインを見ています。Expert Advisor にはストップロスはありません。つまり、負けトレードはストップロスで決済されません。
すべてのクローズしたトレードの利益の合計を計算し、TotalCloseProfitなどの変数に保存します。そして、グラフィックなどの工夫をせずに、次のようなコード片を使用します。
ログを見てみた。
それが理由のようだが、意味がわからない。どなたか説明してください。そして、それを解決する方法は?