Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день.
Я начинаю писать и понимать код. Пока что я перегружен.
Я хотел бы начать писать ea, используя MACD гистограмму и когда линия тригера пересекается выше и ниже гистограммы.
Есть ли у кого-нибудь простая программа, чтобы начать понимать код и запустить ее, чтобы посмотреть, как она торгует?
Спасибо-вам
даниэль
Импорт трендлайна из Excel/CSV=?
Привет, я написал несколько простых скриптов в последние дни, особенно ObjectCreate (OBJ_TREND с Ray=1) это действительно хорошо, как это работает, но как я могу рисовать объекты из готового csv-файла, где у меня есть некоторые исторические данные Close-Data для моих Close-Lines, потому что я хочу иметь возможность удалить мой шаблон и импортировать данные каждый раз, когда они мне нужны с помощью скрипта,
есть ли у кого-нибудь идеи, как это может работать?
CSV имеет дату (без времени) и значение Close-Value (мне не нужно больше данных для линий)
и скрипт должен нарисовать линию от этой даты с Ray=1 и настраиваемым цветом.
возможно, скрипт мог бы также проверить открытый график (символ) и взять правильный csv-файл, если их несколько ;-)
Пожалуйста, кто-нибудь может мне помочь
Ошибка для OrderDelete(OrderTicket())
Привет всем!
Я новичок в программировании на MQL4, но с другой стороны я знаю C++.
Но у меня есть некоторые проблемы с торговыми функциями.
Вот моя проблема:
Я создаю отложенный ордер с :
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Green);
и в другой точке программы я хочу удалить его:
if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());
ОШИБКА 4108! Почему? Номер билета правильный, я его печатаю.
Но если я использую :
if (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket());
все нормально!
Почему?
Спасибо за поддержку и за форум.
Код для завершения работы советника ???
Привет всем,
Я ищу код, который завершает работу советника. Я разместил небольшой мартингейл, который я написал. Он закрывает все отложенные и открытые ордера, когда достигает определенного процента от просадки счета. Я также смог заставить его прекратить торговлю, когда достигнута цель ежедневной прибыли. Он начинает торговать снова на следующий день. (Спасибо тому, кто написал SWB Grid, поскольку я использовал их код).
Однако я хотел бы, чтобы советник завершал работу при достижении определенного условия. Скажем, он достигает Max Percentage Drawdown и закрывает все отложенные ордера и открытые позиции. В этот момент я хочу, чтобы советник завершил свою работу, чтобы он не начал торговать снова, пока я не уберу советник с графика и не поставлю его снова.
Вот советник. Любые предложения или помощь будут очень признательны!
Спасибо,
Джо
Нужна помощь по теме "'\end_of_program' - несбалансированная левая скобка"
Здравствуйте, я работаю над советником и постоянно получаю сообщение об ошибке при компиляции: "'\end_of_program' - несбалансированная левая скобка". Обычно это сообщение об ошибке связано с неравным количеством левых и правых скобок. Однако я проверил свои коды вдоль и поперек и обнаружил, что у меня одинаковое количество левых и правых скобок. Так что это сводит меня с ума, что я не могу понять, где это пошло не так. Может ли кто-нибудь проверить мои коды и сказать мне, как это исправить? Спасибо миллион. Мои коды опубликованы ниже:
//+------------------------------------------------------------------+
//| Breakout.mq4 |
//| Pooh |
//| |
//+------------------------------------------------------------------+
#property copyright "Pooh"
#property link ""
//--- входные параметры
extern int LengthI=23;//для входа в рынок
extern int LengthO=7;//для выхода из рынка
extern double Lots=0.1; //для размера ордера
extern int N1=14; //период для ATR
extern int NLots=1; //количество увеличенных лотов ордера
//+------------------------------------------------------------------+
//| функция инициализации эксперта |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция деинициализации эксперта | |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция запуска эксперта |
//+------------------------------------------------------------------+
int start()
{
//----
double HLong,LLong,HShort,LShort;
HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));
LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));
LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));
HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));
int cnt, cot, ticket, total;
total=OrdersTotal();
if (total<1)
{
if (iClose(NULL,0,1)>HLong)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);
if (ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт длинный ордер : ",OrderOpenPrice());
}
else
Print("Ошибка при открытии длинного ордера : ",GetLastError());
return(0);
}
if (iClose(NULL,0,1)<LShort)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);
if (ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт короткий ордер:",OrderOpenPrice());
}
else Print("Ошибка открытия SHORT ордера:",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{ //10
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // длинная позиция открыта
{
// должна ли она быть закрыта?
if(Bid<=LLong)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//закрываем позицию
return(0);
}
//модификация трейлинг-стопа
OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);
return(0);
}
else
{
if(Ask>=HShort)
{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//закрытие позиции
return(0);
}
//модификация трейлинг-стопа
OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);
return(0);
}
}
}
//получаем общее количество лотов длинных и коротких ордеров
double LOrderLots=0;
double SOrderLots=0;
for(cnt=0,cnt<=total,cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)
LOrderLots=LOrderLots+OrderLots();
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)
SOrderLots=LOrderLots+OrderLots();
}
//увеличиваем открытый ордер
for(cot=0,cot<=total,cot++)
{ //1
//добавляем позицию для длинного ордера
if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //если есть открытые ордера
{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- если открытый ордер был открыт советником pooh abd type is Long
{ //3
for(int i=1;i<=15;i++)
{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4
{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5
if (ticket>0)
{ //6
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт длинный ордер : ",OrderOpenPrice());
} //6
иначе
Print("Ошибка при открытии длинного ордера : ",GetLastError());
break;
} //5
} //4
return(0);
//добавление позиции для короткого ордера
if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)
{ //7
for(int n2=1;n2<=15;n2++)
{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8
{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9
if (ticket>0)
{ // 10
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт короткий ордер : ",OrderOpenPrice());
} // 10
else
Print("Ошибка при открытии короткого ордера : ",GetLastError());
break;
} //9
} //8
return(0);
} //7
} //3
} //2
} //1
return(0)
}
НУЖЕН кодер для создания простого индикатора
Мне нужно, чтобы кто-то написал индикатор, который делает это:
На простом Фибоначчи, используя только линии 0,50,100. Когда бар закрывается выше 50% или ниже 50%, но с возможностью выбора, если я ищу закрытие выше или ниже, а не оба. Если я ищу закрытие ниже 50%, я не хочу, чтобы каждый раз, когда бар закрывается выше 50, срабатывало оповещение. Я хочу, чтобы он оповещал меня звуком и посылал мне сообщение по электронной почте и/или текст. Возможно ли это? Спасибо!!!
ИЗОБРАЖЕНИЕ: http://tinypic.com/r/dhbu6v/5
Пытаюсь закодировать простую логику, не получается!
Здравствуйте форумчане,
Я думаю, что это очень простая вещь для вас, кто достаточно хорошо разбирается в MQL4, но я новичок и у меня проблемы, я прочитал все уроки здесь, но так и не смог разобраться.
Итак, я хочу сделать автоматическую торговлю
размер лота 0.1
стоплосс = 30 пунктов
цель прибыли 50 пунктов
пара AUDUSD
Если (highprice - lowprice) < 60 пунктов между 02:00 GMT и 10:00 GMT, то продаем AUDUSD по lowprice - 5 пунктов или покупаем AUDUSD по highprice + 5 пунктов, иначе сделки нет
Здравствуйте Форум,
Я считаю, что это очень простая вещь в кодировании для тех, кто достаточно хорошо разбирается в MQL4, но я новичок и у меня проблемы, я прочитал все уроки здесь, но так и не смог разобраться.
Итак, я хочу сделать автоматическую торговлю
размер лота 0.1
стоплосс = 30 пунктов
цель прибыли 50 пунктов
пара AUDUSD
Если (highprice - lowprice) < 60 пунктов между 02:00 GMT и 10:00 GMT , то продайте AUDUSD по lowprice - 5 пунктов или купите AUDUSD по highprice + 5 пунктов, иначе сделки нет[lang=pl]Привет, я думаю, что это не проблема, чтобы закодировать этот советник, но у меня есть вопрос.
Когда вы хотите покупать/продавать? Нужны ли вам отложенные ордера на уровнях low-5 high+5?
с уважением,
Grzesiek[/lang]
[lang=pl]Привет, я думаю, что это не проблема, чтобы закодировать этот советник, но у меня есть вопрос.
Когда вы хотите покупать/продавать? Нужны ли вам отложенные ордера на уровнях low-5 high+5?
пожелания,
Grzesiek[/lang]Здравствуйте,
спасибо за помощь
Да, точнее торговый диапазон AUDUSD (разница между высокой и низкой ценой) между 02:00 GMT и 10:00 GMT (это очень важно в коде) составляет менее 60 пунктов, так что это торговый сигнал. Таким образом, вы продаете, если цена достигает низкой цены (между 02:00 и 10:00) - 5 пунктов, и покупаете, если цена достигает высокой цены + 5 пунктов.
пример
между 02:00 и 10:00 GBPUSD низкая цена была 1.6000, высокая - 1.6050, поэтому если цена достигает 1.5995, вы автоматически продаете, а если цена достигает 1.6055, вы автоматически покупаете, автоматически размещая ордер стоп-лосс на 30 пунктов и тейк-профит на 50 пунктов.
Если у вас нет времени, просто подскажите мне, как начать, я читал уроки, но у меня нет практики, чтобы сделать работу.
спасибо
Здравствуйте, я работаю над советником и при компиляции получаю сообщение об ошибке: "'\end_of_program' - несбалансированная левая скобка." Обычно это сообщение об ошибке связано с неравным количеством левых и правых скобок. Однако я проверил свои коды вдоль и поперек и обнаружил, что у меня одинаковое количество левых и правых скобок. Так что это сводит меня с ума, что я не могу понять, где это пошло не так. Может ли кто-нибудь проверить мои коды и сказать мне, как это исправить? Спасибо миллион. Мои коды приведены ниже:
//+------------------------------------------------------------------+
//| Breakout.mq4 |
//| Pooh |
//| |
//+------------------------------------------------------------------+
#property copyright "Pooh"
#property link ""
//--- входные параметры
extern int LengthI=23;//для входа в рынок
extern int LengthO=7;//для выхода из рынка
extern double Lots=0.1; //для размера ордера
extern int N1=14; //период для ATR
extern int NLots=1; //количество увеличенных лотов ордера
//+------------------------------------------------------------------+
//| функция инициализации эксперта |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция деинициализации эксперта | |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция запуска эксперта |
//+------------------------------------------------------------------+
int start()
{
//----
double HLong,LLong,HShort,LShort;
HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2));
LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2));
LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2));
HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2));
int cnt, cot, ticket, total;
total=OrdersTotal();
if (total<1)
{
if (iClose(NULL,0,1)>HLong)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green);
if (ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт длинный ордер : ",OrderOpenPrice());
}
else
Print("Ошибка при открытии длинного ордера : ",GetLastError());
return(0);
}
if (iClose(NULL,0,1)<LShort)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red);
if (ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт короткий ордер:",OrderOpenPrice());
}
else Print("Ошибка открытия SHORT ордера:",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{ //10
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // длинная позиция открыта
{
// должна ли она быть закрыта?
if(Bid<=LLong)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//закрываем позицию
return(0);
}
//модификация трейлинг-стопа
OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green);
return(0);
}
else
{
if(Ask>=HShort)
{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//закрытие позиции
return(0);
}
//модификация трейлинг-стопа
OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red);
return(0);
}
}
}
//получаем общее количество лотов длинных и коротких ордеров
double LOrderLots=0;
double SOrderLots=0;
for(cnt=0,cnt<=total,cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)
LOrderLots=LOrderLots+OrderLots();
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)
SOrderLots=LOrderLots+OrderLots();
}
//увеличиваем открытый ордер
for(cot=0,cot<=total,cot++)
{ //1
//добавляем позицию для длинного ордера
if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //если есть открытые ордера
{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- если открытый ордер был открыт советником pooh abd type is Long
{ //3
for(int i=1;i<=15;i++)
{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4
{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); //5
if (ticket>0)
{ //6
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт длинный ордер : ",OrderOpenPrice());
} //6
иначе
Print("Ошибка при открытии длинного ордера : ",GetLastError());
break;
} //5
} //4
return(0);
//добавление позиции для короткого ордера
if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)
{ //7
for(int n2=1;n2<=15;n2++)
{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8
{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9
if (ticket>0)
{ // 10
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("Открыт короткий ордер : ",OrderOpenPrice());
} // 10
else
Print("Ошибка при открытии короткого ордера : ",GetLastError());
break;
} //9
} //8
return(0);
} //7
} //3
} //2
} //1
return(0)
}[lang=pl]Здравствуйте, есть небольшая ошибка, два несбалансированных ")" в функции OrderMagicNumer, вы должны использовать () в конце. В цикле for вы должны использовать ";" вместо ",".
Если вам нужно найти несбалансированные скобки, я рекомендую вам Notepad ++ [/lang].