Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет.
Я с нетерпением жду возможности научиться вашим трюкам и показать вам свои.
Привет. Я с нетерпением жду возможности научиться вашим трюкам и показать вам свои.
На этом форуме вы найдете много замечательных вещей.
Читайте и используйте функцию поиска без каких-либо ограничений!!!
Не стесняйтесь спрашивать о чем угодно ... Здесь много замечательных авторов/помощников.
FerruFx
В этом коде трейлинг-стоп установлен на 45 пунктов. Но трейлинг-стоп, похоже, не активируется, пока не пройдет 45 пунктов. Как мне нужно изменить этот код, чтобы трейлинг-стоп активировался в момент заключения сделки?
extern string Remark1 = "== Main Settings ==";
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = true;
extern double Lots = 4;
extern int Slippage = 2;
extern bool UseStopLoss = false;
extern int StopLoss = 100;
extern bool UseTakeProfit = false;
extern int TakeProfit = 15;
extern bool UseTrailingStop = true;
extern int TrailingStop = 45;
extern bool MoveStopOnce = False;
extern int MoveStopWhenPrice = 50;
extern int MoveStopTo = 1;
extern int MaxConcurrentTrades = 2;
//Version 2.01
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderStopLoss() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
Изменено красным цветом
Я сделал изменения, указанные красным цветом, но теперь советник, похоже, не хочет работать. Я выложу весь советник, чтобы вы посмотрели. Спасибо!
Убедитесь, что вы поставили () после orderstoploss
Круто, получилось!
Как насчет этого индикатора....
Можно ли его модифицировать, чтобы цены отображались разными цветами в зависимости от того, как они открываются? Например, если цена открывается выше предыдущего бара, то она будет зеленой, если ниже, то красной, а если ровно, то желтой? Эти цвета можно выбирать? Кроме того, можно ли расширить советник, чтобы он показывал 10 открытий, а не только 6?
Кроме того, в советнике, который мы только что починили, как бы я мог поместить входную настройку типа "Пипсы для активации трейлинг-стопа". Это есть в другом советнике, но я не знаю, как это закодировать.
OrderComment()
OrderTicket()
OrderLots()
ОрдерСтопЛосс()
OrderTakeProfit()
OrderOpenTime()
Это все потенциальные инструменты фильтрации ордеров.
Что еще в этих конкретных сделках делает их уникальными?
OrderComment()
OrderTicket()
OrderLots()
ОрдерСтопЛосс()
OrderTakeProfit()
OrderOpenTime()
Это все потенциальные инструменты фильтрации ордеров.
Что еще в этих конкретных профессиях делает их уникальными?Два наиболее важных для фильтрации ордеров - это OrderSymbol() и OrderMagicNumber(). Еще один важный инструмент - OrderComment().
Лучше всего ввести один из них в Метаредакторе, затем щелкнуть на слове asnd и нажать F1. Это приведет к появлению справки и списка всех функций заказа.
Счастливого программирования,
Hiachiever
Использование OrderComment
Будьте осторожны при использовании функции OrderComment() для идентификации сделок. Иногда брокер добавляет символы в комментарий.
Лучше всего использовать
if (StringFind(OrderComment(), UserComment, 0) > 0)
{
// ордер, идентифицированный по UserComment, найден в OrderComment
}
вместо
if (OrderComment() == UserComment)
{
// ордер может быть идентифицирован UserComment
// если OrderComment не был изменен брокером
}
Роберт
Закрытие сделок в Биквене
..............