TPを5pip以下に設定するには? - ページ 4

 
これは正しいのでしょうか?過去100分間の注文だけをクローズします。
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
でいいのでしょうか?過去100分間の注文のみがクローズされます。

ほとんど、TimeCurrent() は最後のティックのサーバー時刻を表す datetime を与えます ... ...

注意:datetime 型 (1970年1月1日午前0時からの経過 数を表す整数値) です。

だから、あなたはそれを確認する必要があります... .

TimeCurrent()-OrderOpenTime() <=

100分 .... または (100 * 60) 秒

 

本当にありがとうございました。

それでは、よいお取引を

 

こんにちは。

EAを改造しようとしたのですが、うまく動きません。どこに間違いがあるのか、おわかりになりますか?

ありがとうございます。

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

これに変えてみて、これが「ちゃんと動くかどうか」を確認してみてください.

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

その通りです!EAは2時間以上経過していない注文のみをクローズします!問題は、1pip以降の注文を正しくクローズできないことです!しかし、どこに間違いがあるのかわかりません。

ありがとうございました。

 
ats:

その通りです!EAは2時間以上経過していない注文のみをクローズします!問題は、1pip以降の注文を正しくクローズできないことです!しかし、どこに間違いがあるのかわかりません。

ありがとうございました。

つまり、あなたが望むように動作しているということですね?私は怠け者なので、4ページにもわたる返信やコードを読んでいないのです。

だから実は、なぜあなたにそのような答えをしたのか、正確にはわからないのです :)

 
onewithzachy:

だから実は、なぜそのような答えをしたのか、よくわからないんです :)

インターネット上で正直な人を見るのはいいものです :-)
 
onewithzachy:

つまり、あなたが望むように動作しているのですね?Coz私はあなたが「適切に動作する」によって何を意味するのか分からないし、私は十分に怠惰なので、4ページの返信とコードを読んでいない。

ということで、実は、なぜそのような回答をしたのかよくわからないのですが......)

問題ありません!ありがとうございました。
 

これをやると ... ... ... ...

double TPB=OrderOpenPrice()+ TPbuy;

.どの注文の始値を使用していますか?OrderOpenPrice() 注意:"注文は最初に OrderSelect() 関数で選択されている必要が あります"