double iADX( stringsymbol, // имя символа int timeframe, // таймфрейм intperiod, // период усреднения intapplied_price, // используемая цена intmode, // источник данных intshift// сдвиг );
shift [in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). Разве этот сдвиг не предназначен для предотвращения перерисовки ? Или можете простыми словами пояснить, что же данный сдвиг создает?
1) Как правильно прописать в коде, чтобы или советник определял наличие/отсутствие суффикса автоматически? Либо чтобы человек сам мог вводить суффикс, если он есть у его брокера.
Достаточно ли такого когда в разделе настроек?
inputstring Siffix="Auto";
2) Как прописать запрет торговли на других ТФ кроме определенного?
Пробовал через функцию запрета торговли определенных пар, подобный код, + ENUM_TIMEFRAMES tf = PERIOD_M15 использовать. Но польза нулевая.
1) Как правильно прописать в коде, чтобы или советник определял наличие/отсутствие суффикса автоматически? Либо чтобы человек сам мог вводить суффикс, если он есть у его брокера.
Достаточно ли такого когда в разделе настроек?
2) Как прописать запрет торговли на других ТФ кроме определенного?
Пробовал через функцию запрета торговли определенных пар, подобный код, + ENUM_TIMEFRAMES tf = PERIOD_M15 использовать. Но польза нулевая.
Это уже вопросы сюда там и код и готовый советник напишут.
Тогда возможно отличаются котировки, в любом случае проблема в том, что показания индикатора в момент открытия ордера были разные
тестирование ведется на том же счете, демке, на котором идет торговля.котировки совпадают.
Проверил бары открытия. В условиях открытия прописано общее условие для ордеров обоих направлений:
iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, bar); // как индикатор орпределяет флэт
ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, bar); // как индикатор орпеделяет где покупать
isell=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, bar); // как индикатор орпеделяет где продаватьif(iflet<f && ibuy>isell) //условие для покупки и определение флета
{
for(x=1;x<=MAX_Lines;x++) // считает сколько открыто линий сетки отложенными ордерами, чтобы не превышало указанное в исходных параметрах MAX_Lines
{ //сек/мин/ч/дн/if (OrderSend(Symbol(),OP_BUYLIMIT,lot,Ask-((Delta1-Delta)+Delta*x)*Point,slippage,Ask-((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Ask+TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Blue))
{Print("Open BuyLimit: ",_Symbol);}
else {Print("Error Open BuyLimit: ",_Symbol," / ",GetLastError());}
}
}
elseif(iflet<f && ibuy<isell)//условие для продажи и определение флета
{
for(x=1;x<=MAX_Lines;x++)
{
//сек/мин/ч/дн/ if (OrderSend(Symbol(),OP_SELLLIMIT,lot,Bid+((Delta1-Delta)+Delta*x)*Point,slippage,Bid+((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Bid-TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Red))
{Print("Open SellLimit: ",_Symbol);}
else {Print("Error Open SellLimit: ",_Symbol," / ",GetLastError());}
}
И это условие не было выполнено, т.е. вообще не должны были открыться никакие лимитки.
тут на соседней ветке, нашел подобную проблему, и там люди советовали изменить порядок расчета с цен закрытия на цены открытия.
тестирование ведется на том же счете, демке, на котором идет торговля.котировки совпадают.
Проверил бары открытия. В условиях открытия прописано общее условие для ордеров обоих направлений:
И это условие не было выполнено, т.е. вообще не должны были открыться никакие лимитки.
тут на соседней ветке, нашел подобную проблему, и там люди советовали изменить порядок расчета с цен закрытия на цены открытия.
Это в принципе может решить проблему?
Можно попробовать так
iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, 0); // как индикатор орпределяет флэтiflet1=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, 1); // как индикатор орпределяет флэт
ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, 0); // как индикатор орпеделяет где покупать
isell=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, 0); // как индикатор орпеделяет где продаватьif(iflet1<=f && iflet<f && ibuy>isell) //условие для покупки и определение флета
{
for(x=1;x<=MAX_Lines;x++) // считает сколько открыто линий сетки отложенными ордерами, чтобы не превышало указанное в исходных параметрах MAX_Lines
{ //сек/мин/ч/дн/if (OrderSend(Symbol(),OP_BUYLIMIT,lot,Ask-((Delta1-Delta)+Delta*x)*Point,slippage,Ask-((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Ask+TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Blue))
{Print("Open BuyLimit: ",_Symbol);}
else {Print("Error Open BuyLimit: ",_Symbol," / ",GetLastError());}
}
}
elseif(iflet1<=f && iflet<f && ibuy<isell)//условие для продажи и определение флета
{
for(x=1;x<=MAX_Lines;x++)
{
//сек/мин/ч/дн/ if (OrderSend(Symbol(),OP_SELLLIMIT,lot,Bid+((Delta1-Delta)+Delta*x)*Point,slippage,Bid+((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Bid-TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Red))
{Print("Open SellLimit: ",_Symbol);}
else {Print("Error Open SellLimit: ",_Symbol," / ",GetLastError());}
}
double iADX( stringsymbol, // имя символа int timeframe, // таймфрейм intperiod, // период усреднения intapplied_price, // используемая цена intmode, // источник данных intshift// сдвиг );
shift [in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). Разве этот сдвиг не предназначен для предотвращения перерисовки ? Или можете простыми словами пояснить, что же данный сдвиг создает?
В mql4 это индекс бара на котором надо получить значение индикатора. 0 — текущий, следующий слева — 1 и так далее…
в описании индикатора ADX сказано:
double iADX(string symbol, // имя символа
int timeframe, // таймфрейм
int period, // период усреднения
int applied_price, // используемая цена
int mode, // источник данных
int shift // сдвиг
);
shift [in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). Разве этот сдвиг не предназначен для предотвращения перерисовки ? Или можете простыми словами пояснить, что же данный сдвиг создает?
И чему равен этот shift в коде
в коде его можно менять в настройках:
я задавал различные значения при тестировании, но в настройках на демке оставил по умолчанию - 2.
в коде его можно менять в настройках:
я задавал различные значения при тестировании, но в настройках на демке оставил по умолчанию - 2.
Тогда возможно отличаются котировки, в любом случае проблема в том, что показания индикатора в момент открытия ордера были разные
Пара вопросов по коду.
1) Как правильно прописать в коде, чтобы или советник определял наличие/отсутствие суффикса автоматически? Либо чтобы человек сам мог вводить суффикс, если он есть у его брокера.
Достаточно ли такого когда в разделе настроек?
2) Как прописать запрет торговли на других ТФ кроме определенного?
Пробовал через функцию запрета торговли определенных пар, подобный код, + ENUM_TIMEFRAMES tf = PERIOD_M15 использовать. Но польза нулевая.
Пара вопросов по коду.
1) Как правильно прописать в коде, чтобы или советник определял наличие/отсутствие суффикса автоматически? Либо чтобы человек сам мог вводить суффикс, если он есть у его брокера.
Достаточно ли такого когда в разделе настроек?
2) Как прописать запрет торговли на других ТФ кроме определенного?
Пробовал через функцию запрета торговли определенных пар, подобный код, + ENUM_TIMEFRAMES tf = PERIOD_M15 использовать. Но польза нулевая.
Это уже вопросы сюда там и код и готовый советник напишут.
Тогда возможно отличаются котировки, в любом случае проблема в том, что показания индикатора в момент открытия ордера были разные
тестирование ведется на том же счете, демке, на котором идет торговля.котировки совпадают.
Проверил бары открытия. В условиях открытия прописано общее условие для ордеров обоих направлений:
И это условие не было выполнено, т.е. вообще не должны были открыться никакие лимитки.
тут на соседней ветке, нашел подобную проблему, и там люди советовали изменить порядок расчета с цен закрытия на цены открытия.
Это в принципе может решить проблему?
тестирование ведется на том же счете, демке, на котором идет торговля.котировки совпадают.
Проверил бары открытия. В условиях открытия прописано общее условие для ордеров обоих направлений:
И это условие не было выполнено, т.е. вообще не должны были открыться никакие лимитки.
тут на соседней ветке, нашел подобную проблему, и там люди советовали изменить порядок расчета с цен закрытия на цены открытия.
Это в принципе может решить проблему?
Если у тебя сдвиг, то уже все равно open или close, т.к. цена уже не поменяется.
Возможно злую шутку играет сглаживание. Запусти в тестере индикатор ADX на всех тиках и посмотри как ведет себя линия.
тестирование ведется на том же счете, демке, на котором идет торговля.котировки совпадают.
Проверил бары открытия. В условиях открытия прописано общее условие для ордеров обоих направлений:
И это условие не было выполнено, т.е. вообще не должны были открыться никакие лимитки.
тут на соседней ветке, нашел подобную проблему, и там люди советовали изменить порядок расчета с цен закрытия на цены открытия.
Это в принципе может решить проблему?
Можно попробовать так
Можно попробовать так
спасибо, завтра попробую как вы рекомендуете.
вот как всё выглядит и в тестере и на демке. Я сразу стал проверять на всех тиках на таймфрейме М1, на включенной визуализации, и во такая картина.
в описании индикатора ADX сказано:
double iADX(string symbol, // имя символа
int timeframe, // таймфрейм
int period, // период усреднения
int applied_price, // используемая цена
int mode, // источник данных
int shift // сдвиг
);
shift [in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). Разве этот сдвиг не предназначен для предотвращения перерисовки ? Или можете простыми словами пояснить, что же данный сдвиг создает?
В mql4 это индекс бара на котором надо получить значение индикатора. 0 — текущий, следующий слева — 1 и так далее…