Termvsrobo
Newbie

Сообщений: 18

|
 |
« Ответ #2 : 17.04.2014, 05:00:59 » |
|
Исходный код у меня такой:
#line 0 solid red
extern kol_punktov = 15; extern kol_lotov = 3; extern step =0.01;
var trend1; var trend2; var Balance;
function init() { setInitCandles(10); setBounds(0, 10, 0); }
function checkAction() //Определяем наличие активных заявок { var NewArray = new_object("array"); //Определяем количество обычных активных заявок NewArray = getActiveOrderIDs(); var NewArray2 = new_object("array"); //Определяем количество активных стоп-заявок NewArray2 = getActiveStopOrderIDs(); var n = NewArray.size() + NewArray2.size(); return n; }
function calc()
{ trend1 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1]; //Определяем направление тренда trend2 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-2]; line[0] = trend1; //Для графического представления строим линию checkAction(); var t = checkAction(); line[1] = 0.01; line[2] = -0.01; line[3] = trend2; if (t == 0) { if (trend1>0.01 and trend2>0.01) {signal::alert("Открываем длинную позицию"); trade_action::buy(kol_lotov, ::lots, close); var order1 = new_object("hash"); order1["operation"] = OP_SELL; order1["tp_activationprice"] = close+kol_punktov*step; order1["tp_quantity"] = kol_lotov; order1["tp_correction"] = 0.01; order1["tp_guardspread"] = 0.01; order1["sl_activationprice"] = close-kol_punktov*step; order1["sl_quantity"] = kol_lotov; order1["sl_orderprice"] = close-kol_punktov*step; trade_action::transact(order1);} //Если тренд восходящий, то встаем в лонг } }
Как тут вы можете видеть, заявка на покупку и стоп ордер выставляются одновременно. Хочу это исправить. Нужно сделать так, чтобы по изменению состояния выставленной заявки onTrade или onOrder выполнялся код выставления стоп-ордера. Условие такое, чтобы активных заявок всегда было не более одной. Т.е. если есть хотя бы одна активная заявка, то ждем ее исполнения. Ума не приложу как мне задействовать функции onOrder или onTrade, так как не могу найти более подробное работы этих функций. Хочется увидеть хоть какой-то пример подобной задачи.
|