Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как можно решить такую траблу...
Сделать раздельный трейлинг стоп, т.е. чтобы при одном условии трейл был 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, которая будет менять значение, потому как отложенный, после открыьтия станет обычным ордером, и прога несможет их различить, чего можно зделать, и как быть...
Заранее спасибо