Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 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 След. |
Автор |
Сообщение |
inivin
Зарегистрирован: 28.02.2015
Сообщения: 12
|
000 писал(а): |
В каком месте? |
записываю значение переменной в файл через fputs. такой же её вижу, если выводить через _Trace. Те, начиная с какого-то числа разрядов, амиброкер переводит число в экспотенциальную нотацию. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Преобразуй в текст функцией NumToStr() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Jubatoz
Зарегистрирован: 22.03.2015
Сообщения: 2
|
Всем привет, возникла проблема с написанием цикла :
Хочу сделать подобие функции iif , но с накоплением значений при соблюдение условия.
y=0;
iif(x<24,y+=1,y=0)
Что нужно :
если ref(x,-1)<24 and x<24
то y=2
если ref(x,-2)<24 and ref(x,-1)<24 and x<24
то y=3
и т.д. пока соблюдается условие x<24
если x>24 то y = 0
вот что вышло:
i=0;
y=0;
while (i < BarCount )
{
// Вот в этом месте трудность , не знаю как сделать без перечисления каждого бара
if(x[i]<24) {y[i]++;
if (x[i+1]<24) {y[i+1]++;
if (x[i+2]<24) {y[i+2]++;
if (x[i+3]<24) {y[i+3]++;
if (x[i+4]<24) {y[i+4]++;
if (x[i+5]<24) {y[i+5]++;
if (x[i+6]<24) {y[i+6]++;
// + Нужно чтобы проверялись значения x на всех барах, а не только до x[i+6]
}}}}}}}
i++;
}
Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А зачем там цикл?
Код: |
Cond = X < 24;
Bars = BarsSince(Cond AND !Ref(Cond, -1)) + 1;
Y = Sum(1, Bars);
Y = IIf(Cond == 0, 0, Y);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну а если цикл то так
Код: |
Cond = X < 24;
Y = 0;
for( i = 1; i < BarCount; i++ )
{
if(Cond[i])
Y[i] = Y[i-1] + 1;
else
Y[i] = 0;
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Jubatoz
Зарегистрирован: 22.03.2015
Сообщения: 2
|
Забыл про BarsSince , спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
rilax
Зарегистрирован: 16.02.2015
Сообщения: 4
|
Добрый день.
Помогите плиз.
У меня есть торговая система основанная на пересечений двух прямых:
Buy=Cover=Cross(tl1,tl2);
Sell=Short=Cross(tl2,tl1);
И есть импульсная система Элдера(https://www.amibroker.com/library/detail.php?id=585)
Можно ли как то, при формировании сигнала на покупку моей системой проверить, если бар имеет синии цвет(Impulse_Up) то совершать покупку, если же красный(Impulse_Down) или белый (Impulse_None), то запомнить, что сигнал на покупку уже есть и на первом же последующем синем баре совершить покупку?
Заранее благодарю. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот сразу вопрос.
Ну запомнили мы сигнал и ждем синий цвет. Как долго можно ждать?
Может синий цвет через год только появится? И что, отрабатывать сигнал через год? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
rilax
Зарегистрирован: 16.02.2015
Сообщения: 4
|
000 писал(а): |
Вот сразу вопрос.
Ну запомнили мы сигнал и ждем синий цвет. Как долго можно ждать?
Может синий цвет через год только появится? И что, отрабатывать сигнал через год? |
Извиняюсь что сразу об этом не написал, 10 свечей будет вполне достаточно, хотя этот параметр я думаю можно будет подкорректировать в ходе тестов.
Еще выяснил такую особенность:
1) Система находиться в состоянии лонг.
2) Поступает сигнал на продажу, текущий бар белый или синий, ждем красную свечу.
3) Пока мы ее ждем система выдает уже сигнал на покупку и свеча синяя(или допустим другого цвета), но так как изначально система была в лонге (пункт 1), следовательно необходимо аннулировать сигнал на продажу и последующий после него сигнал на покупку.
Получается что заявка на продажу и пришедшая встречная заявка на покупку взаимоуничтожаются.
Попробовал приложить скрин, на нем описанная ситуация выделена желтым цветом. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Типа так.
Код: |
Buy1 = Cover1 = Cross(tl1,tl2);
Sell1 = Short1 = Cross(tl2,tl1);
Long = Flip(Buy1, Short1); // когда система в лонге/шорте по первоначальным сигналам
waitingBuy = Hold(Buy1, 10) AND Long == 1; // держим сигнал 10 баров после сигнала ЛОНГ но только до выхода из лонга
waitingShort = Hold(Short1, 10) AND Long == 0; // держим сигнал 10 баров после сигнала ШОРТ но только до выхода из шорта
Buy = waitingBuy AND Impulse_Up;
Short = waitingShort AND Impulse_Down;
|
Спрашивай если что то непонятно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
rilax
Зарегистрирован: 16.02.2015
Сообщения: 4
|
000 писал(а): |
Типа так.
Код: |
Buy1 = Cover1 = Cross(tl1,tl2);
Sell1 = Short1 = Cross(tl2,tl1);
Long = Flip(Buy1, Short1); // когда система в лонге/шорте по первоначальным сигналам
waitingBuy = Hold(Buy1, 10) AND Long == 1; // держим сигнал 10 баров после сигнала ЛОНГ но только до выхода из лонга
waitingShort = Hold(Short1, 10) AND Long == 0; // держим сигнал 10 баров после сигнала ШОРТ но только до выхода из шорта
Buy = waitingBuy AND Impulse_Up;
Short = waitingShort AND Impulse_Down;
|
Спрашивай если что то непонятно. |
Есть небольшая проблема, после формирования сигнала допустим на покупку, система дожидается первого зеленого бара, но на этом не останавливается и на последующих барах зеленого цвета сигнал на покупку сохраняется(на протяжении 10 баров). Есть предположение , что после первого зеленого бара, нужно обнулить счетчик. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я не стал обнулять сигнал, т.к. тестер это сделает сам.
Если надо, то используй функцию ExRem() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
rilax
Зарегистрирован: 16.02.2015
Сообщения: 4
|
000 писал(а): |
Я не стал обнулять сигнал, т.к. тестер это сделает сам.
Если надо, то используй функцию ExRem() |
Спасибо!
Все заработало.
Очень Вам благодарен. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Замечательно. Я рад. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
crn
Зарегистрирован: 28.03.2015
Сообщения: 30
|
Добрый день, уважаемые знатоки!
Написал такой вот кусок кода.
Код: |
for(i=1;i<BarCount;i++)
{
fb1 = TimeFrameGetPrice("O", inDaily, -2); // открытие позавчера
lb1 = TimeFrameGetPrice("C", inDaily, -2); // закрытие позавчера
fb2 = TimeFrameGetPrice("O", inDaily, -1); // открытие вчера
lb2 = TimeFrameGetPrice("C", inDaily, -1); // закрытие вчера
fb = TimeFrameGetPrice("O", inDaily, 0); // открытие сегодня
priceDayMax = TimeFrameGetPrice("H", inDaily, -1); // вчерашний макс
priceDayMin = TimeFrameGetPrice("L", inDaily, -1); // вчерашний мин
perRost1[i] = PerIzm(fb1[i], lb1[i]); // функция
perRost2[i] = PerIzm(fb2[i], lb2[i]); // функция
}
AddColumn(fb1, "fb1", 1.4);
AddColumn(lb1, "lb1", 1.4);
AddColumn(fb2, "fb2", 1.4);
AddColumn(lb2Open, "lb2Open", 1.4);
AddColumn(lb2, "lb2", 1.4);
AddColumn(fb , "fb", 1.4);
AddColumn(priceDayMax , "priceDayMax", 1.4);
AddColumn(priceDayMin , "priceDayMin", 1.4);
AddColumn(perRost1 , "perRost1", 1.4);
AddColumn(perRost2 , "perRost2", 1.4); |
Теперь надо получить открытие вчерашнего последнего бара на минутке.
Какой есть простой способ это осуществить?
Заранее спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Вопросы по AFL |
На страницу Пред. 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|