В функции
void OldOrdersClose()отключил пару строчек, ставших уже ненужными
// else buy_found = true;
...
// else sell_found = true;
...
void NewOrdersOpen(){
int order_id = 0;
// если не найдено ни одного ордера - нужно создать новый
if (buy_open
//&& !buy_found) && OrdersTotal()==0) // 4x_trader: ввели ограничение - откроем только одну позицию, если ордеров нет вообще (так проще для проверки, потом можно и усложнить))
{
double take_profit_buy = 0; double stop_loss_buy = 0;
if (take_profit > 0) take_profit_buy = Ask + take_profit * Point;
if (stop_loss > 0) stop_loss_buy = Bid - stop_loss * Point;
//order_id = OrderSend(Symbol(), OP_BUY, lot, Ask, 5, stop_loss_buy, take_profit_buy, "Order BUY",
TimeCurrent(), 0, Green);
order_id = OrderSend(Symbol(), OP_BUY, lot, Ask, 5, stop_loss_buy, take_profit_buy, "Order BUY",
0, 0, Green);
// 4x_trader:
зачем нам указывать в качестве магика текущее время сервера, не понял, поэтому поставил ноль...
//
Print("tma_up = ",tma_up, "; tma_down=",tma_down);// 4x_trader: распечатаем при необходимости для отладки
}
if (sell_open
//&& !sell_found)
&& OrdersTotal()==0) // 4x_trader: ***
{
double take_profit_sell = 0; double stop_loss_sell = 0;
if (take_profit > 0) take_profit_sell = Ask - take_profit * Point;
if (stop_loss > 0) stop_loss_sell = Bid + stop_loss * Point;
//order_id = OrderSend(Symbol(), OP_SELL, lot, Bid, 5, stop_loss_sell, take_profit_sell, "Order SELL", TimeCurrent(), 0, Red);
order_id = OrderSend(Symbol(), OP_SELL, lot, Bid, 5, stop_loss_sell, take_profit_sell, "Order SELL",
0, 0, Red);
// 4x_trader: здесь аналогично покупке
//Print("tma_up = ",tma_up, "; tma_down=",tma_down);// распечатаем для отладки, если будет нужно...
}
}
На этом разбор кода закончим и перейдём к тестированию.
В функции [b]void OldOrdersClose()[/b]
отключил пару строчек, ставших уже ненужными
// else buy_found = true;
...
// else sell_found = true;
...
[b]void NewOrdersOpen()[/b]
{
int order_id = 0;
// если не найдено ни одного ордера - нужно создать новый
if (buy_open [b]//&& !buy_found)[/b]
[b]&& OrdersTotal()==0)[/b] // 4x_trader: ввели ограничение - откроем только одну позицию, если ордеров нет вообще (так проще для проверки, потом можно и усложнить))
{
double take_profit_buy = 0; double stop_loss_buy = 0;
if (take_profit > 0) take_profit_buy = Ask + take_profit * Point;
if (stop_loss > 0) stop_loss_buy = Bid - stop_loss * Point;
//order_id = OrderSend(Symbol(), OP_BUY, lot, Ask, 5, stop_loss_buy, take_profit_buy, "Order BUY", [b][color=#FF0000]TimeCurrent()[/color][/b], 0, Green);
order_id = OrderSend(Symbol(), OP_BUY, lot, Ask, 5, stop_loss_buy, take_profit_buy, "Order BUY", [b][color=#0000FF]0[/color][/b], 0, Green);
// 4x_trader: [b]зачем нам указывать в качестве магика [color=#FF0000]текущее время сервера[/color], не понял, поэтому поставил ноль[/b]...
// [b]Print("tma_up = ",tma_up, "; tma_down=",tma_down);[/b]// 4x_trader: распечатаем при необходимости для отладки
}
if (sell_open [b]//&& !sell_found)
&& OrdersTotal()==0) [/b]// 4x_trader: ***
{
double take_profit_sell = 0; double stop_loss_sell = 0;
if (take_profit > 0) take_profit_sell = Ask - take_profit * Point;
if (stop_loss > 0) stop_loss_sell = Bid + stop_loss * Point;
//order_id = OrderSend(Symbol(), OP_SELL, lot, Bid, 5, stop_loss_sell, take_profit_sell, "Order SELL", TimeCurrent(), 0, Red);
order_id = OrderSend(Symbol(), OP_SELL, lot, Bid, 5, stop_loss_sell, take_profit_sell, "Order SELL", [b]0[/b], 0, Red);
// 4x_trader: здесь аналогично покупке
//Print("tma_up = ",tma_up, "; tma_down=",tma_down);// распечатаем для отладки, если будет нужно...
}
}
На этом разбор кода закончим и перейдём к тестированию.