Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
худшая цена не связана с аск и бид - это из другой песни, наверное, про зайцев..
проснись и пой !
если в бай по аску бы пускало мы бы как раз спред и не теряли, потому что бид меньше аск..
я что-то не пойму это я не спал ночь или вы ?
А ты спой, и прозреешь.)))
наврали половину.. бай - открытие/закрытие по бид, селл - открытие/закрытие по аск
Нда... :-) А где у вас спред? Я б по таким условиям как у вас уже мульен наторговал, может вы откроете свой ДЦ ;-)
"спс за ответы.но их много еще...."
вопрос-как сделать так чтобы позиция открывалась всего один раз а не при каждом изменении цены на 1 пункт при нахождении sar выше или ниже цены открытия свечки?(создал такой глюк-не пойму как избавиться)
вопрос-Close(0)-что означает? типа текущая цена?
1) Чтобы советник не открывал новый ордер при каждом тике прочитайте про функцию:
OrdersTotal()
Самый простой способ, поставить проверку типа:
if(OrdersTotal()<1 && "сигналы...")
{
Тут например открываются ордера
}
Но самый простой не значит хороший, на самом деле ничего хорошего из этого не получится, для того чтобы понять как пользоваться этой функцией прочитайте о ней в учебнике.
2) Close[0] это цена закрытия текущего бара, практически да-это текущая цена.
вот смотрите--
пишу так:
int start()
while (iSAR(NULL,0,0.05,0.2,0)<Close(0))
{
OrderSend(Symbol(),OP_BUY,0.1,NULL,10*Point,Bid-100*Point,Ask+500*Point,"КУПИЛ",1,0,Blue);
}
return(0);
'while' - semicolon expected - 1 ошибка. В чем прикол??или надо все данные с индикатора iSAR записывать в буфер типа SARBUFFER{i}? и потом уже оттуда втаскивать их в WHILE???
добавил еще фишку с ордерами=)
правильно.и будет ли работать?( ошибка WHILE все еще сохранилась(вот засада!!!!)).
int start()
while(iSAR(NULL,0,0.05,0.2,0)<Close(0))
{
OrderSend(Symbol(),OP_BUY,0.1,NULL,10*Point,Bid-100*Point,Ask+500*Point,"КУПИЛ",1,0,Blue);
if (OrdersTotal()<2 && OrdersTotal>0);
Alert("Открыта позиция!!!");
return(0);
}
ерунда какаято :-)
Вот например простой способ :
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
while(iSAR(NULL,0,0.02,0.2,0)<Close[0]){
if(Orders(Magic,OP_BUY)>0){
//Открываем ордер buy
if(OrderSend(Symbol(),OP_BUY,...)<0){
Alert("Не удалось открыть ордер buy, ошибка:"+GetLastError());
}
else
Alert("открыт ордер buy");
}}
while(iSAR(NULL,0,0.02,0.2,0)>Close[0]){
if(Orders(Magic,OP_SELL)>0){
//Открываем ордер sell
if(OrderSend(Symbol(),OP_SELL,...)<0){
Alert("Не удалось открыть ордер sell, ошибка: "+GetLastError());
}
else
Alert("открыт ордер sell");
}}
}
//----
return(0);
}
//+------------------------------------------------------------------+
int Orders(int Magic, int cmd)
{
int Total=OrdersTotal();
for(int i=0; i<Total; i++){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderSymbol()!=Symbol()) continue;
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()==cmd){
return(0);
}}}
return(1);
}
вот смотрите--
пишу так:
int start()
while (iSAR(NULL,0,0.05,0.2,0)<Close(0))
{
OrderSend(Symbol(),OP_BUY,0.1,NULL,10*Point,Bid-100*Point,Ask+500*Point,"КУПИЛ",1,0,Blue);
}
return(0);
'while' - semicolon expected - 1 ошибка. В чем прикол??или надо все данные с индикатора iSAR записывать в буфер типа SARBUFFER{i}? и потом уже оттуда втаскивать их в WHILE???
ТАК ПИСАТЬ НЕЛЬЗЯ!!!
Все должно выполняться внутри функции старт:
int start()
{
while (iSAR(NULL,0,0.05,0.2,0)<Close[0])
{
...
}
return(0);
}