[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 158

 
Xaoss1990:

Помогите, пожалуйста... Уже несколько дней бьюсь....

А код-то где? Как помочь то?
 
Roger:
А код-то где? Как помочь то?

Вот часть кода где заключаем сделки:

//+------------------------------------------------------------------+
//+---------------------ЗАКЛЮЧАЕМ СДЕЛКУ ПОКУПКИ---------------------+
//+------------------------------------------------------------------+
if (POINT_BUY_M15 >= Strgh_UP_M15 && POINT_BUY_H1 >= Strgh_UP_H1 && POINT_BUY_H4 >= Strgh_UP_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 5, 0, 0, "My order #", 111, 0, Blue);
if(ticket < 0)
{
Print("Ордер не установлен. Ошибка - #",GetLastError());
return(0);
}
}

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_BUY_M15 < Strgh_UP_M15 || POINT_BUY_H1 < Strgh_UP_H1 || POINT_BUY_H4 < Strgh_UP_H4 && OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
{
close = 1;
}
if (close == 1)
{
if (OrderClose(OrderTicket(), lots, Bid, 5, Yellow) == true) Alert("OrderTicket() = ", OrderTicket(), ", lots = ", lots, ", Bid = ", Bid);
else Print ("Стоп не установлен");

}

//+------------------------------------------------------------------+
//+---------------------ЗАКЛЮЧАЕМ СДЕЛКУ ПРОДАЖИ---------------------+
//+------------------------------------------------------------------+
if (POINT_SELL_M15 >= Strgh_DOWN_M15 && POINT_SELL_H1 >= Strgh_DOWN_H1 && POINT_SELL_H4 >= Strgh_DOWN_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 5, 0, 0, "My order #", 222, 0, Green);
if(ticket < 0)
{
Print("Ордер не установлен. Ошибка - #",GetLastError());
return(0);
}
}
//------------------------------------------------Печать параметров на выбор----------------------------------------------------
//Print("Sell М15 = ", POINT_SELL_M15, ", Sell Н1 = ", POINT_SELL_H1, ", Sell Н4 = ", POINT_SELL_H4, ", номер ордера = ", ticket);
//------------------------------------------------Печать параметров на выбор----------------------------------------------------

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_SELL_M15 < Strgh_DOWN_M15 || POINT_SELL_H1 < Strgh_DOWN_H1 || POINT_SELL_H4 < Strgh_DOWN_H4 && OrdersTotal() == 1 && Magic == 222 && OrderType( ) == 1)
{
close = 1;
}
if (close == 1)
{
OrderClose(OrderTicket(), lots, Ask, 5, Red);
}

 
Это не та часть кода, где может быть ошибка.
 
Roger:
Это не та часть кода, где может быть ошибка.

Эм.... а остальной код - это вычисление значений ( POINT_BUY_M15, POINT_BUY_H, POINT_BUY_H4, POINT_SELL_M15, POINT_SELL_H, POINT_SELL_H4 ) для заключения сделок, она правильно работает.. я проверял... там все просто....

 
Если бы ошибка была здесь, в логах бы прописало "Стоп не установлен", а этого нет.
 
Подскажите пожалуйста. Был открыт ордер по определенному условию и закрыт по тралу. Как сделать чтобы на этой свече больше не открывалась позиция если условие на открытие истинно.
 

Осуществляется проверка условия в функции инит:

...
extern int proc_zahlest=50;

int init() 
{
if (proc_zahlest>100)
{
Alert("Параметр proc_zahlest д.б. <100% !!!");
}
return(0);
}

Как остановить выполнение индикатора (не допустить выполнение функции старт), если proc_zahlest>100

 
prom18:
Подскажите пожалуйста. Был открыт ордер по определенному условию и закрыт по тралу. Как сделать чтобы на этой свече больше не открывалась позиция если условие на открытие истинно.


Если всего лишь один ордер может быть открыт, то легко

start()
{
static int newbar;
if(newbar==Time[0])return(0);
if(OrdersTotal()>0)newbar=Time[0];
...
 
Roger:


Если всего лишь один ордер может быть открыт, то легко

Объясните, пожалуйста, на словах логику написанного.
 
prom18:
Объясните, пожалуйста, на словах логику написанного.

Когда открывается ордер, переменной newbar присваивается значение времени открытия текущего бара. На следующих тиках вплоть до нового бара работа советника будет блокироваться. Если ордер еще не закрылся, операция повторяется. И так пока ордер не закроется. Тогда на следующем баре советник готов к новым открытиям.
Причина обращения: