externdouble TPforBuys=1;
externdouble TPforSells=1;
externdouble TimeForEA=120;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
for(int a=OrdersTotal()-1;a>=0;a--)
{
double TPbuy = TPforBuys / 10000;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) &&
OrderType()==OP_BUY && OrderSymbol()==Symbol() ) // order type and Symbol checked here
{
double TPB=OrderOpenPrice()+ TPbuy;
// Close Buysif(Bid>TPB)
{
if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) ) // no need to check type and symbol hereif( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
{
Print("OrderClose failed, error: ", GetLastError());
}
elsecontinue; // if order has been closed move to the next position, no need to check if it's a SELL
} // end of if(Bid>TPB)
} // end of if( OrderSelect(a double TPsell = TPforSells / 10000;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) &&
OrderType()==OP_SELL && OrderSymbol()==Symbol() )
{
double TPS=OrderOpenPrice()- TPsell;
// Close Sellsif(Ask<TPS)
{
if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) )
if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
Print("OrderClose failed, error: ", GetLastError());
} // end of if(Ask<TPS)
} // end of if( OrderSelect(a
} // end of for(int a=OrdersTotal()return(0);
}
こっちのこと?
よくわからないのですが、これでいいのでしょうか?
もちろんです!すみません。考えもしませんでした!
このEAはスキャルピングのために作りました。EAはすべてのスキャルピング注文を1pipの利益でクローズする必要があります!長期注文を閉じないようにOrderOpenTime()というコマンドを使いました。スキャルピング注文は手動で設定します!これはTPのように動作しますが、1pipの利益のみです!
ありがとうございました。
なるほど、EAにノンスキャルピングの短期注文をクローズさせたくないんですね ... 。
OK、いくつかのコメント ... ...
1.ループは事実上何もしていません。ループの中で何をしたいのか、中括弧 { } で囲む必要があります ... ...
2.2つのOrderSelect()コールがありますが、もしすべてをループに入れたら、必要なのは1つだけです ... ...
3. 買い注文のクローズセクションは買い注文にのみ実行され、売り注文のクローズセクションは売り注文にのみ 実行される必要があります。
4. 1ピップの利益は4桁のペアのためにハードコードされているので、USDJPYのようなペアでは機能しません。
たぶん、こんな感じなんだろうなぁ ... ...
たぶん、こんな感じなんだろうなぁ ... ...