Здравствуйте уважаемые форумчане!
Я в MQL4 новичок, поэтому столкнулся с проблемой, которая сначала мне показалась легко решаемой, но не тут-то было. Где только не искал, какие только запросы не вводил в поисковики, но так и не смог найти кода, с помощью которого можно в MT4 программно открывать ордер, обычный рыночный ордер.
Мне нужно чтобы при выполнении условия if (signal == 1) выполнялся код, который откроет рыночный ордер на покупку (0,1 лот) и установит стоп лосс (150) и тейк профит (300). За ранее, благодарен.
Сделал так, но так не компилируется, ошибка в строке void OnStart()
//+------------------------------------------------------------------+
//| Test8.mq4 |
//+------------------------------------------------------------------+
#property copyright "Begemot32"
#property version "1.00"
#property strict
int OrderSend(
string symbol, // символ
int cmd, // торговая операция
double volume, // количество лотов
double price, // цена
int slippage, // проскальзывание
double stoploss, // stop loss
double takeprofit, // take profit
string comment=NULL, // комментарий
int magic=0, // идентификатор
datetime expiration=0, // срок истечения ордера
color arrow_color=clrNONE // цвет
);
int signal = 1;
//+------------------------------------------------------------------+
int start()
{
if (signal == 1)
{
// ВОТ ЗДЕСЬ ДОЛЖЕН БЫТЬ КОД, КОТОРЫЙ ОТКРЫВАЕТ РЫНОЧНЫЙ ОРДЕР НА ПОКУПКУ (0,1 лот), ПРИ ЭТОМ ВЫСТАВЛЯЕТ СТОП ЛОСС И ТЕЙКПРОФИТ
void OnStart()
{
//--- получим минимальное значение Stop level
double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
Print("Minimum Stop Level=",minstoplevel," points");
double price=Ask;
//--- вычисленные значения цен SL и TP должны быть нормализованы
double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//--- размещаем рыночный ордер на покупку 1 лота
int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
if(ticket<0)
{
Print("OrderSend завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend успешно выполнена");
//---
}
}
return(0);
}
Гуглить пробовал, примеров много всяких, но я не могу понять как их правильно вставить
Зря не читаете что вам говорят. В ссылке пример как правильно вставить. И всё расписано так чтоб даже ёжику было понятно.
вот так компилируется, но в терминале выдает ошибку: неправильно установлены стоп лос и текпрофит
//+------------------------------------------------------------------+
//| Test8.mq4 |//+------------------------------------------------------------------+
#property copyright "Begemot32"
#property version "1.00"
#property strict
int OrderSend(
string symbol, // символ
int cmd, // торговая операция
double volume, // количество лотов
double price, // цена
int slippage, // проскальзывание
double stoploss, // stop loss
double takeprofit, // take profit
string comment=NULL, // комментарий
int magic=0, // идентификатор
datetime expiration=0, // срок истечения ордера
color arrow_color=clrNONE // цвет
);
int signal = 1;
//+------------------------------------------------------------------+
int start()
{
if (signal == 1)
{
// ВОТ ЗДЕСЬ ДОЛЖЕН БЫТЬ КОД, КОТОРЫЙ ОТКРЫВАЕТ РЫНОЧНЫЙ ОРДЕР НА ПОКУПКУ (0,1 лот), ПРИ ЭТОМ ВЫСТАВЛЯЕТ СТОП ЛОСС И ТЕЙКПРОФИТ
//--- получим минимальное значение Stop level
double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
Print("Minimum Stop Level=",minstoplevel," points");
double price=Ask;
//--- вычисленные значения цен SL и TP должны быть нормализованы
double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//--- размещаем рыночный ордер на покупку 1 лота
int ticket=OrderSend(Symbol(),OP_BUY,0.01,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
if(ticket<0)
{
Print("OrderSend завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend успешно выполнена");
//---
}
return(0);
}
Гуглить пробовал, примеров много всяких, но я не могу понять как их правильно вставить
У меня то же, вторую неделю как, поиск в MQL не пашет. Все пишет про ошибку на странице:
У меня то же, вторую неделю как, поиск в MQL не пашет. Все пишет про ошибку на странице:
А зачем тебе поиск в MQL? Хотя сейчас проверил всё работает на ура...
Нажимаешь надпись "Документация" на главной странице сайта и там читаешь. Например Торговые функции там описаны все функции которые причастны к открытию, модификации и пр... ордеров. Ещё пример для открытия ордера используется функция OrderSend()
Примет её использования
int ticket = OrderSend(Symbol(), Buy, 0.1, Ask, 40, 0, 0, NULL, 123654);
В этом примере использованы не все параметры функции, но язык MQL4 это допускает, но нельзя пропускать какой-либо параметр. Можно только обрезать последние параметры при желании, что и сделано в данном примере.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте уважаемые форумчане!
Я в MQL4 новичок, поэтому столкнулся с проблемой, которая сначала мне показалась легко решаемой, но не тут-то было. Где только не искал, какие только запросы не вводил в поисковики, но так и не смог найти кода, с помощью которого можно в MT4 программно открывать ордер, обычный рыночный ордер.
Мне нужно чтобы при выполнении условия if (signal == 1) выполнялся код, который откроет рыночный ордер на покупку (0,1 лот) и установит стоп лосс (150) и тейк профит (300). За ранее, благодарен.
//+------------------------------------------------------------------+
int signal = 1;
//+------------------------------------------------------------------+
int start()
{
if (signal == 1)
{
ВОТ ЗДЕСЬ ДОЛЖЕН БЫТЬ КОД, КОТОРЫЙ ОТКРЫВАЕТ РЫНОЧНЫЙ ОРДЕР НА ПОКУПКУ (0,1 лот), ПРИ ЭТОМ ВЫСТАВЛЯЕТ СТОП ЛОСС И ТЕЙКПРОФИТ
}
return(0);
}
//+------------------------------------------------------------------+