Написал собственные функции для выставления заявок на покупку и продажу
function fBuy (var kol, var cena) {
signal::notify("Заявка на покупку " + kol + " контракта по " + cena);
order["tp_quantity"] = kol;
order["operation"] = OP_BUY;
order["tp_level"] = 1;
order["tp_activationprice"] = cena;
trade_action::transact(order);
}
function fSell (var kol, var cena) {
signal::notify("Заявка на продажу " + kol + " контракта по " + cena);
order["tp_quantity"] = kol;
order["operation"] = OP_SELL;
order["tp_level"] = 1;
order["tp_activationprice"] = cena;
trade_action::transact(order);
}
которые вызываются из тела функции calc()
// Автостарт
if (st != 2 and atz == 1 and knl == 1 and isTradingAllowed() == true) {
signal::notify("АВТОЗАПУСК!");
stz = 0; lotz = 0; op = 0; pr = 0; // Обнуляем исходные данные
fBuy (lot, lo);
fSell (lot, hi);
}
Все прекрасно работает!!!
Решил оптимизировать код и сделать одну функцию которая бы выставляла заявки и на покупку и на продажу.
function fMyTrade (var oper, var kol, var cena) {
var baysell;
if (oper == 1) {baysell = "покупку ";}
else {baysell = "продажу ";}
signal::notify("Заявка на " + baysell + kol + " контракта по " + cena);
order["tp_quantity"] = kol;
order["operation"] = oper;
order["tp_level"] = 1;
order["tp_activationprice"] = cena;
trade_action::transact(order);
}
которая вызывается из того же места программы
// Автостарт
if (st != 2 and atz == 1 and knl == 1 and isTradingAllowed() == true) {
signal::notify("АВТОЗАПУСК!");
stz = 0; lotz = 0; op = 0; pr = 0; // Обнуляем исходные данные
fMyTrade (OP_BUY, lot, lo);
fMyTrade (OP_SELL, lot, hi);
}
И возникли чудеса
Выполняется только одна, первая функция fMyTrade (OP_BUY, lot, lo);, а вторая следующая за ней выполняться НЕ ХОЧЕТ!!!
Пробывал менять их местами, те же грабли...
Да же запустил все три функции параллельно
// Автостарт
if (st != 2 and atz == 1 and knl == 1 and isTradingAllowed() == true) {
signal::notify("АВТОЗАПУСК!");
stz = 0; lotz = 0; op = 0; pr = 0; // Обнуляем исходные данные
fBuy (lot, lo);
fSell (lot, hi);
fMyTrade (OP_BUY, lot, lo);
fMyTrade (OP_SELL, lot, hi);
}
Функции fBuy (lot, lo); и fSell (lot, hi); и fMyTrade (OP_BUY, lot, lo); - выполняются, последняя fMyTrade (OP_SELL, lot, hi); - НЕТ!!!
Что за чудеса?