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

 
売りと買いの 注文を修正しました。私はユーロスドだけを取引しているので、シンボルに問題はありません。EAを使用していないので、注文はすべて手動で行っています。問題は、スキャルピングの注文と長時間の注文をどのように区別して決済するかです。
 
extern double CloseforBuy=1.4;
extern double CloseforSell=1.3;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

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

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


{
if(OrderType()==OP_BUY)
{
if(Bid>CloseforBuy)
{
for(int a=OrdersTotal()-1;a>=0;a--)
if(OrderSelect(a,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----

}}
if(OrderType()==OP_SELL)
{
if(Ask<CloseforSell)
{
for(int b=OrdersTotal()-1;b>=0;b--)
if(OrderSelect(b,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----
}}

return(0);
}
 

あなたはこれを行うことはできません... ...

if(OrderType()==OP_BUY)

OrderType()のドキュメントを読むと、"Note: order must be selected by OrderSelect() function." と書いてあります。

試してみてください。

if(Bid>CloseforBuy)
   {
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());

   }
 
deVries:

25pipsでtpを設定し、5pipsで決済すればいいのですね。

はい、でも突然5pips以上価格が変動 したら、注文の決済が間に合わなくなります。それはリスクの一部です。

よろしくお願いします、そして楽しいトレードを!

 
RaptorUK:

あなたはこれを行うことはできません... ...

OrderSelect() の後まで ... ...OrderType() のドキュメントを読むと、"Note: order must be selected by OrderSelect() function." と書いてあります。

試してみてください。

ありがとうございました。素晴らしい!!!

すべての注文ではなく、買い/売りのうちの1つをフィルタリングしてクローズする提案はありますか?そうすれば、スキャルピングが可能になり、長期の注文を維持することができます。

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

 
ats:

ありがとうございます。素晴らしい!

すべての注文ではなく、買い/売りのうちの1つをフィルタリングしてクローズする提案はありますか? そうすれば、スキャルピングと長期注文を維持することが可能になります。

おそらくですが、それはあなたの戦略によって決定されます。どの注文をクローズし、どの注文を実行したままにするか、それが決まったら、コードを書くのは簡単なはずです。
 

どの注文で決済するかは、簡単です。それがスキャルピングの注文ですでは、最後の注文を言いましょう

 

基本的な考え方は1.長期ポジションを保有し、スキャルピングを行いたい。

2.保留注文を 設定する。

3.EAをオンにします。

4.EAがTHIS注文のみをクローズする

5.EAをオフにする

 
ats:

どの注文で決済するかは、簡単です。それがスキャルピングの注文ですでは、最後の注文を言いましょう

最後に出した注文は、注文のポジション番号が一番大きいはずです ... OrderOpenTime() でダブルチェック できます。
 
RaptorUK:
最後に発注された注文は、最大の注文位置番号を持つはずです ... OrderOpenTime() でダブルチェックすることができます。

いいアイデアですね。思いつきませんでした