![見出し画像](https://assets.st-note.com/production/uploads/images/117884055/rectangle_large_type_2_9f32403590de0a13bd2726854ddf6420.jpeg?width=800)
MagicNumberを引数に、一番良いポジションを利食いする(チェック機能_応用)
//<<<<<>>>>><<<<<>>>>><< マジックナンバー >><<<<<>>>>><<<<<>>>>>
input group "MagicNumber"
input int MagicNumber_bid = 1111; // bidマジックナンバー
input int MagicNumber_ask = 1112; // askマジックナンバー
OnInit()
特になし
OnTick()
advantage_position_delete(MagicNumber_bid);
advantage_position_delete(MagicNumber_ask);
advantage_position_delete(int Mag_p)
//+------------------------------------------------------------------+
//| MagicNumberを引数に、一番良いポジションを利食い |
//+------------------------------------------------------------------+
void advantage_position_delete(int Mag_p)
{
double best_ = 0;
ulong best_posNumber_ = 0;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
//保有ポジションを一つ選択
ulong posNumber = PositionGetTicket(i);
//選択したポジションが、実行されている通貨ペアと同じかどうかチェック
if(PositionGetInteger(POSITION_MAGIC) == Mag_p)
{
if(Mag_p == MagicNumber_bid)
{
if(best_ == 0)
{
best_ = PositionGetDouble(POSITION_PRICE_OPEN);
best_posNumber_ = posNumber;
}
else
if(best_ > PositionGetDouble(POSITION_PRICE_OPEN))
{
best_ = PositionGetDouble(POSITION_PRICE_OPEN);
best_posNumber_ = posNumber;
}
}
else
if(Mag_p == MagicNumber_ask)
{
if(best_ == 0)
{
best_ = PositionGetDouble(POSITION_PRICE_OPEN);
best_posNumber_ = posNumber;
}
else
if(best_ < PositionGetDouble(POSITION_PRICE_OPEN))
{
best_ = MathMax(best_,PositionGetDouble(POSITION_PRICE_OPEN));
best_posNumber_ = posNumber;
}
}
}
}
mytrade.PositionClose(best_posNumber_,10);
}
MQL5コード一覧はコチラ
この記事が気に入ったらサポートをしてみませんか?