Filter = 1; TimeFrame = 60*15; // таймфрейм в секундах. Account = "NL0011100043"; // Номер счета Client_Code = "38000"; // Код Клиента Quik = "C:\\QUIK"; // путь к Квику Tickers = "LKOH,SBER"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами ///////////// /////////////// // задаем размер лотов, коды и отступ для разных символов ///////////// if(Name() == "LKOH") { //Символ как он называется в Ами SecCode = "LKOH"; Class = "EQBR"; Lots = 5; TickS = 0.1; // Минимальный шаг цены торгуемой бумаги Otstup = 20; // Заявка будет выставлена хуже текущей цены на Otstup рублей } else if(Name() == "SBER") { //Символ как он называется в Ами SecCode = "SBER03"; Class = "EQBR"; Lots = 2; TickS = 0.01; // Минимальный шаг цены торгуемой бумаги Otstup = 1; // Заявка будет выставлена хуже текущей цены на Otstup рублей } //////////////Система/////////////// Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20); Sell1 = Cross(MA(C, 20), C); Short1 = Cross(MA(C, 40), C) AND C < MA(C, 20); Cover1 = Cross(C, MA(C, 20)); ///////////Конец Системы//////////// Buy1 = Ref(Buy1, -1); Sell1 = Ref(Sell1, -1); Short1 = Ref(Short1, -1); Cover1 = Ref(Cover1, -1); //////////////////////////////////// text = iz = sd = order = ""; color = coloriz = colorDefault; price = 0; str = Now(0) + " " + Name(); pos = AS_READ_PARAM("Quik_Robot", Name(), "pos"); ///////////// проверка наличия символа в списке для торговли //////////////// k = 0; Permit_Ticker = False; do { Tick = StrExtract(Tickers, k); k++; if(Name() == Tick) Permit_Ticker = True; } while(Tick != ""); /////////// Функции //////////// procedure orders(bs, pr, Lot) { connection = 0; QC = AS_QUIK_CONNECT(Quik); if (QC == 1) { connection = 1; text = "Есть соединение с сервером"; Color = colorGreen; } else if (QC == -1) { text = "нет соединения с квиком"; Color = colorRed; } else if (QC == -2) { text = "нет соединения с сервером"; Color = colorRed; } else { text = "фигня какая то"; Color = colorRed; } if(connection == 1) { order = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры Account, Client_Code, "L", // Тип заявки M-рыночная, L-лимитированная Class, SecCode, bs, pr, Lot); } if(StrToNum(order) > 100) { iz = "исполнена"; coloriz = colorGreen; str = str + " заяка исполнена" + " ответ сервера=" + order; if(pos > 0 AND bs == "S") // закрытие лонга AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0); else if(pos == 0 AND bs == "S") // шорт AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot); else if(pos < 0 AND bs == "B") // закрытие шорта AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0); else if(pos == 0 AND bs == "B") // лонг AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot); str = str + " позиция на момент исполнения " + pos; } else { iz = "не исполнена"; coloriz = colorRed; str = str + " заяка НЕ исполнена" + " ответ сервера=" + order; } } ////////// конец Функций ////////// if (TimeFrame == Interval() AND Permit_Ticker) { if(Buy1[BarCount-1] AND pos == 0) { str = str + " Buy"; sd = "Buy"; orders("B", round(C[BarCount-1]) + Otstup, Lots); AS_WRITE_FILE("log.quik", str); } if(Sell1[BarCount-1] AND pos > 0) { str = str + " Sell"; sd = "Sell"; orders("S", round(C[BarCount-1]) - Otstup, abs(pos)); AS_WRITE_FILE("log.quik", str); } if(Short1[BarCount-1] AND pos == 0) { str = str + " Short"; sd = "Short"; orders("S", round(C[BarCount-1]) - Otstup, Lots); AS_WRITE_FILE("log.quik", str); } if(Cover1[BarCount-1] AND pos < 0) { str = str + " Cover"; sd = "Cover"; orders("B", round(C[BarCount-1]) + Otstup, abs(pos)); AS_WRITE_FILE("log.quik", str); } } else if(TimeFrame != Interval()) { PopupWindow( "Не соответствует временной интервал в настройках АА и в коде", "ошибка", timeout = 5, left = -1, top = -1 ); } SetOption( "NoDefaultColumns", 1 ); AddTextColumn(Name(), "Символ", 1.0, colorDefault, colorDefault, 60); AddColumn( C[BarCount-1], "Последняя цена", 1.2, colorDefault, colorDefault, 100 ); AddColumn( AS_READ_PARAM("Quik_Robot", Name(), "pos"), "Позиция", 1.0, colorDefault, IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") > 0, colorGreen, IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") < 0, colorRed, colorDefault)), 60); AddTextColumn(sd, "Сигнал", 1.0, colorDefault, colorDefault, 60); AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170); AddTextColumn(iz, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 ); AddTextColumn(order, "Заявка", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);