Всегда отложниками было сложно управлять. на мт4 тоже. может попробовать уйти от этого? например сделать виртуальные отложники (просто хранить их в переменных и открываться по рынку, когда цена пересекла). Сейчас ведь время важно...
Valmars: Такие единичные ошибки не повлияют на судьбу Вашего советника на чемпионате. Вот если при отсутствии денег он тупо будет повторно пытаться открыть позицию, генерируя гигабайты в журнал, как это бывало в прошлых чемпионатах, тогда дисквалифицируют.
Не, когда отложенник удалили, другой конечно не выставится если денег нет
У меня возникла проблема в определении уровней стопов для отложенных ордеров. При спокойном рынке при желании поставить ордер на дозволенную границу великолепно работает функция SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL), ордера ставятся и все довольны, в том числе и я. А при сильных движениях рынка в начале торговых сессий эта функция перестает работать, ордера не ставятся и в терминале начинают сыпаться ошибки про invalid stops.
Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?
P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.
Vladix: У меня возникла проблема в определении уровней стопов для отложенных ордеров. При спокойном рынке при желании поставить ордер на дозволенную границу великолепно работает функция SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL), ордера ставятся и все довольны, в том числе и я. А при сильных движениях рынка в начале торговых сессий эта функция перестает работать, ордера не ставятся и в терминале начинают сыпаться ошибки про invalid stops.
Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?
P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.
Для отложенных ордеров ошибка invalid stops возникает и при цене открытия ближе стоплевел от текущей.
т.е. проверять на стоплевел надо не только стопы, но и цену открытия.
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
Хочу разобраться. Поправьте меня, если ошибаюсь. Когда я изучал документацию по индикаторам (фракталы, кажется), мне чётко врезалось в память и помнится по сей день, что при двух соседних (идущих подряд или разделяемых незначительным количеством баров) экстремумах равного уровня ключевым считается самый послений (более новый, что правее). Однако индикатор Zig-zag, а также свойство примагничивания графических объектов (видимо, основанное на этом зигзаге) фиксируются на первом экстремуме из двух близких одного уровня свечах, хотя с примагничиванием до сих пор не могу дать однозначного заключения, так как, по-моему, поведение меняется от случая к случаю. А вот Zig-zag - этот строит только по самой первой свечке. Разве это правильно, товарищи? Разве так должно быть? Или существует несколько "стандартов" без однозначной чёткости правил и каждый волен выбирать сам, судить ли об экстремуме по крайней левой или правой свечке?
Всегда отложниками было сложно управлять. на мт4 тоже. может попробовать уйти от этого? например сделать виртуальные отложники (просто хранить их в переменных и открываться по рынку, когда цена пересекла). Сейчас ведь время важно...
времени нет уже... код только отладил.
хоть немного потестировать успеть, настроить
Такие единичные ошибки не повлияют на судьбу Вашего советника на чемпионате. Вот если при отсутствии денег он тупо будет повторно пытаться открыть позицию, генерируя гигабайты в журнал, как это бывало в прошлых чемпионатах, тогда дисквалифицируют.
Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?
P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.У меня возникла проблема в определении уровней стопов для отложенных ордеров. При спокойном рынке при желании поставить ордер на дозволенную границу великолепно работает функция SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL), ордера ставятся и все довольны, в том числе и я. А при сильных движениях рынка в начале торговых сессий эта функция перестает работать, ордера не ставятся и в терминале начинают сыпаться ошибки про invalid stops.
Я бы не хотел, чтобы из-за подобного доверия к рекомендуемым функциям мой эксперт исключили из соревнования. Но как тогда узнать корректный разрешенный уровень стопов на данный момент по данному символу?
P.S. Очень не хотелось бы использовать подбор с инкрементным увеличением в случае ошибки, да и количество ошибок в этом случае возрастет.Для отложенных ордеров ошибка invalid stops возникает и при цене открытия ближе стоплевел от текущей.
т.е. проверять на стоплевел надо не только стопы, но и цену открытия.
Полагаю, что имеется ошибка в работе функции HistoryDealsTotal(), если она запускается после HistorySelectByPosition().
Через раз выдаёт количество сделок, равное 0, и это при наличии открытой позиции (мультивалютный вариант).
Вот такой код:
void GetDealQuantity(string smbl)
{
long pos_id;
int total, quantity=0;
ulong ticket=0, newticket;
PositionSelect(smbl);
pos_id=PositionGetInteger(POSITION_IDENTIFIER);
bool select=HistorySelectByPosition(pos_id);
total=HistoryDealsTotal();
Print(__FUNCTION__," select=",select," total=",total);
for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
newticket=HistoryOrderGetTicket(i);
if(ticket!=newticket) { quantity++; ticket=newticket; }
}
if(smbl==symbol1) quantity1=quantity;
if(smbl==symbol2) quantity2=quantity;
Print(__FUNCTION__," quantity=",quantity);
}
Выдаёт в журнал:
2010.01.04 00:20:05 GetDealQuantity select=true total=0
2010.01.04 00:20:05 GetDealQuantity quantity=0
2010.01.04 00:20:05 EURJPY volume=0.1 quantity=0
2010.01.04 00:20:05 GetDealQuantity select=true total=1
2010.01.04 00:20:05 GetDealQuantity quantity=1
2010.01.04 00:20:05 AUDUSD volume=0.1 quantity=1
Старайтесь правильно вставлять код в сообщения. Попробуйте переделать свой пример так:
Есть где-нибудь пример скрипта записи последней котировки в буфер обмена или похожее что-нибудь?
Буфер обмена виндовса?
Надо в msdn смотреть в какой dll нужные функции...