Бросили горизонтальную линию на график, фиксирую ее цену, линию удаляю- она больше не нужна. Тут же устанавливаем ордер по этой цене.
В чем ошибка? И почему селл стоп не откроется?
зачем и дальше следить ценой, если мне нужно только значение цены горизонтальной линии?
Объясните!!! Help! Поподробней, пожалуйста!
С селлстопом - погорячился, откроется.
Теперь про линии. При живой торговле получается - смотришь на график, кидаешь горизонтальную линию, условия подходят - линия удаляется, ордер открывается, условия не подходят - линия удаляется, ордер не открывается. Чем это лучше простого скрипта на горячей клавише? На тестере, чтобы кинуть линию, надо включать визуализацию и опять таки наблюдать за графиком. Никакой оптимизации провести нельзя, Вообще даже не понимаю, зачем это пихать в тестер.
Люди добрые, подскажите, что не так. При сделке на продажу, которая открывается на первом тике 0 бара, стоп лосс нужно выставить на 30 пунктов (5 знаков) выше High первой свечи. Написал так, но стоп лосс совсем не ставит.
Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятойif(StopLoss > 0)
if(Bid < iHigh(Symbol(),0,1))
{
StopLoss = iHigh(Symbol(),0,1)+30*Point;
SL= Price + StopLoss*Point;
SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
}
alexey1979621: Люди добрые, подскажите, что не так. При сделке на продажу, которая открывается на первом тике 0 бара, стоп лосс нужно выставить на 30 пунктов (5 знаков) выше High первой свечи. Написал так, но стоп лосс совсем не ставит.
StopLoss = iHigh(Symbol(),0,1)+30*Point;
Это уже и есть нужный Вам уровень стоплосса, например, 1,5000+30*0,00001 = 1,5003
SL= Price + StopLoss*Point;
Зачем еще к Price добавлять StopLoss*Point(1,5003*0,00001=0,000015). SL становится практически равен Priсe, поэтому и не ставится стоплосс.
artmedia70: 1. Ищем последнюю закрытую позицию (MODE_HISTORY). 2. Если она закрыта по тейку (или вблизи него) --> Запоминаем её время открытия --> 3. Перебираем все открытые позиции (MODE_TRADES) и сравниваем их время открытия с запомненным (из п.2) --> Если запомненное время открытия закрытой по тейку позиции (из п.2) самое большое из времени открытия остальных открытых позиций --> Значит по тейку закрыта именно последняя открытая позиция --> 4. Кроем/удаляем нафиг всё остальное.
Хм. Вроде как написал. Но на выходе результат не тот..
Вот что вышло у меня:
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего открытого ордера
lastOOTMarket = -1, // Время открытия последнего открытого ордера рыночного
lastOOTHist = -1; // Время открытия последнего открытого ордера из историиfor (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() > 1) continue; // Все удалённые отложки нас не интересуют..if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия..
lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в историиif (MathAbs(OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return(0);
lastOOTHist = OrderOpenTime(); // Тогда время открытия последней закрытой позиции из истории
}
Comment("Время открытия последнего открытого ордера = ", lastOOTHist);
for (int h=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
{
if (lastOOTMarket < OrderOpenTime())
lastOOTMarket = OrderOpenTime();
if (lastOOTMarket < lastOOTHist) // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
}
}
Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
return (lastOrderCloseTime);
}
alexey1979621: Люди добрые, подскажите, что не так. При сделке на продажу, которая открывается на первом тике 0 бара, стоп лосс нужно выставить на 30 пунктов (5 знаков) выше High первой свечи. Написал так, но стоп лосс совсем не ставит.
У Вас тут вообще абы что. Начнём с того, что закрытие шорта всегда по АСКу, а не по БИДу.
Хм. Вроде как написал. Но на выходе результат не тот..
Вот что вышло у меня:
При поиске последнего закрытого, сначала нужно найти самый последний закрытый, а вот проверку его на закрытие по тейку нужно вынести за пределы цикла, иначе он каждый закрытый ордер проверяет на закрытие по тейку и, если да, то запоминает время первого, который в цикле попался, закрытый по тейку, а не самого последнего.
Roger, не могу понять!
Бросили горизонтальную линию на график, фиксирую ее цену, линию удаляю- она больше не нужна. Тут же устанавливаем ордер по этой цене.
В чем ошибка? И почему селл стоп не откроется?
зачем и дальше следить ценой, если мне нужно только значение цены горизонтальной линии?
Объясните!!! Help! Поподробней, пожалуйста!
С селлстопом - погорячился, откроется.
Теперь про линии. При живой торговле получается - смотришь на график, кидаешь горизонтальную линию, условия подходят - линия удаляется, ордер открывается, условия не подходят - линия удаляется, ордер не открывается. Чем это лучше простого скрипта на горячей клавише? На тестере, чтобы кинуть линию, надо включать визуализацию и опять таки наблюдать за графиком. Никакой оптимизации провести нельзя, Вообще даже не понимаю, зачем это пихать в тестер.
Извини! Тогда быстро на горшок и спать! Спокойного утра! ;)
А на пальцах? Как время и цена могут говорить о закрытии по тейку? Я конечно и сам могу подумать, но у меня уже 7.43 утра, а я ещё не ложился.
Если 7.43 и не ложился.. Значится, предположу, что пишется грааль!
Люди добрые, подскажите, что не так. При сделке на продажу, которая открывается на первом тике 0 бара, стоп лосс нужно выставить на 30 пунктов (5 знаков) выше High первой свечи. Написал так, но стоп лосс совсем не ставит.
Это уже и есть нужный Вам уровень стоплосса, например, 1,5000+30*0,00001 = 1,5003
SL= Price + StopLoss*Point;Зачем еще к Price добавлять StopLoss*Point (1,5003*0,00001=0,000015). SL становится практически равен Priсe, поэтому и не ставится стоплосс.1. Ищем последнюю закрытую позицию (MODE_HISTORY).
2. Если она закрыта по тейку (или вблизи него) --> Запоминаем её время открытия -->
3. Перебираем все открытые позиции (MODE_TRADES) и сравниваем их время открытия с запомненным (из п.2) --> Если запомненное время открытия закрытой по тейку позиции (из п.2) самое большое из времени открытия остальных открытых позиций --> Значит по тейку закрыта именно последняя открытая позиция -->
4. Кроем/удаляем нафиг всё остальное.
Хм. Вроде как написал. Но на выходе результат не тот..
Вот что вышло у меня:
Люди добрые, подскажите, что не так. При сделке на продажу, которая открывается на первом тике 0 бара, стоп лосс нужно выставить на 30 пунктов (5 знаков) выше High первой свечи. Написал так, но стоп лосс совсем не ставит.
У Вас тут вообще абы что. Начнём с того, что закрытие шорта всегда по АСКу, а не по БИДу.
Стоп лосс все равно не ставится, а тайк профит работает. Код стоп лосса и тейк профита прилагаю
Хм. Вроде как написал. Но на выходе результат не тот..
Вот что вышло у меня: