Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет, Вульф
Я знаю, что это уже обсуждалось, но может ли кто-нибудь показать мне какой-нибудь код, чтобы разрешить только 1 сделку на бар? Спасибо.
Это работает для меня
datetime LastOpenTime=0;
//////////////////////////////////////////
int Order;
for(int t=0;t<OrdersTotal();t++)
{
if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELL)
{
if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();
}
}
}
Затем я просто вставляю это в свой код
if(LastOpenTime0)
{ OrderSend(blah blah
Time[0] - это начало свечи вашего таймфрейма, поэтому убедитесь, что вы выбрали правильный таймфрейм.
Это работает для меня
datetime LastOpenTime=0;
//////////////////////////////////////////
....................
Time[0] - это начало свечи вашего таймфрейма, поэтому убедитесь, что вы выбрали правильный таймфрейм.Это может быть немного проще:
datetime LastOpenTime; //Global var
[/CODE]
[CODE]
int init()
{
LastOpenTime=Time[0];
}
int start()
{
................
if(LastOpenTime!=Time[0])
{
// do your trade code
LastOpenTime=Time[0];
}
..............
return(0);
}Ваш "торговый код" будет исполнен только один раз на любой свече. На этой свече больше не будет никакой торговли, даже если вы закроете MT4 и включите его снова. Но обратите внимание, что если вы активируете советника на свече 5pm, то на этой свече тоже не будет никакой торговли, вам придется ждать следующей свечи.
Я знаю, что это уже обсуждалось, но может ли кто-нибудь показать мне код, позволяющий только 1 сделку на бар? Спасибо.
Global, поместите это перед init()
In the order placement and/or order close stuff, wrap it in this:
{
if blah blah blah, gimme pips // not actual functions but you get the idea
if blah blah blah, close orders // um
}Common function outside main loop:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}Помощь в программировании
Привет,
Я пытался программировать некоторые вещи, но уперся в кирпичную стену. Поэтому я попробовал кое-что очень простое. Если я откомментирую "Print("Five");" и протестирую программу, она выведет только "Yahooooooo". (Ну, он также печатает "One"). Теперь, когда "Print("Five");" закомментирован, даже "Yahooooooo" не печатается. Что я упускаю???
Закрытие всех отложенных и открытых ордеров, когда 1 сделка достигает TP
Здравствуйте,
Я пытаюсь написать код в моем советнике, который будет закрывать все отложенные и открытые ордера, когда 1 сделка достигает TP. Ниже приведены коды, которые я использовал, но, похоже, они не работают. Может кто-нибудь взглянуть и подсказать, чего не хватает. Спасибо.
if( PreviousOpenOrders > OpenOrders )
{
for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- )
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode = OrderType();
if( OrderSymbol() == Symbol() &&
OrderMagicNumber()==Magic)
{
if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);
if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);
если (режим == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (mode == OP_BUYLIMIT) OrderDelete(OrderTicket());
}
}
}
}
Используйте Bid и Ask соответственно вместо OrderClosePrice()...
Используйте Bid и Ask соответственно вместо OrderClosePrice()...
Здравствуйте, Ральф,
не могли бы вы помочь привести пример. Спасибо за помощь.
Привет, я пытался программировать некоторые вещи, но уперся в кирпичную стену. Поэтому я попробовал кое-что очень простое. Если я откомментирую "Print("Five");" и протестирую программу, она выведет только "Yahooooooo". (Ну, он также печатает "One"). Теперь, когда "Print("Five");" закомментирован, даже "Yahooooooo" не печатается. Что я упускаю???
Если вы не используете скобки, будет выполнена только одна строка. Это зависит от того, что вы хотите сделать, но вы должны сделать это следующим образом:
{
Print("Five");
Print("Yahoooooooooooooooooooooooo");
}if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);
if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);
Переместить стоп один раз
Вот мой небольшой код для перемещения стоплосса в безубыток после получения определенной прибыли. Есть ли в этом что-то неправильное?
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {
OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}