Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
Автор |
Сообщение |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
При этом, если забить на ошибку и закрыть предупреждение,
передача команд происходит, но только в одну сторону - на покупку.
Когда покупка по сигналу - то выходит ошибка, закрытие - передает команду, в квике сделка.
На новом сигнале снова и т.п. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Блин, в код всралась очепятка. Потерялась скобка. Надо так
Код: |
if(StrToNum(order) > 100)
{
iz = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(pos > 0 AND bs == "S") // закрытие лонга
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0, 0);
else if(pos == 0 AND bs == "S") // шорт
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot, 0);
else if(pos < 0 AND bs == "B") // закрытие шорта
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0, 0);
else if(pos == 0 AND bs == "B") // лонг
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot, 0);
str = str + " позиция на момент исполнения " + pos;
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Верно, предупреждение синтаксиса ушло.
Осталось только понять почему не проходят сделки.
Когда наступает сигнал к покупке, вижу сообщение об ошибке (в приложении).
Если его закрыть, то сразу происходит покупка, и в квике проходит сделка.
Когда наступает сигнал к закрытию покупки, то уже ничего не происходит. Такие дела. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Есть 2 плагина AS_File. В одном в параметрах используется 3 аргумента, а в другом 4 (добавлена точность). У тебя плагин с тремя аргументами, а код для нового с 4мя. Поэтому он и ругается (слишком много аргументов). |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Странно, плагины со страницы робота. Наверное там ссылку поменять надо на соответствующий вариант. Где его найти? Или может надо просто поправить текст Робота? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Когда я писал этого робота, я меньше всего думал о том, что кто-то рискнет поставить свои деньги на скрипт не разобравшись в его работе досконально. В общем это только мое видение того, как может работать такая идея.
Но однозначно поменять ссылку стоит.
![Very Happy](images/smiles/icon_biggrin.gif) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Спасибо! Завтра обязательно протестирую. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Цитата: |
Когда я писал этого робота, я меньше всего думал о том, что кто-то рискнет поставить свои деньги на скрипт не разобравшись в его работе досконально. В общем это только мое видение того, как может работать такая идея.
Но однозначно поменять ссылку стоит. |
Ну постепенно начинает проясняться его суть) Суть доходила бы намного быстрей, если бы я был программистом с опытом) Но тогда бы я видимо сам написал бы себе коннектор ![Very Happy](images/smiles/icon_biggrin.gif) |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Тестировал Робота с одной системой на 1 инструменте, все работает стабильно. Заметил, что отсчет 'Run every" не равен условию "1 раз за свечу на ее открытии", и выполняется, собственно, как таймер после клика мышки. Т.е. от этого могут быть сигналы в середине жизни свечи, в зависимости от того, когда нажать кнопку, и единственным выходом будет использование 1sec периода, и закладывание при разработке большего проскальзывания на величину средней сделки, т.к. переворот позиции совершается на одной сделкой, а двумя, как я заметил, с соответствующим перерывом в секунду.
Параллельно изучаю твой код. Начал переделывать его на вариант "две системы", нашел пример тут на форуме, где ты подсказываешь человеку как это сделать. По примеру делаю свой вариант под свою версию плагина.
Не понял одного момента с циклами и переменными в твоем примере - вот этими sys == 1, sys == 2, которые призваны разделить системы, и перед этим должны быть как-то и где-то заданы. Где - не понимаю.
На данный момент у меня такой тестовый код для Квика-юниора:
Код: |
Filter = 1;
TimeFrame = 60; // таймфрейм в секундах.
Account = "SPBFUT00754"; // Номер счета
Client_Code = "SPBFUT00754"; // Код Клиента
Quik = "C:\\QUIKJunior"; // путь к Квику
Tickers = "Si_Junior"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
///////////////
// задаем размер лотов, коды и отступ для разных символов
/////////////
if(Name() == "Si_Junior") { //Символ как он называется в Ами
SecCode = "SiH9";
Class = "SPBFUT";
Lots1 = 1;
Lots2 = 1;
TickS = 1; // Минимальный шаг цены торгуемой бумаги
Otstup = 100; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
////////////// Система-1 ///////////////
Buy1 = RSI(2)<30;
Sell1 = RSI(2)>70;
Buy1 = ExRem(Buy1, Sell1);
Sell1 = ExRem(Sell1, Buy1);
Short1 = Sell1;
Cover1 = Buy1;
/////////// Конец Системы-1 ////////////
Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);
////////////// Система-2 ///////////////
Buy2 = C>O AND RSI(20)>50;
Sell2 = C<O;
Buy2 = ExRem(Buy2, Sell2);
Sell2 = ExRem(Sell2, Buy2);
Short2 = C<O AND RSI(20)<50;
Cover2 = C>O;
/////////// Конец Системы-2 ////////////
Buy2 = Ref(Buy2, -1);
Sell2 = Ref(Sell2, -1);
Short2 = Ref(Short2, -1);
Cover2 = Ref(Cover2, -1);
////////////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos1 = AS_READ_PARAM("Quik_Robot", Name(), "pos1");
pos2 = AS_READ_PARAM("Quik_Robot", Name(), "pos2");
///////////// проверка наличия символа в списке для торговли ////////////////
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,
TickS,
Lot);
}
if(StrToNum(order) > 100)
{
iz = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(sys == 1)
{
if(pos1 > 0 AND bs == "S") // закрытие лонга системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", 0, 0);
else if(pos1 == 0 AND bs == "S") // шорт системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", -1*Lot, 0);
else if(pos1 < 0 AND bs == "B") // закрытие шорта системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", 0, 0);
else if(pos1 == 0 AND bs == "B") // лонг системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", Lot, 0);
str = str + " позиция на момент исполнения " + pos1;
}
//-------------------------------------------------------------------------------------------//
else if(sys == 2)
{
if(pos2 > 0 AND bs == "S") // закрытие лонга системы 2
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", 0, 0);
else if(pos2 == 0 AND bs == "S") // шорт системы 2
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", -1*Lot, 0);
else if(pos2 < 0 AND bs == "B") // закрытие шорта системы 2
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", 0, 0);
else if(pos2 == 0 AND bs == "B") // лонг системы 2
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", Lot, 0);
str = str + " позиция на момент исполнения " + pos2;
}
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
}
////////// конец Функций //////////
if (TimeFrame == Interval() AND Permit_Ticker)
{
if(Buy1[BarCount-1] AND pos1 == 0) {
str = str + " Buy";
sd = "Buy";
orders("B", round(C[BarCount-1]) + Otstup, Lots1);
AS_WRITE_FILE("log.quik", str);
}
else if(Sell1[BarCount-1] AND pos1 > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", round(C[BarCount-1]) - Otstup, abs(pos1));
AS_WRITE_FILE("log.quik", str);
}
else if(Short1[BarCount-1] AND pos1 == 0) {
str = str + " Short";
sd = "Short";
orders("S", round(C[BarCount-1]) - Otstup, Lots1);
AS_WRITE_FILE("log.quik", str);
}
else if(Cover1[BarCount-1] AND pos1 < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", round(C[BarCount-1]) + Otstup, abs(pos1));
AS_WRITE_FILE("log.quik", str);
}
else if(Buy2[BarCount-1] AND pos2 == 0) {
str = str + " Buy";
sd = "Buy";
orders("B", round(C[BarCount-1]) + Otstup, Lots2);
AS_WRITE_FILE("log.quik", str);
}
else if(Sell2[BarCount-1] AND pos2 > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", round(C[BarCount-1]) - Otstup, abs(pos2));
AS_WRITE_FILE("log.quik", str);
}
else if(Short2[BarCount-1] AND pos2 == 0) {
str = str + " Short";
sd = "Short";
orders("S", round(C[BarCount-1]) - Otstup, Lots2);
AS_WRITE_FILE("log.quik", str);
}
else if(Cover2[BarCount-1] AND pos2 < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", round(C[BarCount-1]) + Otstup, abs(pos2));
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); |
|
Последний раз редактировалось: FriendlyDeepSpace (Сб Дек 29, 2018 12:10 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Дай ссылку на мое объяснение. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
http://www.amisite.ru/phpBB2/viewtopic.php?t=2244
Уточнение - я там опечатался, имелось в виду sys == 1, sys == 2, ругалось на это, ибо якобы не задано.
А сейчас открываю на проверку синтаксиса, и ничего про это! У Ами странно проверка ошибок идет, может молчать, пока не запустишь на онлайн-соединение. Точно сказать и проверить со скринами теперь смогу только завтра. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Да, вот скрины. Запуск на олнайн подключении.
После первого сигнала - предпреждение, потом второе,
когда оба закрыл - вход в сделку, после шага таймера (стояло 5 сек)
снова предупреждения и снова вход. При этом в текущем объеме "ноль". |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Как то так.
Код: |
Filter = 1;
TimeFrame = 60; // таймфрейм в секундах.
Account = "SPBFUT00754"; // Номер счета
Client_Code = "SPBFUT00754"; // Код Клиента
Quik = "C:\\QUIKJunior"; // путь к Квику
Tickers = "Si_Junior"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
///////////////
// задаем размер лотов, коды и отступ для разных символов
/////////////
if(Name() == "Si_Junior") { //Символ как он называется в Ами
SecCode = "SiH9";
Class = "SPBFUT";
Lots1 = 1;
Lots2 = 1;
TickS = 1; // Минимальный шаг цены торгуемой бумаги
Otstup = 100; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
////////////// Система-1 ///////////////
Buy1 = RSI(2)<30;
Sell1 = RSI(2)>70;
Buy1 = ExRem(Buy1, Sell1);
Sell1 = ExRem(Sell1, Buy1);
Short1 = Sell1;
Cover1 = Buy1;
/////////// Конец Системы-1 ////////////
Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);
////////////// Система-2 ///////////////
Buy2 = C>O AND RSI(20)>50;
Sell2 = C<O;
Buy2 = ExRem(Buy2, Sell2);
Sell2 = ExRem(Sell2, Buy2);
Short2 = C<O AND RSI(20)<50;
Cover2 = C>O;
/////////// Конец Системы-2 ////////////
Buy2 = Ref(Buy2, -1);
Sell2 = Ref(Sell2, -1);
Short2 = Ref(Short2, -1);
Cover2 = Ref(Cover2, -1);
////////////////////////////////////////////
text = iz1 = iz2 = sd1 = sd2 = order1 = order2 = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos1 = AS_READ_PARAM("Quik_Robot", Name(), "pos1");
pos2 = AS_READ_PARAM("Quik_Robot", Name(), "pos2");
///////////// проверка наличия символа в списке для торговли ////////////////
k = 0;
Permit_Ticker = False;
do {
Tick = StrExtract(Tickers, k);
k++;
if(Name() == Tick)
Permit_Ticker = True;
} while(Tick != "");
/////////// Функции ////////////
procedure orders1(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)
{
order1 = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
TickS,
Lot);
}
if(StrToNum(order1) > 100)
{
iz1 = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(sys == 1)
{
if(pos1 > 0 AND bs == "S") // закрытие лонга системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", 0, 0);
else if(pos1 == 0 AND bs == "S") // шорт системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", -1*Lot, 0);
else if(pos1 < 0 AND bs == "B") // закрытие шорта системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", 0, 0);
else if(pos1 == 0 AND bs == "B") // лонг системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos1", Lot, 0);
str = str + " позиция на момент исполнения " + pos1;
}
}
else {
iz1 = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
}
procedure orders2(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)
{
order2 = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
TickS,
Lot);
}
if(StrToNum(order2) > 100)
{
iz2 = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(sys == 1)
{
if(pos2 > 0 AND bs == "S") // закрытие лонга системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", 0, 0);
else if(pos2 == 0 AND bs == "S") // шорт системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", -1*Lot, 0);
else if(pos2 < 0 AND bs == "B") // закрытие шорта системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", 0, 0);
else if(pos2 == 0 AND bs == "B") // лонг системы 1
AS_WRITE_PARAM("Quik_Robot", Name(), "pos2", Lot, 0);
str = str + " позиция на момент исполнения " + pos2;
}
}
else {
iz2 = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
}
////////// конец Функций //////////
if (TimeFrame == Interval() AND Permit_Ticker)
{
if(Buy1[BarCount-1] AND pos1 == 0) {
str = str + " Sus1_Buy";
sd = "Buy";
orders1("B", round(C[BarCount-1]) + Otstup, Lots1);
AS_WRITE_FILE("log.quik", str);
}
else if(Sell1[BarCount-1] AND pos1 > 0) {
str = str + " Sus1_Sell";
sd = "Sell";
orders1("S", round(C[BarCount-1]) - Otstup, abs(pos1));
AS_WRITE_FILE("log.quik", str);
}
else if(Short1[BarCount-1] AND pos1 == 0) {
str = str + " Sus1_Short";
sd = "Short";
orders1("S", round(C[BarCount-1]) - Otstup, Lots1);
AS_WRITE_FILE("log.quik", str);
}
else if(Cover1[BarCount-1] AND pos1 < 0) {
str = str + " Sus1_Cover";
sd = "Cover";
orders1("B", round(C[BarCount-1]) + Otstup, abs(pos1));
AS_WRITE_FILE("log.quik", str);
}
if(Buy2[BarCount-1] AND pos2 == 0) {
str = str + " Sus2_Buy";
sd = "Buy";
orders2("B", round(C[BarCount-1]) + Otstup, Lots2);
AS_WRITE_FILE("log.quik", str);
}
else if(Sell2[BarCount-1] AND pos2 > 0) {
str = str + " Sus2_Sell";
sd = "Sell";
orders2("S", round(C[BarCount-1]) - Otstup, abs(pos2));
AS_WRITE_FILE("log.quik", str);
}
else if(Short2[BarCount-1] AND pos2 == 0) {
str = str + " Sus2_Short";
sd = "Short";
orders2("S", round(C[BarCount-1]) - Otstup, Lots2);
AS_WRITE_FILE("log.quik", str);
}
else if(Cover2[BarCount-1] AND pos2 < 0) {
str = str + " Sus2_Cover";
sd = "Cover";
orders2("B", round(C[BarCount-1]) + Otstup, abs(pos2));
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(), "pos1"), "Позиция_1", 1.0, colorDefault,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos1") > 0, colorGreen,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos1") < 0, colorRed, colorDefault)), 60);
AddColumn( AS_READ_PARAM("Quik_Robot", Name(), "pos2"), "Позиция_2", 1.0, colorDefault,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos2") > 0, colorGreen,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos2") < 0, colorRed, colorDefault)), 60);
AddTextColumn(sd1, "Сигнал_1", 1.0, colorDefault, colorDefault, 60);
AddTextColumn(sd2, "Сигнал_2", 1.0, colorDefault, colorDefault, 60);
AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);
AddTextColumn(iz1, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
AddTextColumn(iz2, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
AddTextColumn(order1, "Заявка_1", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);
AddTextColumn(order2, "Заявка_2", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);
|
Делал на скору руку. Не проверял... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
FriendlyDeepSpace
Зарегистрирован: 07.12.2018
Сообщения: 34
|
Спасибо!
Результаты проверки:
Была ошибка про order, я на сколько понял не везде было разделено на order1, order2.
Я вроде сообразил, поправил - ошибка ушла, колонки видны и это хорошо кстати придумано.
Но осталась та же ошибка, что в прошлый раз - не находит sys отсюда if(sys == 1) и в результате на каждом цикле таймера происходит предупреждение, отправка сделки в Квик, но нет учета результата. Следующий тик - еще одна сделка, и так далее. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|