Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вместо (или вместе) с "Reverse" запишите в коммент тикет ордера который локируете. Тогда всё можно будет легко найти.
а вообще - это всё полумеры :-) надо в своём советнике поддерживать базу (список/таблицу) его ордеров. и в ней держать всю необходимую в работе информацию.
а вот наподобие классы.
как раз изучаю
а вот наподобие классы.
как раз изучаю
в коммент тикет ордера ? можно пример
?
Вот кусок кода из советника - пример пометки нового ордера магиком, равным тикуту исходного ордера. Тут отложки, но смысл тот же
Большую работу с компенсаторным ордеров провел
Большую работу с компенсаторным ордеров провел
Спасибо огромно, попробую
Посчитайте математически - закрыть ордер или открыть встречный компенсатор - это одно и то же.
Давайте рассмотрим ситуацию: у нас у обоих на счету 10 долларов. Спред для простоты равен 0.
Одновременно открываем BUY - совершаем покупку 0,01 лота.
Цена пошла вниз. В тот момент, когда цена ушла вниз на 50 пунктов
одновременно у меня закрываю позицию с убытком 50 пунктов,
а Вы открываете SELL 0,01 - ставите лок, замок, компенсатор, ...
У меня ордера отсутствуют, у Вас 2 встречных.
Куда бы цена ни ушла, у Вас суммарный убыток по двум ордерам 50 пунктов.
Чем Ваше положение лучше? У Вас 5 вариантов продолжить. В какой-то момент Вы можете:
1) одновременно закрыть оба ордера и мы сравняемся с убытком 50 пунктов.
2) Закрыть SELL. В этот момент открою BUY. Результат:
У нас у обоих открыта BUY, убыток те самые 50 пунктов.
Если цена идет вверх, хорошо, вниз - плохо. Позиции абсолютно равные.
3) Закрыть BUY. В этот момент открою SELL. Результат:
У нас у обоих открыта SELL, убыток те самые 50 пунктов.
Если цена идет вниз, хорошо, вверх - плохо. Позиции абсолютно равные.
4) Открыть еще одну SELL. В этот момент открою SELL. Результат:
У меня открыта SELL, у Вас SELL и еще два локированных ордера. Убыток те самые 50 пунктов.
Если цена идет вниз, хорошо, вверх - плохо. Позиции абсолютно равные.
5) Открыть еще одну BUY. В этот момент открою BUY. Результат:
У меня открыт BUY, у Вас BUY и еще два локированных ордера. Убыток те самые 50 пунктов.
Если цена идет вверх, хорошо, вниз - плохо. Позиции абсолютно равные.
Во всех вариантах финансовый результат одинаков.
Еще есть два варианта открытия встречного ордера с большим или меньшим лотом.
Они очевидны, их пропускаю
Если с этим согласны, можешь читать дальше.
Вроде бы доказал, что встречные, лок, замок - глупость.
А везде пишут, что надо. Противоречие.
Думал 5 лет и догадался, в чем смысл лока, замка, встречных ордеров, компенсаторов...
Надо подумать
Надо подумать
Вообще эта операция имеет смысл в основном для поставщиков сигналов, чтобы не портить кривую баланса
Вообще эта операция имеет смысл в основном для поставщиков сигналов, чтобы не портить кривую баланса
Вообще эта операция имеет смысл в основном для поставщиков сигналов, чтобы не портить кривую баланса
Алексей, добрый, видел Ваши уроки по классам (https://www.youtube.com/watch?v=DSX7MzC6ZLE), пытаюсь реализовать через классы, но с подсказкой STARIJ , написав просто по обычному, то теперь ордера открываются четко когда OrderProfit()<=OrderLots()*L*(-1)) по одному (L - это расстояние в пунктах, когда надо открыть компенсатор). Заметил, что Print ордера не пишется в журнале операций, если есть мысль почему буду рад прочесть.
а также хотел спросить как с помощью Print вывеси для какого именно ордера открыт компенсатор? действительно без классов не обойтись?
void CompensatorOrders()
{
int Compensator;
if(OrdersTotal()!=0) // без этого сразу открывается ордер OP_SELL так как первым стоит.
{
if (OrderType()==OP_BUY)
{
if (L!=0 && OrderProfit()<=OrderLots()*L*(-1)) //&& Bid<=OOP-L*Point
{
Compensator=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,0,0,"CompensatorOrders",Magic2,0,clrRed);return;
if(!Compensator)
{Print("Compensator #",OrderTicket(),", Количество Ордеров на Свече=",OrdersTotal(),", CompensatorOrders завершилась с ошибкой #",GetLastError());}
else Print("Ордер #",OrderTicket(),", Количество Ордеров на Свече=",OrdersTotal(),", CompensatorOrders успешно выполнена",", OrderOpTi=",TimeToString(OrderOpenTime(),TIME_DATE|TIME_SECONDS)," (",OrderOpenTime(),"), Bars=",Bars);
}
}
if (OrderType()==OP_SELL)
{
if (L!=0 && OrderProfit()<=OrderLots()*L*(-1)) //&& Bid<=OOP-L*Point
{
Compensator=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,slippage,0,0,"CompensatorOrders",Magic2,0,clrBlue);return;
if(!Compensator)
{Print("Compensator #",OrderTicket(),", Количество Ордеров на Свече=",OrdersTotal(),", CompensatorOrders завершилась с ошибкой #",GetLastError());} // не пишется в журнале почему-то
else Print("Ордер #",OrderTicket(),", Количество Ордеров на Свече=",OrdersTotal(),", CompensatorOrders успешно выполнена",", OrderOpTi=",TimeToString(OrderOpenTime(),TIME_DATE|TIME_SECONDS)," (",OrderOpenTime(),"), Bars=",Bars); // аналогично
}
}
}
}