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

 
etroplus:

Подскажите пожалуйсто!

Есть ли такая функция которая возвращает значение прибыли открытой позиции в пунктах?

(Bid - OrderOpenPrice())/Point;    //для ордеров BUY
(OrderOpenPrice() - Ask)/Point;    //для ордеров SELL
 
webgreck:

контролируйте, была ли смена даты, и используйте функции

MarketInfo(Symbol(),MODE_SWAPSHORT);
MarketInfo(Symbol(),MODE_SWAPLONG);
 
alsu:

контролируйте, была ли смена даты, и используйте функции


А как дату контролировать ? она же не меняется. Посмотрите на скрине. 

 
webgreck:


У меня много ордеров которы нужно по разному отрабатывать какието трейлить какитео фиксированно ставить цели и ставить паритеты но я не могу справиться с этой задачей т.к после того как сделка закроется и откроется из за свопа то у нее меняется номер тикета соответственно я уже не могу использовать номер тикета для индентификации позы чтобы знать что с ней нужно делать.

Подскажите пожадуйста как справиться с тем чтобы своп не ставил эти палки в колеса ? как индентифицировать ту или иную сделку и знать что например по ней я уже ставил паритет или нет и т.д


В этих случаях можно активно использовать "Магическое число ордера".
 
abolk:

В этих случаях можно активно использовать "Магическое число ордера".

    магическое число у меня и так используется для идентификации трех типов сигналов ...  но видимо надо действительно придумать как еще с помощью магического числа определять например что по данной позе я уже ставил паритет или нет ..  Вопрос только как ?? например можно было бы присваивать ордеру по которому поставили паритет определенное значение магического числа  но ведь редактировать магическое число насколько я знаю нет возможности  ... или я не прав ? мы можно дать ему значените только при установке ордера но что туда можно записать в магическое число чтоб потом можно было узнать что по данному оредру уже поставили паритет
 
webgreck:

оно у меня и так используется для индентификации трех типов сигналов ... но видемо надо действительно придумать как еще с помощью магического числа определять например что по данной позе я уже ставил паритет или нет ..

Если Ваш алгоритм тесно связан с идентификацией ордеров, то чтобы в этом случае Вам помочь, надо знать Ваш алгорит.
 
abolk:

Если Ваш алгоритм тесно связан с идентификацией ордеров, то чтобы в этом случае Вам помочь, надо знать Ваш алгорит.


Да вот этого вопроса я боялся ) т.к алгоритм не простой .. система довольно таки сложная и в 2-х словах не опишешь. И выкладывать код тоже смысла нет т.к там тысячи строк кода и никто в них разбираться и вникать не будет .. 

Я думал что есть какие то общие гибкие приемы для реализации идентификации ордеров ... магическое число в принципе для этого и существует но его нельзя редактировать чтоб помнить что с данным ордером уже сделали то или то ...  

 

Может всетаки есть возможность редактировать магическое число у ордеров ? 

 
webgreck:


А как дату контролировать ? она же не меняется. Посмотрите на скрине.

как не меняется? на вашем же скрине было 13 января, в 00:00 14-го своп клоз - своп опен
 
webgreck:


Да вот этого вопроса я боялся ) т.к алгоритм не простой .. система довольно таки сложная и в 2-х словах не опишешь. И выкладывать код тоже смысла нет т.к там тысячи строк кода и никто в них разбираться и вникать не будет ..

Я думал что есть какие то общие гибкие приемы для реализации идентификации ордеров ... магическое число в принципе для этого и существует но его нельзя редактировать чтоб помнить что с данным ордером уже сделали то или то ...

Может всетаки есть возможность редактировать магическое число у ордеров ?


А вы время открытия позиции преобразуйте в int - вот вам уже два магика для одной позиции. Если не ставили паритет, то есть только магик. Если уже поставили, то переменная, отвечающая за наличие установленного паритета, будет равна времени открытия позы, обозначенной числом int и у позиции будет м магик и это "волшебное" число... :)
Отсюда и пляшите...
 

Добрый день!

Не могу понять почему не модифицируется открытые ордера,условие модификации профит выше 5 пунктов.Помогите найти ошибку

//+------------------------------------------------------------------+
//| news trade.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"


extern bool In_BUYSTOP=true;
extern int TakeProfit_buy=100;
extern int StopLoss_buy=5;
extern double Lots_buy=0.01;
//+------------------------------------------------------------------+
extern bool In_SELLSTOP =true;
extern int TakeProfit_sell=100;
extern int StopLoss_sell =5;
extern double Lots_sell =0.01;
extern int LevelProfit = 25; // - Уровень профита в пунктах, которого должна достигнуть позиция для того, чтобы её стоп был перенесён на уровень безубытка.
extern int LevelWLoss = 1; // - Уровень безубытка в пунктах, на который будет перенесён стоп позиции после того, как её профит достигнет уровня LevelProfit в пунктах.

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
int profitbuy=((Bid - OrderOpenPrice())/Point); // BUY
int profitsell=((OrderOpenPrice()- Ask)/Point); // SELL
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
//----
{
int ticket;
if (Bid >iHigh(NULL,PERIOD_D1,1))
{
if(OrdersTotal() < 1)
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots_sell,iHigh(NULL,PERIOD_D1,1),3,iHigh(NULL,PERIOD_D1,1)+StopLoss_sell*Point,iHigh(NULL,PERIOD_D1,1)-TakeProfit_sell*Point,Hour() == 21 && Minute() == 59);
if(OrderSelect(1, SELECT_BY_POS,MODE_TRADES)==true)
{
int profitsell=((OrderOpenPrice()- Ask)/Point);
if (profitsell>5)
ticket=OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,Blue);
return(0);
}
}
if (Ask <iLow(NULL,PERIOD_D1,1))
{
if(OrdersTotal() < 1)
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots_buy,iLow(NULL,PERIOD_D1,1),3,iLow(NULL,PERIOD_D1,1)-StopLoss_buy*Point,iLow(NULL,PERIOD_D1,1)+TakeProfit_buy*Point,Hour() == 21 && Minute() == 59);
if(OrderSelect(1, SELECT_BY_POS,MODE_TRADES)==true)
{
int profitbuy=((Bid - OrderOpenPrice())/Point);
if (profitbuy>5)
int stopmodify=OrderOpenPrice();
OrderModify(OrderTicket(),OrderOpenPrice(),stopmodify,OrderTakeProfit(),0,Blue);
return(0);
}
}
//oooooooooooooooooooooooooooooooooooooooooooooooooooo
return(0);
}
//+------------------------------------------------------------------+