Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.
Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.
Нет чего-нибудь типа OrdersDayTotal?
Допустим открыта покупка, тогда при сигнале продажи закрываем покупку, или открыта покупка, тогда при сигнале покупки докупаемся
Как узнать факт срабатывания 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; // Текущее время
подскажите пожалуйста пишу советник не могу разобраться открываю ордер на бай в заданное время если цена отклоняется ниже на 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; // Текущее время
Здравствуйте.
Как узнать факт срабатывания SL или TP. Например, если ордер закрывается по
SL или TP, то выполнить то-то и то-то... Я что-то не нашел такой функции.
Стандартных функций нет, но можно добавить сигналы в окне терминал (sound, file, mail).
Если используете советник можно добавить и сигнал, и алерт, и .....
Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.
Нет чего-нибудь типа OrdersDayTotal?
и что? мне в эксперте надо. подробнее
Ну как что
"Если используете советник можно добавить и сигнал, и алерт, и ....."
"..." Это может быть что угодно, вплоть до выключения ПК.
Ещё один вопросик есть. Если if (OrdersTotal()==0) это... если количество открытых ордеров равно нулю... то как будет...если количество открытых ЗА ДЕНЬ ордеров равно нулю.
Нет чего-нибудь типа OrdersDayTotal?
Допустим открыта покупка, тогда при сигнале продажи закрываем покупку, или открыта покупка, тогда при сигнале покупки докупаемся
OrderType()
См.справку
Справочник MQL4 - Торговые функции - OrderType
видимо с дде никто из профи не работает.
А может, кто знает, как с mamadu связаться? это автор статьи,
по которой я уже запарил весь интернет вопросами(безрезультатно). Dmitriy который.
Здравствуйте.
Как узнать факт срабатывания 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);
}
или может я неправильно задаю условие открытия?