раздельный трейлинг

 
раздельный трейлинг
Как можно решить такую траблу...

Сделать раздельный трейлинг стоп, т.е. чтобы при одном условии трейл был 20(к примеру), а в другой 40, я выставил параметры

if ------- then
{
SetOrder(OP_BUY,-----);
zz=OrderValue(1,VAL_OPENPRICE);
SetOrder(OP_SELLstop,-----);
Exit;
}
else if------ then
{
SetOrder(OP_SELL,--------);
z=OrderValue(1,VAL_OPENPRICE);
SetOrder(OP_BUYSTOP,-----);
Exit;
};
};

тоесть присвоил ZZ цену открытия позы, затем в трейлинге(их 2 стандартных модуля, один для трейла 20, другой для 40), поставил
for cnt=1 to TotalTrades
begin
If Ord(cnt,VAL_TYPE)=OP_BUY and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask>zz then трейлить бай.


Но еще есть отложенный ордер, и его нужно отрейлить с 20 пипами, для этого я пишу
If Ord(cnt,VAL_TYPE)=OP_SELL and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask<zz then трейлим селл.

//************************ трейл по обычным позам

for cnt=1 to TotalTrades begin
If Ord(cnt,VAL_TYPE)=OP_BUY and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask>zz then
{
If (Bid-Ord(cnt,VAL_OPENPRICE))>(TrailingStop*Point) then
{
If Ord(cnt,VAL_STOPLOSS)<(Bid-TrailingStop*Point) then
{
ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),
Bid-TrailingStop*Point,Ord(cnt,VAL_TAKEPROFIT),cyan);
Exit; }; }; };

If Ord(cnt,VAL_TYPE)=OP_SELL and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask<z then
{
If (Ord(cnt,VAL_OPENPRICE)-Ask)>(TrailingStop*Point) then
{
If Ord(cnt,VAL_STOPLOSS)>(Ask+TrailingStop*Point) or
Ord(cnt,VAL_STOPLOSS)=0 then
{
ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),
Ask+TrailingStop*Point,Ord(cnt,VAL_TAKEPROFIT),Magenta);
Exit; };}; }; end;


//************************ TrailingStop по отложенным
for cnt=1 to TotalTrades begin
If Ord(cnt,VAL_TYPE)=OP_BUY and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask>z then
{
If (Bid-Ord(cnt,VAL_OPENPRICE))>(TS_ord*Point) then
{
If Ord(cnt,VAL_STOPLOSS)<(Bid-TS_ord*Point) then
{
ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),
Bid-TS_ord*Point,Ord(cnt,VAL_TAKEPROFIT),Yellow);
Exit; };}; };
If Ord(cnt,VAL_TYPE)=OP_SELL and OrderValue(cnt,VAL_SYMBOL)=Symbol and ask<zz then {
If (Ord(cnt,VAL_OPENPRICE)-Ask)>(TS_ord*Point) then
{
If Ord(cnt,VAL_STOPLOSS)>(Ask+TS_ord*Point) or
Ord(cnt,VAL_STOPLOSS)=0 then
{
ModifyOrder(Ord(cnt,VAL_TICKET),Ord(cnt,VAL_OPENPRICE),
Ask+TS_ord*Point,Ord(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
end;




т.е. если поза открылась в БАЙ, но пошли в селл, то срабатывает отложенный(при этом открытая поза не закрывается), у отложенного трейл должен быть меньше, чтобы закрыться с +, если цена всетаки пошла дальше вниз, то старая поза закрывается по стопу, а той что отложенная мы компенсируем часть потерь, если же вернулись в бай, то отложенный закрывается с мелким +, и плюс + от открытой старой...


проблемма в том, что я немогу ввести переменную типа lose=0, которая будет менять значение, потому как отложенный, после открыьтия станет обычным ордером, и прога несможет их различить, чего можно зделать, и как быть...

Заранее спасибо