Автор |
Сообщение |
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
привет!
написал условие на вход
Код: |
for (i = 0; i < BarCount; i++) {
if (lpos1 == 0 AND spos1 == 0) {
if (H[ i ]>H5[i] AND H[i-1]<H5[1] AND NOT in4[i] AND flt[i] ) {
Buy[ i ] = 1;
BuyPrice[ i ] = H5[ i ];
lpos1 = 1; |
что судя нужно вписать чтобы была проверка на условие что lpos1 (или сделки по этому условию) сегодня еще не было
Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
или
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Спасибо - это сработало (что-то сам не догнал)
но теперь немного усложняем
Нужно построить цепочку сделок
Вход в Лонг – пробили уровень, получили lpos=1
Условие на выход –пробой минимума предыдущего бара. При свершении получаем lpos=0
Условие на выход и реверс – бар на котором открылась лонговая сделка закрылся ниже минимума предыдущего бара и при этом текущий бар пробил минимум бара на котором случился лосевый вход
Пишу
Код: |
for (i = 1; i < BarCount; i++) {
if (lpos1 == 0) {
if (H[ i ]>H5[i] AND H[i-1]<H5[1] AND NOT in4[i] AND flt[i] ) {
Buy[ i ] = 1;
BuyPrice[ i ] = H5[ i ];
lpos1 = 1;
} elseif (lpos1 == 1){
Тут условие на закрытие лонга без реверса
} А ВОТ ТУТ МЫСЛЬ ОБРЫВАЕТСЯ
|
Вот просто выход срабатывает правильно
А вот выход и последующий реверс – хрень выходит как ни крути
Как правильно объяснить амии, что на баре[i-2] мы были не в лонге (но могли быть в шорте),
на баре[i-1] произошел вход в лонг, но бар закрылся ниже минимума предыдущего бара, и теперь мы выходим из лонга и входим в шорт если мы пробиваем минимум предыдущего бара
[/code] |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Вход в Лонг – пробили уровень, получили lpos=1
Условие на выход –пробой минимума предыдущего бара. При свершении получаем lpos=0
|
Так тестировать нельзя.
Вход и выход на одном баре по условиям пробития корректно сделать нельзя. Если вход и выход на одном баре, то либо вход на открытии и по условиям Open <, >, ==... а выход по пробитии, либо вход на пробитии а выход по Close по условиям <, >, ==
Если вход и выход внутри бара, то как узнать какой сигнал случился раньше H > уровня или L < уровня??? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Цитата: |
Вход в Лонг – пробили уровень, получили lpos=1
Условие на выход –пробой минимума предыдущего бара. При свершении получаем lpos=0
|
Так тестировать нельзя.
Вход и выход на одном баре по условиям пробития корректно сделать нельзя. Если вход и выход на одном баре, то либо вход на открытии и по условиям Open <, >, ==... а выход по пробитии, либо вход на пробитии а выход по Close по условиям <, >, ==
Если вход и выход внутри бара, то как узнать какой сигнал случился раньше H > уровня или L < уровня??? |
Ну я знаю это - естественно первый бар мы пропускаем и для обычного выхода не используем. Ами это и без подсказки делает. Меня выход и реверс интересует. Я написал "Условие на выход и реверс – бар на котором открылась лонговая сделка закрылся ниже минимума предыдущего бара и при этом текущий бар пробил минимум бара на котором случился лосевый вход"
Т-е относительно бара входа мы так же оперируем вторым баром |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Типа как то так
Код: |
for (i = 1; i < BarCount; i++) {
if (lpos1 == 0)
{
if (H[i] > H5[i] AND H[i-1] < H5[1] AND NOT in4[i] AND flt[i])
{
Buy[i] = 1;
BuyPrice[ i ] = H5[ i ];
lpos1 = 1;
if(C[i] < L[i-1]) // разу проверяем условия выхода
{
Sell[i] = 1;
SellPrice[i] = C[i];
lpos = 0;
}
}
if(Buy[i-1] == 1 AND Sell[i-1] == 1 AND L[i] < L[i-1]) // реверс
{
Short[i] = 1;
ShortPrice[i] = L[i-1];
lpos = -1
}
}
.....
|
А почему у тебя if (H[i] > H5[i] AND H[i-1] < H5[1] AND NOT in4[i] ...
H5[1]?? Почему 1 а не i ? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Типа как то так
Код: |
for (i = 1; i < BarCount; i++) {
if (lpos1 == 0)
{
if (H[i] > H5[i] AND H[i-1] < H5[1] AND NOT in4[i] AND flt[i])
{
Buy[i] = 1;
BuyPrice[ i ] = H5[ i ];
lpos1 = 1;
if(C[i] < L[i-1]) // разу проверяем условия выхода
{
Sell[i] = 1;
SellPrice[i] = C[i];
lpos = 0;
}
}
if(Buy[i-1] == 1 AND Sell[i-1] == 1 AND L[i] < L[i-1]) // реверс
{
Short[i] = 1;
ShortPrice[i] = L[i-1];
lpos = -1
}
}
.....
|
А почему у тебя if (H[i] > H5[i] AND H[i-1] < H5[1] AND NOT in4[i] ...
H5[1]?? Почему 1 а не i ? |
Спасибо!
Пожалуй так сработать должно правильно
там действительно i стоит - просто описался когда на форум писал |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|