//-------------------------------------------------------------------+ Команда на закрытие мин макс и предпоследнего ордеров в сетке профит = 0if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
flag_close3=1;
}
//-------------------------------------------------------------------+ Флаг на закрытие ордеровif(flag_close3==1)
ClosseMinMaxPenultimateOrdersZero();
//+----------------------------------------------------------------------------+//| Закрытие минимального максимального и предпоследнего ордеров профит = 0 |//+----------------------------------------------------------------------------+void ClosseMinMaxPenultimateOrdersZero()
{
int slipp = (int) MarketInfo(_Symbol,MODE_SPREAD)*2;
for(int i = OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if(OrderType() == OP_BUY)
{
if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
if(OrderClose(GetTicketPenultimateOrder(), FindPenultimateLots(), Bid, slipp) && OrderClose(GetTicketMinOrder(), GetMinLotOrder(), Bid, slipp) &&
OrderClose(GetTicketMaxOrder(), FindLastLots(), Bid, slipp))
{
SendNotification("Закрылся минимальный максимальный и предпоследний ордера на покупку: " + Symbol() + ", Баланс: " + DoubleToString(NormalizeDouble(AccountBalance(), 2))
+ ", Свободно денежных средств: " + DoubleToString(NormalizeDouble(AccountFreeMargin(), 2)));
Print("Максимальный и минимальный ордера на покупку успешно закрыты!");
}
else
{
Print("Не удалось закрыть максимальный и минимальный ордера на покупку!",GetLastError());
}
}
}
if(OrderType() == OP_SELL)
{
if(CalculiteProfitMinMaxPenultimateOrders() >= 0 && Drawdown >= DrawdownClosingMinMaxOrdersZero && FindPenultimateProfit() > 0)
{
if(OrderClose(GetTicketPenultimateOrder(), FindPenultimateLots(), Ask, slipp) && OrderClose(GetTicketMinOrder(), GetMinLotOrder(), Ask, slipp) &&
OrderClose(GetTicketMaxOrder(), FindLastLots(), Ask, slipp))
{
SendNotification("Закрылся минимальный максимальный и предпоследний ордера на продажу: " + Symbol() + ", Баланс: " + DoubleToString(NormalizeDouble(AccountBalance(), 2))
+ ", Свободно денежных средств: " + DoubleToString(NormalizeDouble(AccountFreeMargin(), 2)));
Print("Максимальный и минимальный ордера на продажу успешно закрыты!");
}
else
{
Print("Не удалось закрыть максимальный и минимальный ордера на продажу!",GetLastError());
}
}
}
}
}
}
}
//-------------------------------------------------------------------+ Команда на удаление линий отображающую среднюю цену мин и макс ордеров и текстаif(CountTrade() == 0 || Drawdown < DrawdownClosingMinMaxOrdersZero)
{
flag_close2=0;flag_close3=0;
24時間記憶しているのか?
いいえ。まだ、必要なものを実装する方法が見つかっていませんが、2回目のイテレーションで実装できるかもしれません;-)
マキシム・クズネツォフがその方法を教えてくれた。読まれましたか?
注文を間違って決済してしまう問題を解決するために、よろしくお願いします。
プラスの利益が得られると、エキスパートアドバイザーはオーダーグリッドの最初と最後のオーダーをクローズします。
デモ 口座では問題ないが、リアル口座では最後から2番目の注文だけがクローズされる。私は、注文のグリッド全体を閉じなければならないときにそのような問題に直面し、問題はrequotesにありました、その後、フラグが設定され、問題は解決されます。ここで私も同じことをしましたが、問題は解決していません。
フラグです。
ありがとうございます!!!!
フラグです。
ありがとうございます!!!!
旗はどこでリセットされるのですか?
ここに入れたら正解なんだろうけど
ここに入れれば、正しいことになる。
いいえ、この方法では、すべての注文が終了した時点でリセットされます。
すべての注文をクローズする必要がないことを考えると、チケットを再実行し、クローズするのがよいでしょう。
いいえ、この方法では、すべての注文が終了した時点でリセットされます。
すべての注文をクローズする必要がないことを考えると、チケットを再実行し、クローズする方がよいでしょう
ちょっと待ってください。
ちょっと待ってください。
が、このように
いいえ、この方法では、すべての注文が終了した時点でリセットされます。
すべての注文をクローズする必要がないことを考慮し、チケットをループしてクローズするのがよいでしょう。
クローズオーダー機能でテロップを通さないのですか?
が、このように
注文がない場合ということ