Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кто-нибудь может помочь мне лучше понять, как изменить код, чтобы позволить советнику исполнять одновременные ордера в нескольких экземплярах (другими словами, я тестирую один и тот же советник на нескольких парах одновременно и использую разные магические числа для каждого экземпляра).
Исходный код включает следующее:
int total=OrdersTotal();
if(total<1)
И я думаю, что именно здесь и кроется проблема. Если я увеличиваю число, то просто исполняется несколько ордеров на одном и том же баре (M15) для одной и той же пары. Если оставить if(total<1), то это не позволит одновременное исполнение ордеров на разных парах.
Могу ли я изменить что-то в тике или баре, чтобы разрешить только один ордер за раз на пару, но несколько ордеров для всех пар, к которым прикреплен советник (с разным магическим числом)?
Спасибо всем, кто может помочь или предложить свой вариант!
Чили
Запутался в нескольких операторах if
///////////////////// НАЧАЛО ТОРГОВЛИ В ВОСКРЕСЕНЬЕ/////////////////////////
StartDay=7; StartHour=1; StartMinute=55;
{
if(TimeDayOfWeek(TimeCurrent())==StartDay)
{
if(TimeHour(TimeCurrent())==StartHour)
{
if(TimeMinute(TimeCurrent())==StartMinute)
{
}
}
}
}
Я пытаюсь заставить советника активироваться, когда наступает седьмой день (Day 7), час 1 (Hour 1) и 55 минут (55 minutes). Что я делаю не так? Сегодня я включил компьютер, и советник начал торговать сразу же (до часа 1)! Пожалуйста, помогите.
Спасибо!
Дэйв
Привет,
Я хочу знать, как я могу построить пересечение МА младшего таймфрейма на графике старшего таймфрейма.
Например, я хочу построить стрелку на графике H1, когда MA5 и MA10 M15 пересекаются.
Пожалуйста, дайте мне знать.
Спасибо,
JForex.MA на любом графике - это просто более высокая/низкая версия MA на более высоком/низком таймфрейме. Например, если вы нанесли 60MA на 5-минутный график, но хотите посмотреть, как она выглядит на часовом графике, то просто умножьте 60 на 12 (5-минутные интервалы в часе). Таким образом, 720 MA на часовом графике - это то же самое, что 60 MA на 5-минутном графике.
Понятно?
Люкс
///////////////////// НАЧАЛО ТОРГОВЛИ В ВОСКРЕСЕНЬЕ/////////////////////////
StartDay=7; StartHour=1; StartMinute=55;
{
if(TimeDayOfWeek(TimeCurrent())==StartDay)
{
if(TimeHour(TimeCurrent())==StartHour)
{
if(TimeMinute(TimeCurrent())==StartMinute)
{
}
}
}
}
Я пытаюсь заставить советника активироваться, когда наступает седьмой день (Day 7), час 1 (Hour 1) и 55 минут (55 minutes). Что я делаю не так? Сегодня я включил компьютер, и советник начал торговать сразу же (до часа 1)! Пожалуйста, помогите.
Спасибо!
ДэйвПосмотрите еще раз файл справки.
Возвращает текущий день недели на основе нуля (0-воскресенье,1,2,3,4,5,6) последнего известного времени сервера.
Люкс
Кто-нибудь может помочь мне лучше понять, как модифицировать код, чтобы позволить советнику исполнять одновременные ордера в нескольких экземплярах (другими словами, я тестирую один и тот же советник на нескольких парах одновременно и использую разные магические числа для каждого экземпляра).
Оригинальный код включает следующее:
int total=OrdersTotal();
if(total<1)
И я думаю, что проблема заключается именно в этом. Если я увеличиваю число, то это просто исполняет несколько ордеров на одном баре (M15) для одной и той же пары. Если оставить if(total<1), то это не позволит одновременное исполнение ордеров на разных парах.
Могу ли я изменить что-то в тике или баре, чтобы разрешить только один ордер за раз на пару, но несколько ордеров для всех пар, к которым прикреплен советник (с разным магическим числом)?
Спасибо всем, кто может помочь или предложить свой вариант!
ЧилиOrdersTotal - это встроенная функция, которая не учитывает магическое число. Вам нужно написать свою собственную функцию, которая использует OrdersTotal, но фильтрует по магическому числу и, возможно, символу. Здесь и в других местах есть много примеров.
Удачи.
Lux
Посмотрите еще раз файл справки. Люкс
Я изменил StartDay на 0, и изменил StartHour на текущий час GMT моего брокера, и изменил StartMinute на 5 минут раньше минут GMT - Он все еще работает, когда время GMT совпадает с моим временем начала. Я просмотрел файлы справки, но в них не показан множественный оператор if. Множественные операторы if всегда ставят меня в тупик. Что, черт возьми, я делаю не так? Я хочу, чтобы программа не торговала до соответствующего времени начала торгов в воскресенье и делала комментарий "Неторговое время" до тех пор, пока время не будет соответствовать времени начала торгов в воскресенье.
Сильно запутался!!!
?????
OrdersTotal - это встроенная функция, которая не учитывает магическое число. Вам нужно написать свою собственную функцию, которая использует OrdersTotal, но фильтрует по магическому числу и, возможно, символу. Здесь и в других местах есть много примеров.
Удачи.
LuxВот один из них, который я сделал и использовал довольно часто:
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[/PHP]
And if you want to close only a certain order by magic number:
{
int intOffset=0;
int Count = OTBM(intMagic);
while(OTBM(intMagic)>0 && Count > 0)
{
OrderSelect(intOffset,SELECT_BY_POS);
if(OrderMagicNumber()==intMagic)
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);
else if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);
Count--;
}
else {
intOffset++;
}
}
return(0);
}
Order Profit By Magic:
[PHP]double OPBM(int intMagic)//OrderProfitByMagic
{
double dblProfit=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) dblProfit=dblProfit+OrderProfit();
intPOS++;
}
else
boolTerm=true;
}
return(dblProfit);
}
Надеюсь, это поможет.
MA на любом графике - это просто более высокая/низкая версия MA на более высоком/низком таймфрейме. Например, если вы нанесли 60MA на 5-минутный график, но хотите посмотреть, как она выглядит на часовом графике, то просто умножьте 60 на 12 (5-минутные интервалы в часе). Таким образом, 720 MA на часовом графике - это то же самое, что 60 MA на 5-минутном графике.
Имеет смысл?
LuxАбсолютно логично. Как вы увидите M5 10MA на графике H1?
10/12=0.84. Можете ли вы нанести МА 0,84 на график H1? Нет.
Но это работает в обратную сторону - H1 10MA = M5 120MA.
Поэтому мой вопрос в том, как я могу увидеть пересечение 5MA на более высоком таймфрейме, например H4.
Спасибо.
цикл for на MQL4
Читая курс MQL4 от Coders' Guru, я наткнулся на эту часть о цикле 'for' в уроке 5, которая меня смутила. Там говорится, что может быть только одно тестовое выражение. Но в приведенных примерах содержится 2 тестовых выражения.
int i;
int j;
for(i=0,j=0;i<15,i<;i++,j++)
Print(i);
int i;
for(i=15;i>0,i<;i--)
Print(i);
Кто-нибудь может просветить?
Спасибо.