Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет, ребята, последние три дня я безуспешно пытаюсь заставить этот советник совершать длинные сделки в mt4. он совершает только короткие сделки, хотя сигнал_покупки есть. пожалуйста, не мог бы кто-нибудь взглянуть на этот код и исправить его для меня или сказать мне, что делать. я новичок в программировании и создал его из онлайн конструктора стратегий. спасибо заранее! код прилагается.
I am not sure about the -3 shift parameter : it shift the curve to the left, so the current bar is undefinited. Try to replace all -3 by 0 to see if the buy orders are triggered.
I would replace
double Var2 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);
double Var3 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);
double Var4 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);
double Buy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);
double Sell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);
double CloseBuy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);
double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);
double CloseSell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);
double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);by
[PHP]double Buy1_1 = iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, Current);
double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);
double Sell1_1 = Buy1_1;
double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current);
double CloseBuy1_1 = Buy1_1;
double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);
double CloseSell1_1 = Buy1_1;
double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);Rem :
- Var1,2,3,4 не используются.
- Оба CloseBuy1_2 и CloseSell1_2 одинаковы: вероятно, один из них неправильный (MODE_LOWER).
Нужна помощь с кодом
Мишель, большое спасибо за помощь, все отлично исправлено! Вы лучшие ребята, я наконец-то могу немного отдохнуть. Я дам вам знать, как прошло мое тестирование.
Кстати, вы хотите сказать, что -3 никогда не сможет работать в этом советнике? Еще раз спасибо.
... кстати, вы хотите сказать, что -3 никогда не сможет работать в этом советнике? Еще раз спасибо.
Честно говоря, я так и не понял, как используется этот сдвиг: если вы хотите узнать значение индикатора за 3 бара до текущего бара, просто используйте 3 как сдвиг, но последний; первый просто сдвигает рисунок кривой, а если вы используете отрицательное значение, это похоже на то, что прошлое знает будущее...
В любом случае, я буду рад, если кто-нибудь объяснит мне его использование!
Но чтобы ответить на ваш вопрос, попробуйте узнать точную стратегию, которой вы хотите следовать, откуда берется это -3?
здравствуйте
в этом эксперте я хотел бы изменить все sl на sl последних ордеров, как и tp, но не смог.
пожалуйста, помогите мне
Что я сделал?
Мне нужна помощь в кодировании в MT4
У меня есть некоторый код ниже:
StopLoss=EMAtrend-iClose(NULL,0,1);
TakeProfit=StopLoss
If(EMAshort>EMAlong && EMAshort_prev<EMAlong_prev)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask+StopLoss*Point,Bid+TakeProfit*Point, "Купить по цене закрытия",10000,0,Green);
}
If(EMAshortEMAlong_prev)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Продать по цене закрытия",11000,0,Red);
}
Идея заключалась в следующем:
1. Открывать ордер по цене закрытия при выполнении критериев;
2. Я хочу, чтобы EMAtrend был уровнем стоплосса;
3. Расстояние между EMAtrend и баром цены закрытия будет расстоянием для тейкпрофита от цены открытия.
Я пробую код выше, но ничего не происходит и появляется ошибка 130.
Пожалуйста, помогите мне.
Нужна помощь с кодом
Привет всем
Я пытаюсь скомпилировать ea, но он выдает следующую ошибку:
Now the part of the ea causing this is right at the start of the code :
If I block this out it comes up with errors for the following bit of code :
[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }
if(TotalTradesThisSymbol(TradeSymbol)>0) {
for(cnt=0;cnt<total;cnt++) {
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()== Symbol) {
if(OrderMagicNumber()==11) { BS=OrderTicket(); }
if(OrderMagicNumber()==22) { SS=OrderTicket(); }
if(OrderMagicNumber()==33) { BL=OrderTicket(); }
if(OrderMagicNumber()==44) { SL=OrderTicket(); }
}//end if(OrderSymbol
}//end for
}//end if */Я хотел бы знать, есть ли простой способ исправить это.
Я не силен в кодировании, только копирую и вставляю.
Заранее спасибо
Basza
Привет всем
Я пытаюсь скомпилировать ea, но она выдает следующую ошибку:
Now the part of the ea causing this is right at the start of the code :
If I block this out it comes up with errors for the following bit of code :
[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }
if(TotalTradesThisSymbol(TradeSymbol)>0) {
for(cnt=0;cnt<total;cnt++) {
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()== Symbol) {
if(OrderMagicNumber()==11) { BS=OrderTicket(); }
if(OrderMagicNumber()==22) { SS=OrderTicket(); }
if(OrderMagicNumber()==33) { BL=OrderTicket(); }
if(OrderMagicNumber()==44) { SL=OrderTicket(); }
}//end if(OrderSymbol
}//end for
}//end if */Я хотел бы знать, есть ли простой способ исправить это.
Я не силен в кодировании, только в копировании и вставке.
Заранее спасибо
BaszaВы можете определить TradeSymbol как строку на глобальном совке, но там вы не сможете оценить функцию Symbol(). Поэтому замените все "TradeSymbol" на "Symbol()", или присвойте значение в функции init() или start() вот так:
помощь в программировании
Привет, я пытался программировать ea, и я следовал вашему курсу (очень интересно!).
Я достаточно хорошо знаю, как программировать на java и немного на c++.
Я пытался запрограммировать ea с индикаторами brain trend, идея заключается в следующем
когда индикаторы brainTrend2stop и braintrend1stop DOT присутствуют покупаем (и наоборот).
но если я вызываю функцию icustom следующим образом
BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;
я получаю только значение индикатора на текущем баре.
Есть ли способ сделать его булевым? Я бы хотел написать функцию типа
buy=true
BuyCondition = (IndicatorName1=true && IndicatorName2=true);
кто-нибудь может помочь, пожалуйста, пожалуйста, пожалуйста???
Контроль за исполнением ордера на вход...
У меня есть советник, который открывает и управляет позицией, но иногда индикатор дает один и тот же сигнал несколько раз и советник открывает каждый раз, когда этот сигнал выходит новая позиция - но я не хочу вторую или третью и так далее и далее позицию, я хочу только первую - возможно ли, чтобы советник проверял открытую позицию на основе магического числа и пары, чтобы избежать таких множественных входов?
Привет, я пытался запрограммировать ea, и я следовал вашему курсу (очень интересно!).
Я достаточно хорошо знаю, как программировать на java и немного c++
Я пытался запрограммировать ea с индикаторами brain trend, идея заключается в следующем
когда индикаторы brainTrend2stop и braintrend1stop DOT присутствуют покупаем (и наоборот).
но если я вызываю функцию icustom следующим образом
BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;
я получаю только значение индикатора на текущем баре.
Есть ли способ сделать его булевым? Я бы хотел написать функцию типа
buy=true
BuyCondition = (IndicatorName1=true && IndicatorName2=true);
Кто-нибудь может помочь, пожалуйста, пожалуйста, пожалуйста???