снова нужна помощ

 

почему то открываеться только ордер на бай. селл нет:( Не могу понять в чем проблема. ошибка 130 по стопам. раз бай открываться думаю что не в стопах дело а где то в другом месте.

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

if (OrdersTotal()<1)

{

if (iOpen(NULL,PERIOD_M1,2)>iClose(NULL,PERIOD_M1,1))

{

ordersell();

}

else

{

orderbay();

}

}

return(0);

}

//+------------------------------------------------------------------+

int orderbay()//функция открытия ордера на покупку

{

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+20*Point);

}

//+------------------------------------------------------------------+

int ordersell()//функция открытия ордера на продажу

{

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-15*Point,Ask+20*Point);

}

собственно говоря злополучный код:)

 
а так?
Файлы:
001_2.mq4  1 kb
 
Есть пару выходов


1.Прочтите книгу по программированию

2.Прочтите что такое форекс, и как в форексе выставляются уровни стоплосс и тейкпрофит


Ваш код будет выглядеть так:


int start()

{

if (OrdersTotal()<1)

{

if (iOpen(NULL,PERIOD_M1,2)>iClose(NULL,PERIOD_M1,1))

{

ordersell();

}

else

{

orderbay();

}

}

return(0);

}

//+------------------------------------------------------------------+

int orderbay()//функция открытия ордера на покупку

{

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+20*Point);

}

//+------------------------------------------------------------------+

int ordersell()//функция открытия ордера на продажу

{

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+15*Point,Bid-20*Point);

}

 

Большое спасибо. Ордера стали открываться.

Простейший скрипт simpleopen.mq4, предназначенный для открытия ордера Buy, выглядит так:

//--------------------------------------------------------------------
// simpleopen.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   return;                                   // Выход из start()
  }
//--------------------------------------------------------------------

Если запустить этот скрипт на исполнение, то в подавляющем большинстве случаев он будет работать. Скрипт состоит из одной специальной функции, содержащей функцию открытия ордера OrderSend() и оператор return. Опишем порядок исполнения программных строк и связанных с этим событий.

1. Пользователь прикрепил скрипт к окну финансового инструмента - перетянул название скрипта мышью из окна "Навигатор" клиентского терминала в окно финансового инструмента, по которому он хочет открыть рыночный ордер Buy стоимостью 0.1 лота со стоп-приказами, удалёнными от рыночного курса на 15 пунктов.

2. В момент прикрепления скрипта к окну финансового инструмента клиентский терминал передал управление (запустил на исполнение) специальной функции start() (кратко напомним, что start() скрипта запускается в момент присоединения к окну финансового инструмента, а start() эксперта - в момент поступления ближайшего тика по финансовому инструменту).

3. В рамках исполнения специальной функции start() управление передаётся в строку вызова функции открытия ордера:

   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);

Перед исполнением этой функции программа вычисляет значения всех формальных параметров:

выдержка из учебника по MQL4, которую я скачал с этого сайта. Здесь как видим открытие ордера отличается от предложенного вами.

Причина обращения: