オープントレードのチェックに問題がある - ページ 7

 
dazamate:
ええ、ちょうどあなたのコメントをもう一度読んで、私がやったことは間違っています。
は私にバーの開始時刻を与えないだろう私はTime[0]を使用しなければならないのですか?


はい、または............。

tradeopened = TimeHour(TimeCurrent());
 
OrderDelete(OrderTicket( ) );  

これでラプターは直りました。


--------->http://clip2net.com/s/14aYs

 
dazamate:

Raptorはこれで直りました。


--------->http://clip2net.com/s/14aYs

笑)お役に立ててうれしいです.. . :-)
 

Mate you have been a lot of help I finally have the ea in a state where I can start tuning up the strategy.ありがとうございました。でも、もう私のことは聞かないでしょうね、残念です。


WHRoederにも大感謝です。
 

す、すごい...終わったと思ったでしょ(笑)


移動平均の 値からストップロスをトレールするコードを追加してみました。このコードは買い取引ではうまくいくのですが、売り取引ではうまくいきません。私は何も発見できないのですが、もしかしたら皆さんは発見できるかもしれません。


// Trailing Stop Code 

   if(Tradeopen()==true && emastoptrail==TRUE)                                  // Trades are open and Trailing stop feature is turned on
    {
      for(int tnumber2 = OrdersTotal()-1; tnumber2 >= 0 ; tnumber2--)                   //scan through open orders
       {
        if (OrderSelect(tnumber2, SELECT_BY_POS) && 
            OrderMagicNumber()==Mnumber3)                                                // The orders magic number is the same as the magic number used the profit trade
            {                                          
          
            if(OrderType()==OP_BUY && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) > OrderStopLoss() ))       // The stop loss is less than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);  // Modify Stop to MA value
               }
            
            if(OrderType()==OP_SELL && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) < OrderStopLoss() ))       // The stop loss is more than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);   // Modify Stop to MA value
               }
            }
       }
     }
 

トレーリングストップのコードが問題なのではないのかもしれません。保留中の 注文を一定時間後に削除するコードに問題があるのです...


// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'

   if((iBarShift(Symbol(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true)              // Check to see if pending orders have expired
     {
        for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)))       // The orders magic number is the same as the magic number used in this ea
          
               {
                OrderDelete(OrderTicket( ) );                                            // Delete it
               }
        }
       
     }

各トレードが開かれた後、私はこれも実行します...

tradeopened = TimeHour(TimeCurrent());

私はコメントします...

(iBarShift(Symbol(),60 ,tradeopened)

そしてそれは1000から始まり、ただ新しいバーごとにカウントし続け、私が実行するときにリセットされません...

tradeopened = TimeHour(TimeCurrent());


これは、保留中の注文を削除するためのチェックを常に真にして、もし取引が次のバー内でトリガーされなければ、保留中の注文はすぐに削除されます -__- 。

あ~HELP(笑)

 

直ったかもしれません。

取引削除のためのもう一つのチェックは、保留中の注文を 開くことができる最大許容時間を後ろにずらし、取引が開かれた時間と一致するかどうかを見ることでした。)

  for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea
              (iTime(   Symbol(), 60, pendinglimit) == tradeopened))
               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
dazamate:

私はそれを修正した可能性があると思います....

私は、取引を削除するためのもう一つのチェックが、保留中の注文を開くことができる最大許容時間を後ろにずらし、それが取引が開かれた時間と一致するかどうかを見ることであるように、それを変更しました:)

私が想像していたものとほぼ同じです。

tradeopened変数を使用する問題があります ... オープントレードがあり、EAがシャットダウンされた場合、その変数の情報を失う ... なぜそれをOrderOpenTime()に置き換えて、このようなことをしない ... .

for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea

              (iBarShift(OrderSymbol(),PERIOD_H1 ,OrderOpenTime()) - pendinglimit) <= 0));    //  <----------- this . . .

               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
ただ、以前はibarshiftを使用していたのですが、なぜか1000以上出力されていました。
 

また、raptorは、私はあなたの脳を拾う必要があります...再び:)


移動平均の 値を度数に変換する方法ってあるんですか?今、数学のフォーラムラスを探してググっているところです。そうすれば、横ばい相場の検出や、上下のトレンドを明確にすることが容易になると思います。