[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1099

 
kolyango:

Если открыт ордер OP_BUY и цена его Stoploss стоит на 100 п. ниже цены его открытия, а реальная цена поднялась от цены откр. ордера на 80 или более пунктов, то нужно переставить Stoploss на 50 п. выше цены открытия ордера. Как это будет выглядеть? Имеется ввиду код. И, вообще, как обозначить такое условие?

Если установленная в ордере цена Stoploss меньше цены откр. ордера, то

если настоящая цена больше или равна 80 п. от цены откр. ордера, то

перемодефицировать ордер и переставить Stoploss на 50 п. больше цены откр. ордера.

Кто-нибудь помогите реализовать такое условие...!!!


https://www.mql4.com/ru/search/?keyword=%D1%82%D1%80%D0%B5%D0%B9%D0%BB%D0%B8%D0%BD%D0%B3
 

Что такое поляризация?

 


А какой предопределённой переменной обозначается цена, на которой установлен СтопЛосс на рыночном ордере OP_BUY? Если, конечно, такая есть. Так?

OrderStopLoss()

 
kolyango:

А какой предопределённой переменной обозначается цена, на которой установлен СтопЛосс на рыночном ордере OP_BUY? Если, конечно, такая есть.

https://www.mql5.com/ru/search/
 

Если открыт ордер OP_BUY и цена его Stoploss стоит на 100 п. ниже цены его открытия, а реальная цена поднялась от цены откр. ордера на 80 или более пунктов, то нужно переставить Stoploss на 50 п. выше цены открытия ордера. Как это будет выглядеть? Имеется ввиду код. И, вообще, как обозначить такое условие?

После перебора ордеров:

Если установленная в ордере цена Stoploss меньше цены откр. ордера, то

если настоящая цена больше или равна 80 п. от цены откр. ордера, то

перемодефицировать ордер и переставить Stoploss на 50 п. больше цены откр. ордера.

Кто-нибудь помогите реализовать такое условие...!!!

Начало, наверное, таким будет (1-е условие)?

if (OrderOpenPrice()>OrderStopLoss())

 
kolyango:

Если открыт ордер OP_BUY и цена его Stoploss стоит на 100 п. ниже цены его открытия, а реальная цена поднялась от цены откр. ордера на 80 или более пунктов, то нужно переставить Stoploss на 50 п. выше цены открытия ордера. Как это будет выглядеть? Имеется ввиду код. И, вообще, как обозначить такое условие?

После перебора ордеров:

Если установленная в ордере цена Stoploss меньше цены откр. ордера, то

если настоящая цена больше или равна 80 п. от цены откр. ордера, то

перемодефицировать ордер и переставить Stoploss на 50 п. больше цены откр. ордера.

Кто-нибудь помогите реализовать такое условие...!!!

Начало, наверное, таким будет (1-е условие)?

if (OrderOpenPrice()>OrderStopLoss())



if(OrderType==OP_BUY){
if(OrderStopLoss()==0.0 && SL!=0 || OrderTakeProfit()==0.0 && TP!=0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-SL*Point,Digits),NormalizeDouble(Bid+TP*Point,Digits),0, Blue);
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble((Trailing+MinProfit)*Point,Digits)){
if(NormalizeDouble(Bid-Trailing*Point,Digits)>OrderStopLoss() || OrderStopLoss()<=0.0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Trailing*Point,Digits),OrderTakeProfit(),0, Ivory);

}}

 
DhP:


if(OrderType==OP_BUY){
if(OrderStopLoss()==0.0 && SL!=0 || OrderTakeProfit()==0.0 && TP!=0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-SL*Point,Digits),NormalizeDouble(Bid+TP*Point,Digits),0, Blue);
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble((Trailing+MinProfit)*Point,Digits)){
if(NormalizeDouble(Bid-Trailing*Point,Digits)>OrderStopLoss() || OrderStopLoss()<=0.0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Trailing*Point,Digits),OrderTakeProfit(),0, Ivory);

}}

Если открыт ордер OP_BUY и цена его Stoploss стоит на 100 п. ниже цены его открытия, а реальная цена поднялась от цены откр. ордера на 80 или более пунктов, то нужно переставить Stoploss на 50 п. выше цены открытия ордера. Как это будет выглядеть? Имеется ввиду код. И, вообще, как обозначить такое условие?

После перебора ордеров:



Если установленная в ордере цена Stoploss меньше цены откр. ордера, то

если настоящая цена больше или равна 80 п. от цены откр. ордера, то

перемодефицировать ордер и переставить Stoploss на 50 п. больше цены откр. ордера.

Кто-нибудь помогите реализовать такое условие...!!!

И он постоянно тогда будет модифицировать ордер взависимости от реальной цены и не только СтопЛосс, но и ТейкПрофит! Или нет?


if(OrderType==OP_BUY) // Здесь понятно! Если ордер на покупку
{
if(OrderStopLoss()==0.0 && SL!=0 || OrderTakeProfit()==0.0 && TP!=0) //
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-SL*Point,Digits),NormalizeDouble(Bid+TP*Point,Digits),0, Blue);
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble((Trailing+MinProfit)*Point,Digits))
{
if(NormalizeDouble(Bid-Trailing*Point,Digits)>OrderStopLoss() || OrderStopLoss()<=0.0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Trailing*Point,Digits),OrderTakeProfit(),0, Ivory);
}
}
Помогите расшифровать что этот код сделает и при каких условиях?
 
kolyango:

Если открыт ордер OP_BUY и цена его Stoploss стоит на 100 п. ниже цены его открытия, а реальная цена поднялась от цены откр. ордера на 80 или более пунктов, то нужно переставить Stoploss на 50 п. выше цены открытия ордера. Как это будет выглядеть? Имеется ввиду код. И, вообще, как обозначить такое условие?

Если установленная в ордере цена Stoploss меньше цены откр. ордера, то

если настоящая цена больше или равна 80 п. от цены откр. ордера, то

перемодефицировать ордер и переставить Stoploss на 50 п. больше цены откр. ордера.

Кто-нибудь помогите реализовать такое условие...!!!

Вижу, думать желания нету. Но всё же... посмотрите эту ветку - там найдёте для себя множество готовых функций, в частности и трейлинг-стоп, который вам нужен.

Разберитесь в уже рабочих кодах - и тогда уже сами сможете всё написать так, как именно вам и нужно...

 
kolyango:

И он постоянно тогда будет модифицировать ордер взависимости от реальной цены и не только СтопЛосс, но и ТейкПрофит! Или нет?


if(OrderType==OP_BUY)
{
if(OrderStopLoss()==0.0 && SL!=0 || OrderTakeProfit()==0.0 && TP!=0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-SL*Point,Digits),NormalizeDouble(Bid+TP*Point,Digits),0, Blue);
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble((Trailing+MinProfit)*Point,Digits))
{
if(NormalizeDouble(Bid-Trailing*Point,Digits)>OrderStopLoss() || OrderStopLoss()<=0.0)
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Trailing*Point,Digits),OrderTakeProfit(),0, Ivory);
}
}

Сначала только установит Стопы лосса и тейка.

Потом тралит профит, начиная с уровня MinProfit.

 
DhP:

СтопЛосс и ТейкПрофит уже установлены! Если установленный СтопЛосс меньше цены открытия ордера, то нужно только переставить СтопЛосс выше цены открытия на 50п.(вбезубыток), если настоящая цена больше или равна 80 п. от цены откр. ордера. И не надо постоянно переставлять СтопЛосс и ТейкПрофит!!!
Причина обращения: