691
Блок 8-9 состоит из четырёх однотипных блоков, в которых вычисляются новые значения
отложенного ордера, используемые в торговом приказе. Рассмотрим один из них, для
ордера SellLimit:
case 3: // SellLimit
if (NormalizeDouble(Price,Digits) > // Если дальше, чем на
NormalizeDouble(Bid+TS*Point,Digits))//..заданное знач
{
New_Price=Bid+TS*Point; // Новая его цена
if (NormalizeDouble(SL,Digits)>0)
New_SL = New_Price+(SL-Price);// Новый StopLoss
if (NormalizeDouble(TP,Digits)>0)
New_TP = New_Price-(Price-TP);// Новый TakeProfit
Text= "SellLimit "; // Будем его модифи.
}
break; // Выход из switch
Новые параметры ордера вычисляются только в том случае, если текущая цена Price
находится дальше от текущей рыночной цены Bid, чем на желаемую дистанцию TS. Если
это так, то управление передаётся в тело оператора if, где вычисляется новая цена
открытия ордера New_Price. Новые значения StopLoss и TakeProfit вычисляются только
для ненулевых значений. При этом дистанции между заявленной ценой ордера и каждой
ценой стоп-приказа сохраняется неизменной.
Например, ордер SellLimit установлен по цене 1.2050, его StopLoss = 1.2073, а TakeProfit =
1. 2030. Допустим, в результате вычислений новая цена открытия ордера равна 1.2040. В
этом случае новые значения стоп-приказов будут такими: StopLoss = 1.2063, а TakeProfit =
1. 2020. Таким образом, в результате работы программы ордер модифицируется "целиком"
- все три основных параметра (цена открытия, StopLoss и TakeProfit) одновременно
смещаются вниз, сохраняя при этом дистанцию между собой.
В конце блока 8-9 выполняется проверка новых значений стоп-приказов на отрицательные
значения. Эта проверка полезна для того случая, если ранее установленный (другой
программой или вручную) стоп-приказ находился близко к нулевой цене, например, на 1
пункт выше нуля. В этом случае при смещении ордера вниз на расстояние более одного
пункта новая цена одного из стоп-приказов получит отрицательное значение. Если это
значение было бы заявлено в торговом приказе, то он был бы отклонён клиентским
терминалом.
Здесь необходимо отметить недостаток подобных небольших программ - как скриптов,
так и экспертов. Представленная программа modifyorderprice.mq4 очень ограничена в