Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Имейте в виду, что вам может понадобиться также постоянно хранить спред... в зависимости от типа советника, который вы пишете. иначе бесполезно.
это HIGH [0] - текущий бар, который только что стартовал.
для low, я не знаю, возможно low[1]
В каком порядке нужно ставить OrderSend(),OrderModify()
День назад я прочитал на форуме тему о функции OrderSend() и OrderModify()
и эта тема дала мне подсказку почему некоторые советники работают, а другие нет, и мне интересно как проверить правильно ли написана функция OrderSend() и OrderModify().Есть примеры?
привет всем...
Подскажите, пожалуйста, как кодом получить список всех пар в MT4?
спасибо
Чарльз
Здравствуйте,
Я не знаю, что неправильно писать Ask[1], но как я могу получить Ask-цену из последнего тика?
Спасибо!Вы должны сохранять тики в реальном времени, а затем обращаться к ним из вашего советника или индикатора. Я могу попробовать написать для вас пример, если вы все еще заинтересованы.
Привет всем...
Подскажите, пожалуйста, как кодом получить список всех пар в MT4?
спасибо
ЧарльзНе торопитесь, я думаю, это проще сделать в Mql5, так что просто подождите, пока все уладится.
получение значений магического тренда в переменной...
привет!!!
Я работаю над советником и мне интересно, как я могу получить значения индикатора magic trend в переменной. очевидно, что для magic trend нет встроенной функции, как в iMA для скользящих средних и so.....
Пока все выглядит так, что мне придется кодить с нуля. но я не нашел никакой информации о математике!
кто-нибудь может помочь?
спасибо большое!!!
привет!!!
я работаю над советником и мне интересно, как я могу получить значения индикатора magic trend в переменной. очевидно, что для magic trend нет встроенной функции, как в iMA для скользящих средних и so.....
Пока все выглядит так, что мне придется кодить с нуля. но я не нашел никакой информации о математике!
кто-нибудь может помочь?
спасибо большое!!!Поищите информацию о том, как использовать функцию ICustom в MQL4. С помощью этой функции вы можете вызывать внешние индикаторы в вашем советнике
-guyver
Robot - Автоматический советник о 2 скользящих средних MA быстрой и медленной
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.2;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 15;
extern bool UseTakeProfit = True;
extern int TakeProfit = 30;
extern bool UseTrailingStop = True;
extern int TrailingStop = 20;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| функция инициализации эксперта |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| функция деинициализации эксперта |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| функция запуска эксперта |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Начало переменной |
//+------------------------------------------------------------------+
double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
//+------------------------------------------------------------------+
//| Конец переменной |
//+------------------------------------------------------------------+
//Проверка позиции
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Сигнал Begin(Exit Buy)|
//+------------------------------------------------------------------+
if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Сигнал Окончание(Выход из покупки) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Трейлинг-стоп
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Сигнал Начало(Выход Продажа) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Трейлинг-стоп
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Сигнал Begin(Entry)|
//+------------------------------------------------------------------+
if (Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && False) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Конец сигнала |
//+------------------------------------------------------------------+
//Покупка
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Проверка свободной маржи
if (AccountFreeMargin() < (1000 * Lots)) {
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if (Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Открыт ордер BUY : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Ошибка открытия ордера BUY : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Продажа
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Проверка свободной маржи
if (AccountFreeMargin() < (1000 * Lots)) {
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if (Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print(" Открытордер SELL: ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Ошибка открытия ордера SELL : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
//где ошибка, потому что я не знаю, помогите мне. спасибо.
какую ошибку вы получаете?