Спрашивайте! - страница 115

 
TheRumpledOne:
Есть ли более простой способ найти номер бара сегодняшнего максимума и минимума?

today_high = High[0];

today_low_ = Low[0];

Найдите номер бара на сегодня ? 0 означает сегодня. Конечно, на D1.

Если вы находитесь на другом ТФ:

today_high = iHigh(Symbol(),PERIOD_D1,0);

today_low = iLow(Symbol(),PERIOD_D1,0);

FerruFx

 
TheRumpledOne:
Я хотел бы знать, на каком баре сегодня был самый высокий максимум и самый низкий минимум на H1 или меньшем таймфрейме.

Я знаю, что могу использовать цикл for и проверку.

Есть ли более элегантный способ сделать это?

Существует ли функция первого бара сегодняшнего дня?

Спасибо.

datetime some_time_start_day=D'0000.00.00 00:00';

datetime some_time_end_day=D'0000.00.00 00:00';

int shiftStart=iBarShift(NULL,PERIOD_M1,some_time_start_day);

int shiftEnd=iBarShift(NULL,PERIOD_M1,some_time_end_day);

double valH=High;

double valL=Low;

нет ничего проще... ps. Я думал, что вопрос был в том, чтобы найти бары на более низком таймфрейме, иначе просто сделайте то, что объяснил FerruFx, возьмите из D1

.

 

Уважаемые кодерсгуру,

Мне нужна ea, которая должна быть простым инструментом для вас,

она закрывает все открытые позиции (для определенной пары), когда 2 MA пересекаются.

Конечно, если более быстрая МА пересеклась вниз с более медленной МА, она закрывает длинную позицию,

и наоборот.

Варианты

- Тип более быстрой МА

- Значение более быстрой МА

- Тип медленной МА

- Значение медленной МА

- TimeFrame (мы можем фиксировать таймфрейм без помех

при переключении между окнами графиков таймфреймов).

Я пытался модифицировать MA перекрестным советником, но всегда неудачно.

Спасибо за вашу доброту.

 
IN10TION:
datetime some_time_start_day=D'0000.00.00 00:00';

datetime some_time_end_day=D'0000.00.00.00 00:00';

int shiftStart=iBarShift(NULL,PERIOD_M1,some_time_start_day);

int shiftEnd=iBarShift(NULL,PERIOD_M1,some_time_end_day);

double valH=High;

double valL=Low;

нет ничего проще... ps. Я думал, что вопрос был в том, чтобы найти бары на более низком таймфрейме, иначе просто делайте то, что объяснил FerruFx, берите из D1.

.

Спасибо.

Думаю, что проще некуда.

Я думал, что для BarStartOfDay может быть ключевое слово/резервное слово или что-то в этом роде.

 
IN10TION:
iBarShift найдет для вас бар, который начинается в этот день или также конечный бар для этого дня.

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)

далее...

использовать эти позиции баров для нахождения результатов iHighest и iLowest

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

int iLowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

результаты и сделано

Вот почему я хотел узнать:

https://www.mql5.com/en/forum/178406/page8

 

Здравствуйте,

Прежде всего, заранее благодарю вас за помощь!

Я пытаюсь понять, есть ли способ использовать несколько потоков в советнике, как это можно сделать в c++.

Причина в том, что я занимаюсь новостной торговлей и мне нужно, чтобы несколько ордеров отправлялись одновременно. Например, мне нужно разместить 3 ордера GBP/USD, USD/CAD, EUR/USD сразу после поступления данных. Моя проблема в том, что если я использую обычную функцию отправки ордеров 3 раза, это происходит медленно, так как она отправляет ордера постепенно, а не одновременно.

OrderSend("GBPUSD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

OrderSend("USDCAD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

OrderSend("EURUSD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

Я уверен, что это можно как-то сделать, потому что если я открываю 3 отдельных окна покупки/продажи в MT4 и нажимаю на них одновременно (используя программу торговли новостями), ордера отправляются в один и тот же момент и приходят намного быстрее. Когда вы делаете это таким образом, ордера появляются все сразу, в отличие от использования моего советника с 3 вызовами OrderSend, когда они появляются один за другим.

Есть ли способ настроить несколько потоков в советнике, или, возможно, существует какой-то тип пакетной отправки ордеров?

Спасибо!

Коул

 
ColeFlournoy:
Привет,

Прежде всего, заранее благодарю вас за помощь!

Я пытаюсь понять, есть ли способ использовать несколько потоков в советнике, как это можно сделать в c++.

Причина в том, что я занимаюсь новостной торговлей и мне нужно, чтобы несколько ордеров отправлялись одновременно. Например, мне нужно разместить 3 ордера GBP/USD, USD/CAD, EUR/USD сразу после поступления данных. Моя проблема в том, что если я использую обычную функцию отправки ордеров 3 раза, это происходит медленно, так как она отправляет ордера постепенно, а не одновременно.

OrderSend("GBPUSD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

OrderSend("USDCAD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

OrderSend("EURUSD",OP_BUY,0.01,ask,5,ask-25*point,ask+25*point, "Cole",11111,0,Red);

Я уверен, что это можно как-то сделать, потому что если я открываю 3 отдельных окна покупки/продажи в MT4 и нажимаю на них одновременно (используя программу торговли новостями), ордера отправляются в один и тот же момент и приходят намного быстрее. Когда вы делаете это таким образом, ордера появляются все сразу, в отличие от использования моего советника с 3 вызовами OrderSend, когда они появляются один за другим.

Есть ли способ настроить несколько потоков в советнике, или, возможно, существует какой-то тип пакетной отправки ордеров?

Спасибо!

Коул

В любом случае, ваша платформа не будет отправлять несколько ордеров в одно и то же время.

FerruFx

 

FerruFX - Я не уверен, что понимаю, о чем вы говорите?

Спасибо,

Коул

 
IN10TION:
У вас уже есть какой-то код для этого, который вы начали?

в файле mq4?

первое, что вам нужно, это подтверждение doji/inside = да или нет

в зависимости от ваших настроек он будет искать перед дожи/внутренней стороной или ждать.

когда он ждет 2 бара, он должен принять решение об ордерах, в зависимости от максимума или минимума предыдущего бара...

ну, вы можете начать программировать

у вас есть код для поиска дожи или инсайдов?

...

Привет IN10TION,

Вот код, который я использую (не мой код) для поиска внутреннего бара.

}

int IsInsideBar(int shift) {

//Внутренний бар, закрытие внутреннего бара должно быть выше, чем закрытие и средняя точка бара Текущий бар должен открыться.

//равно или выше, чем закрытие внутреннего бара Ордер BuyStop будет размещен на максимуме внутреннего бара, если ордер

//не достигается в течение следующих 4 баров, ордер отменяется. См. рисунок ниже

if (High[shift]>High[shift+1]) return(0);

if (Low[shift]<Low[shift+1]) return(0);

if (Close[shift]>Open[shift] && Close[shift]>(High[shift]+Low[shift])/2 && Open[shift-1]>=Close[shift]) return(1);

if (Close[shift]<Open[shift] && Close[shift]<(High[shift]+Low[shift])/2 && Open[shift-1]<=Close[shift]) return(-1);

return(false);

}

Теперь мой вопрос:

Если я хочу разместить buy-stop и sell-stop на high и low следующего бара, бара, следующего за внутренним баром... каким должен быть код?

Спасибо за помощь...

forexcel

 
IN10TION:
Я весь внимание, вы можете отправить мне личное сообщение или вынести это на всеобщее обозрение... если ваши индикаторы хорошо закодированы, ваш готовый советник не так далеко.

Добрый день Ин10тион

Во вложении картинка того, чем я торгую.

Я использую эти 4 индикатора

Сигнал на продажу

1: Slow Stochastic K% пересек D% выше 80 и наоборот для покупки ниже 20

2: QQE RSI пересекся ниже ATR и наоборот для покупки

3: CCI пересекся ниже 0 и наоборот для покупки

4: MACD ma пересеклись и сформировался 1 бар ниже 0 и наоборот для покупки

Если выполняются любые 3 из этих условий, то открываем позицию, например, стох подает сигнал на 5 минут позже MACD, затем на 20 минут CCI подает сигнал = открываем позицию.

или любые комбинации вышеперечисленного, если они совпадают с направлением индикатора Slope.

Снимок экрана прилагается

С уважением,

Файлы:
bones.gif  54 kb