А вот так:
//в глобальных static int prevtime = 0; int start() { // задаем работу по ЦЕНАМ ОТКРЫТИЯ if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу
static int prevtime=0; int start() { if (Time[0]==prevtime)return(0); prevtime = Time[0]; if (!IsTradeAllowed()) { prevtime=Time[1]; MathSrand(TimeCurrent()); Sleep(30000+MathRand()); }Начало такое.
а как будет выглядеть, закрытие по close[0]?
static int prevtime = 0; его лучше куда вписать в init? или как переменные данные в самом начале?
если я правильно понял условие if (Time[0] == prevtime) return(0); //если появился новый бар
prevtime = Time[0]; // начинаем работу пишем
загоняем воттак в код
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
if (Time[0] == prevtime) return(0); //если появился новый бар
prevtime = Time[0]; // начинаем работу
OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0);
спасибо
Просто в самом начале ф-и старт вставьте :
if (Time[0] == prevtime) return(0); //если появился новый бар
prevtime = Time[0]; // начинаем работу
-------------------------------------
И больше ничего.
Весь код будет работать по ценам открытия.
(Разве-что трал лучше задать выше этих строк. Чтобы он по всем тикам работал.)
И закрытие по close[0] (то бишь close[1]) - тоже при этом будет выполняться - так как вы хотите.
----------------------------------------------
Кстати - сами логически подумайте. Выражение close[0] - по сути ЭТО ТЕКУЩАЯ ЦЕНА. И закрытие тут будет бессмысленным. Т.е. не успеет позиция открыться в таком режиме, - она тут же и закроется.
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false) if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0); if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) if (OrderType()==OP_SELL) if( Close[1]==prevtime ||OrderOpenPrice()-Bid>=k*Point) OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE);возможно ли вот так написать или я ошибоку допустил?
========================
int start() { if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу if (OrdersTotal()<1) {//если нет откр. позиций OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0); } for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType()==OP_SELL) { if( OrderOpenPrice()-Bid>=k*Point) { OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE); } } } } }//int start()
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType()==OP_SELL) { if( OrderOpenPrice()-Bid>=k*Point) { OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE); } } }
а вот если написать при закрытий того же бара при котором мы открыли сделку, закрыть сделку
if( OrderOpenPrice()-Bid>=k*Point)
можно ли написать вместо этого просто close[1]?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
как правильно написать код входа при открытий нового бара. Суть состоит вот в чем, я хочу войту в сделку при образований нового бара (свечи), как правильно написать условия входа?
заранее спасибо.