Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1338
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Задам вопрос более корректно.
Есть блок программного кода, который объясняет советнику сколько сделок нужно открыть. Выглядит он так
int OPEN=1;
if(OrdersTotal())
OPEN=0; //можно открыть не более ордеров
if(OPEN==1)
{
//Здесь открываем
}
Проблема в том что он открывает требуемое количество сделок (в данном примере 1) по всем инструментам. А мне необходимо объяснить ему
что нужно открыть это количество сделок на ТЕКУЩЕМ инструменте. Что то типа _Symbol или Symbol (). Как это можно сделать? Думаю решение тут простое .
Задам вопрос более корректно.
Есть блок программного кода, который объясняет советнику сколько сделок нужно открыть. Выглядит он так
int OPEN=1;
if(OrdersTotal())
OPEN=0; //можно открыть не более ордеров
if(OPEN==1)
{
//Здесь открываем
}
Проблема в том что он открывает требуемое количество сделок (в данном примере 1) по всем инструментам. А мне необходимо объяснить ему
что нужно открыть это количество сделок на ТЕКУЩЕМ инструменте. Что то типа _Symbol или Symbol (). Как это можно сделать? Думаю решение тут простое .
Отрывает хренову тучу сделок причем в sell
ну тут два варианта:
1. показать весь код
2. в клуб телепатов
ну тут два варианта:
1. показать весь код
2. в клуб телепатов:)
:)
как открывать и бай и селл я разобрался "!". А вот количество сделок не регулирует открывает на каждом тике
int start()
{
double a=iOpen(NULL,PERIOD_D1,0);
double d=_ORDER*0.00001;
double c=d+1;
double s=c*a;
double limit= NormalizeDouble(s,_Digits);
// Print("уровень лимита= ",limit);
double e=_STOP*0.00001;
double n=e+1;
double m=n*a;
double SL= NormalizeDouble(m,_Digits);
//Print("уровень стопа= ",SL);
double p=_TP*0.00001;
double f=p+1;
double z=f*a;
double TP= NormalizeDouble(z,_Digits);
double w=iOpen(NULL,PERIOD_D1,0);
double q=_ORDER*0.00001;
double j=q+1;
double v=w/j;
double limit1= NormalizeDouble(v,_Digits);
// Print("уровень лимита= ",limit);
double k=_STOP*0.00001;
double y=k+1;
double u=w/y;
double SL1= NormalizeDouble(u,_Digits);
//Print("уровень стопа= ",SL);
double g=_TP*0.00001;
double _f=g+1;
double _m=w/_f;
double TP1= NormalizeDouble(_m,_Digits);
if(Hour()==Nac)
{
if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
{
if(!isTradeToDay(Symbol()))
{
int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем
}
}
if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
{
if(isTradeToDay(Symbol()))
{
int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем
}
}
}
if(Hour()==Kon)
{
bool result;
int error;
//----
while(OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE)
{
error=GetLastError();
Print("LastError = ",error, " ",Symbol());
}
else
error=0;
}
else
Print("Error when order select ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
return(0);
}
Вот код без объявленных переменных.
код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?
код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?
Функция внизу. Компиляция без ошибок. Селл сторону удалось отрегулировать открывает одну сделку на конкретном инструменте даже если есть открытые по другим
инструментам. А вот баевскую сторону фигачит сделки на каждом тике и все
код нужно вставить Alt+S
и где функция ?
как вы его скомпилировали ? без ошибок ?
На текущий момент код такой. Селл сторона все ок а вот бай сторона каждый тик сделка
на бай сторону тоже самое нужно делать
на бай сторону тоже самое нужно делать
Не могу разобраться что именно нужно поменять в функции isTradeToDay чтобы на бай стороне стало также как на селл стороне. По прежнему бай сторона не работает :(