アドバイザーを書く必要があります。思いついたことがあります。 - ページ 4

 
dimasik >>:
lascu.roman, ты можешь сделать чтобы ордера открывались не с рынка, а отложенниками??? Это важно, потому что брокер с рынка не принимает сразу установку SL и TP. Вот.

これは2つのステップで行われます。

1) 成行でオープン TP=0、SL=0

2)SL、TPを変更する。

それとも私が勘違いしていたのでしょうか?

 
meta-trader2007 >> :

実際にこのTSは、H1タイムフレーム以上(しかし、常にではなく、時には - ノートレンドの間に)利益を得ることができます。

メインはTPを使わないこと、トロールは3回以上の停止が必要です。

テストする場所を間違えたのでしょう =)

 
GarF1eld >> :

2つのステップで行います。

...

それとも、私が勘違いしていたのでしょうか?

DCを通常のものに変更した方が良い。

多分、テストする場所を間違えたのでしょう =)

ショボい話でテストする必要がある)

そして、チェックポイントについては、こうだ。


 
ちょっとだけ先取りしてみました(笑)。
 
meta-trader2007 >> :

DCを正常なものに変更したほうがよい。

質の悪い記事でテストする必要がある)

チェックポイントはこんな感じ。


保留中の注文に関するExpert Advisorに、次の注文のペアが開かれたときに前の注文を削除するように追加することは可能ですか?

とても良いと思います。トレードの流れが詰まることもありませんし、418エラーが出ますが

 
そして、すでに開いているもののうち1つがトリガーされたときに削除する)
 
extern bool Limits = TRUE; // TRUE - LIMIT orders; FALSE - STOP orders
extern double Distance = 10; // Probably less than zero
extern double TP = 144;
extern double SL = 55;
extern double TralSL = 34;
extern double Lots = 0.1;

double Spread;

void init()
{
  Distance *= Point;
  TP *= Point;
  SL *= Point;
  TralSL *= Point;
  
  Spread = Point * MarketInfo(Symbol(), MODE_SPREAD);
  
  return;
}

void TrailingOrders()
{
  int i, Total = OrdersTotal();
  double Difference, tp, sl;
  
  for ( i = 0; i < Total; i++)
  {
    OrderSelect( i, SELECT_BY_POS);
   
    if (OrderType() == OP_BUY)
    {
      sl = Bid - TralSL;
      Difference = NormalizeDouble( sl - OrderStopLoss(), Digits);
        
      if ( Difference > 0)
      {
        sl = NormalizeDouble( sl, Digits);
        
        OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
      }
    }
    else if (OrderType() == OP_SELL)
    {
      sl = Ask + TralSL;
      Difference = NormalizeDouble( sl - OrderStopLoss(), Digits);
        
      if ( Difference < 0)
      {
        sl = NormalizeDouble( sl, Digits);
       
        OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
      }
    }
  }
  
  return;
}

bool OrderScan( int TypeOrder )
{
  int i, Total = OrdersTotal();
  
  for ( i = 0; i < Total; i++)
  {
    OrderSelect( i, SELECT_BY_POS);
    
    if (OrderType() == TypeOrder)
      return(TRUE);
  }
  
  return(FALSE);
} 

void MyOrderSend( int TypeOrder, double open, double sl, double tp )
{
  if ( OrderScan( TypeOrder))
    OrderModify(OrderTicket(), open, sl, tp, 0);
  else
    OrderSend(Symbol(), TypeOrder, Lots, open, 0, sl, tp);
      
  return;
}

void OpenOrders( double H, double L )
{
  double open, tp, sl;
  
  if ( Limits)
  {
    if (! OrderScan(OP_BUY))
    {
      open = NormalizeDouble( L - Distance + Spread, Digits);
      tp = NormalizeDouble( open + TP, Digits);
      sl = NormalizeDouble( open - SL, Digits);
  
      MyOrderSend(OP_BUYLIMIT, open, sl, tp);
    }
  
    if (! OrderScan(OP_SELL))
    {
      open = NormalizeDouble( H + Distance, Digits);
      tp = NormalizeDouble( open - TP, Digits);
      sl = NormalizeDouble( open + SL, Digits);
  
      MyOrderSend(OP_SELLLIMIT, open, sl, tp);
    }
  }
  else
  {
    if (! OrderScan(OP_BUY))
    {
      open = NormalizeDouble( H + Distance + Spread, Digits);
      tp = NormalizeDouble( open + TP, Digits);
      sl = NormalizeDouble( open - SL, Digits);
  
      MyOrderSend(OP_BUYSTOP, open, sl, tp);
    }

    if (! OrderScan(OP_SELL))
    {
      open = NormalizeDouble( L - Distance, Digits);
      tp = NormalizeDouble( open - TP, Digits);
      sl = NormalizeDouble( open + SL, Digits);
  
      MyOrderSend(OP_SELLSTOP, open, sl, tp);
    }
  }
  
  return;
}

void start()
{
  static int PrevTime = 0;

  TrailingOrders();
  
  if ( PrevTime == Time[0])
    return;
    
  PrevTime = Time[0];
  
  OpenOrders(High[1], Low[1]);
  
  return;
}


mpeugep さん、テスト結果をここに投稿してください。

 

これらのEAをデモで走らせても、注文が出ない...。その理由は何でしょうか。

 
dimasik >> :

これらのEAをデモで走らせても、注文が出ない...。その理由は何でしょうか。

未決済注文は、対応する未決済ポジションがない場合に、新しいバーの形成の開始時に発注されます。

スタックを取り付けたテスターの好結果をここに書く。

 

DAXデモでexp_Higt-Low.mq4エキスパートをリアルタイムでテスト(5時間)したところ、最初は利益が表示され、その後、負けが始まりました。

ただひとつ言えることは、この方向性で仕事をすることは可能だということです。唯一の問題は、私のExpert Advisorが保留中の注文を含む 取引フローをロードしようとすることです。そのため、保留中の注文の1つがトリガーされたとき、または保留中の注文の新しいペアが開かれたときなど、保留中の注文を閉じるタスクがあるのです。

to mql4com

meta-trader2007さんが以前投稿されたexp_Higt-Low.mq4を上記のように追加していただけませんか?

明日も引き続きテストする予定です。