[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 529

 
バーを削除し、価格からX単位で保留中の注文を追加しました。唯一残っているのは、4つの注文すべてが閉じるのを待つ代わりに、閉じた注文を個別にすぐに開くこと、および株式の割合に応じてロット計算を行うことです。
現在はこんな感じです。

//+------------------------------------------------------------------+
//| 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)です。
}
ファイル:
 
belck:
歴史上のコードブレークイーブンを探しています。持っているかもしれません。共有。 私はブレークイーブンのコードを持っていますが、それはオープン注文に基づいて動作します。 私は反対の信号で損切りを閉じ、信号で開くEAを持っています。そして今、あなたは赤字にどのくらい覚えて、第二などの注文がすでに考慮に過去の損失を取って、チャート上のゼロ利益のラインを見ているように情報を渡すためにこのブレークイーブンのコードを持ってする必要があります。Expert Advisor にはストップロスはありません。つまり、負けトレードはストップロスで決済されません。




毎回、必要な価格(終値でブレイクイーブン)に移動させ、注文を閉じて次の注文で古い価格を見たときに(ラインを)削除しないこと
 
belck:
ヒストリーのブレークイーブンコードを探しているのですが、どなたかお持ちではないでしょうか。
Breakevenのコードはあるのですが、未決済の注文をベースにしています。
注文に損失が出たときにうまく注文を出し、注文がゼロになったときに開くようにしています。 注文は、これまでの損失を考慮し、すでにチャート上のプロフィットラインのゼロラインを見ています。Expert Advisor にはストップロスがないため、負けトレードの決済はストップロスによるものではありません。

もし私が正しく理解していれば、ご質問の一部は、損益分岐点を設定するために、現在の市場注文の利益水準とさらに比較するために、あなたのEAの連続した負けトレードの損失の合計を計上することですか?
 
FAQ:

毎回、必要な価格(終値でブレイクイーブン)に移動し、注文を閉じて次の注文で古い価格を見たときにそれ(ライン)を削除しないでください

これは簡単なことではありません。

自分では実装できない。

負けトレードの時にラインを表示させて、ラインに達したら決済できるようにしたい。

つまり、負け注文があったときだけ引かれる線が必要なのですが、この線は、オープントレードのロットと過去の負けトレードの履歴に基づいて引かれることになります。
 
Roman.:
もし私の理解が正しければ、ご質問の部分は、あなたのEAの連続した負けトレードの合計損失を考慮し、現在の市場注文の利益水準と比較して、損益分岐点を設定することでしょうか? 。

ストップライン、つまりストップロスもテイクプロフィットも持って いない。

前の決済した注文が重なるような形で、決済に行かなければならない価格帯のラインを表示したい。

スタートブロックの後ろに、カウントしてスタートブロックに情報を転送するブロックが必要で、この情報を使って、この価格ラインに到達したら取引を終了します。

 
グローバル変数が 必要な場合は、それをグローバルターミナル、またはグラフオブジェクトにすることで、このグラフ上でのみ表示されます。選択肢はたくさんあります。
 
FAQ:
グローバル変数が必要な場合は、それをグローバルターミナル、またはグラフオブジェクトにすることで、このグラフ上でのみ表示されます。多くのバリエーションがあります。
これが私への答えか?
 
belck: しかし、歴史そのものによってブレイクイーブンブロックを書くことはできない。

以下は私のコードセクションで、この特定のEAの連続した負けトレードの全損失を計算する役割を担っています(マジシャンによれば)。私は、ネットのアバランチの私の変種のためにそれを作った - あなたはあなたの必要性に応じて編集することができます - コードはコメントアウトされている...

グローバル変数

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));
...
...
}// конец старт   

このコード部分の後、まさにこのEAの未決済注文をループして、その合計利益を計算することもできます。そして、この値と変数

Sum_Loss

と判断してください。

 
belck:
ヒストリーのブレークイーブンコードを探しているのですが、どなたかお持ちではないでしょうか。
Breakevenのコードはあるのですが、未決済の注文をベースにしています。
注文に損失が発生したときに、損益分岐点に到達した時点で開くようにすれば、うまくいくのですが。 注文は、これまでの損失を考慮し、すでにチャート上のプロフィットラインのゼロラインを見ています。Expert Advisor にはストップロスはありません。つまり、負けトレードはストップロスで決済されません。

すべてのクローズしたトレードの利益の合計を計算し、TotalCloseProfitなどの変数に保存します。そして、グラフィックなどの工夫をせずに、次のようなコード片を使用します。

if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}
 
utyff:


ログを見てみた。

それが理由のようだが、意味がわからない。どなたか説明してください。そして、それを解決する方法は?

エラーではありません。ログのエラーは、黄色ではなく、赤色のアイコンで表示されます。