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

 
Спасибо всем. С мира по нитке вроде получилось.
 
smogsam >>:

Здравствуйте.

Как узнать факт срабатывания SL или TP. Например, если ордер закрывается по

SL или TP, то выполнить то-то и то-то... Я что-то не нашел такой функции.

Стандартных функций нет, но можно добавить сигналы в окне терминал (sound, file, mail).

Если используете советник можно добавить и сигнал, и алерт, и .....

 
и что? мне в эксперте надо. подробнее
 

Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.

Нет чего-нибудь типа OrdersDayTotal?

 
smogsam >>:
и что? мне в эксперте надо. подробнее

Ну как что

"Если используете советник можно добавить и сигнал, и алерт, и ....."

"..." Это может быть что угодно, вплоть до выключения ПК.

 
future >>:

Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.

Нет чего-нибудь типа OrdersDayTotal?

Допустим открыта покупка, тогда при сигнале продажи закрываем покупку, или открыта покупка, тогда при сигнале покупки докупаемся

OrderType()

См.справку

Справочник MQL4 - Торговые функции - OrderType

OrderOpenTime( )
 

видимо с дде никто из профи не работает.

 А может, кто знает, как с mamadu связаться? это автор статьи

по которой я уже запарил весь интернет вопросами(безрезультатно). Dmitriy который.

 
smogsam >>:

Здравствуйте.

Как узнать факт срабатывания SL или TP. Например, если ордер закрывается по

SL или TP, то выполнить то-то и то-то... Я что-то не нашел такой функции.

Я пользуюсь вот такой схемой.

//Определяем чем завершилась прошлая сделка профитом или лосом
//------------------------------------------------------------------------------------------------------------------------------------------------
if (OrderSelect(Tic_Verh,SELECT_BY_TICKET)==true)
  {
  if (OrderComment()=="[sl]")_SL[0]=-1;
  if (OrderComment()=="[tp]")_SL[0]=1;
  }
if (OrderSelect(Tic_Niz,SELECT_BY_TICKET)==true)
  {
  if (OrderComment()=="[sl]")_SL[0]=-1;
  if (OrderComment()=="[tp]")_SL[0]=1;
  }
Красным цветом помечены переменные типа INT в которые записываются номера ТИКОВ при открытии позиции

Переменная _SL[0] объявлена как одномерный массив из одного элемента. то есть int _SL[1]

 

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


.......................
.......................


bool opb1=true;
bool ops1=true;
int start()
{

int Cur_Hour=Hour(); // Серверное время в часах
double Time_Cls=9.25;
double Cur_Min=Minute();
double Cur_time=Cur_Hour + Cur_Min*0.01; // Текущее время


if (Cur_time>=Time_Cls)

{
if (opb1==true){

double bid =MarketInfo("EURUSD",MODE_BID);
double ask =MarketInfo("EURUSD",MODE_ASK);
double point =MarketInfo("EURUSD",MODE_POINT);
double bid1 =bid+50*Point;
double ask1=ask-50*Point;
double bid2=bid;
double ask2=ask-100*Point;


OrderSend(Symbol(),OP_BUY,0.1,Ask,50,Bid-400*Point,Bid+200*Point);
Alert (GetLastError());

opb1=false;}

if(MarketInfo("EURUSD",MODE_BID)>= bid1)


{
Close_All(0); //функция закрытия бай
return(0);
}
if(MarketInfo("EURUSD",MODE_ASK)<=ask1)

{
ask =MarketInfo("EURUSD",MODE_ASK); //
bid =MarketInfo("EURUSD",MODE_BID); //
point =MarketInfo("EURUSD",MODE_POINT);//
if (ops1==true){
OrderSend(Symbol(),OP_SELL,0.3,Bid,50,Ask+400*Point,Ask-200*Point);
Alert (GetLastError());
ops1=false;}
if(MarketInfo("EURUSD",MODE_ASK)<=ask2)
{
Close_All(1);// функция закрытия селл
Close_All(0);
return(0);
}
или может я неправильно задаю условие открытия?

 

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


.......................
.......................


bool opb1=true;
bool ops1=true;
int start()
{

int Cur_Hour=Hour(); // Серверное время в часах
double Time_Cls=9.25;
double Cur_Min=Minute();
double Cur_time=Cur_Hour + Cur_Min*0.01; // Текущее время


if (Cur_time>=Time_Cls)

{
if (opb1==true){

double bid =MarketInfo("EURUSD",MODE_BID);
double ask =MarketInfo("EURUSD",MODE_ASK);
double point =MarketInfo("EURUSD",MODE_POINT);
double bid1 =bid+50*Point;
double ask1=ask-50*Point;
double bid2=bid;
double ask2=ask-100*Point;


OrderSend(Symbol(),OP_BUY,0.1,Ask,50,Bid-400*Point,Bid+200*Point);
Alert (GetLastError());

opb1=false;}

if(MarketInfo("EURUSD",MODE_BID)>= bid1)


{
Close_All(0); //функция закрытия бай
return(0);
}
if(MarketInfo("EURUSD",MODE_ASK)<=ask1)

{
ask =MarketInfo("EURUSD",MODE_ASK); //
bid =MarketInfo("EURUSD",MODE_BID); //
point =MarketInfo("EURUSD",MODE_POINT);//
if (ops1==true){
OrderSend(Symbol(),OP_SELL,0.3,Bid,50,Ask+400*Point,Ask-200*Point);
Alert (GetLastError());
ops1=false;}
if(MarketInfo("EURUSD",MODE_ASK)<=ask2)
{
Close_All(1);// функция закрытия селл
Close_All(0);
return(0);
}
или может я неправильно задаю условие открытия?

Причина обращения: