Автор |
Сообщение |
AC
Зарегистрирован: 05.02.2010
Сообщения: 6
|
Добрый день!
помогите пожалуйста разобраться с таким вопросом
есть код
varbuy= 0;
varsell=0;
for(i = 1; i < BarCount; i++)
{
Buy = условие покупки;
Sell = условие продажи;
ifbuy1 = iif(buy[barcount-1]==1,1,0);
ifbuy2 = iif(buy[barcount-2]==1,1,0);
ifsell1 = iif (sell[barcount-1]==1,1,0);
ifsell2 = iif (sell[barcount-2]==1,1,0);
if (ifbuy1) {
if (varbuy=0) {
makeandsave("B",1,price);
varbuy=1;
varsell=0;
}
}
if (ifbuy2) {
if (varbuy=0) {
makeandsave("B",1,price);
varbuy=2;
varsell=0;
}
}
if (ifsell1) {
if (varsell=0) {
makeandsave("S",2,price);
varbuy=0;
varsell=1;
}
}
if (ifsell2) {
if (varsell=0) {
makeandsave("S",2,price);
varbuy=0;
varsell=2;
}
}
}
при прогоне кода не должно совершаться две подряд покупки или продажи, т.к. проверяется значение переменных varbuy var sell
но это происходит!?
в данном примере я сознательно не привел оператор exrem
так как мне надо понять как задействовать здесь переменные
Буду благодарен за любые коментарии |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Скорее всего дело в том, что
надо писать так
Кроме того не понравилось, что
Buy = условие покупки;
Sell = условие продажи;
внутри цикла
и вот этому в цикле делать нечего
ifbuy1 = iif(buy[barcount-1]==1,1,0);
ifbuy2 = iif(buy[barcount-2]==1,1,0);
ifsell1 = iif (sell[barcount-1]==1,1,0);
ifsell2 = iif (sell[barcount-2]==1,1,0);
И еще. Неужели очень трудно код размещать на форуме в таком виде?
Код: |
varbuy = 0;
varsell = 0;
for(i = 1; i < BarCount; i++)
{
Buy = условие покупки;
Sell = условие продажи;
ifbuy1 = IIf(Buy[BarCount-1] == 1, 1, 0);
ifbuy2 = IIf(Buy[BarCount-2] == 1, 1, 0);
ifsell1 = IIf(Sell[BarCount-1] == 1, 1, 0);
ifsell2 = IIf(Sell[BarCount-2] == 1, 1, 0);
if (ifbuy1) {
if (varbuy == 0) {
makeandsave("B",1,price);
varbuy = 1;
varsell = 0;
}
}
if (ifbuy2) {
if (varbuy == 0) {
makeandsave("B",1,price);
varbuy = 2;
varsell = 0;
}
}
if (ifsell1) {
if (varsell == 0) {
makeandsave("S",2,price);
varbuy = 0;
varsell = 1;
}
}
if (ifsell2) {
if (varsell == 0) {
makeandsave("S",2,price);
varbuy = 0;
varsell = 2;
}
}
}
|
Для этого при написании поста надо использовать Code. Там вверху есть кнопка такая. В конце кода при написании сообщения должно быть [/code], а в начале [code] |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AC
Зарегистрирован: 05.02.2010
Сообщения: 6
|
Добрый день!
вот это не совсем понятно почему
000 писал(а): |
Кроме того не понравилось, что
Buy = условие покупки;
Sell = условие продажи;
внутри цикла
и вот этому в цикле делать нечего
ifbuy1 = iif(buy[barcount-1]==1,1,0);
ifbuy2 = iif(buy[barcount-2]==1,1,0);
ifsell1 = iif (sell[barcount-1]==1,1,0);
ifsell2 = iif (sell[barcount-2]==1,1,0);
|
Спасибо за ответ, но вопрос не снялся.
Привожу тестируемый код
Код: |
for (i = 1; i <BarCount>1) AND (Cb1 OR Cs1 OR Cb2 OR Cs2 ) ) {
if (Cb1) {
if (b_var==0) {
price=(1+Otstup/100)*Close[BarCount-1];
makeandsave("B1",1,price);
b_var=1;
s_var=0;
}
}
if (Cb2) {
if (b_var==0) {
price=(1+Otstup/100)*Close[BarCount-1];
makeandsave("B2",1,price);
b_var=2;
s_var=0;
}
}
if (Cs1) {
if (s_var==0) {
price=(1-Otstup/100)*Close[BarCount-1];
makeandsave("S1",2,price);
b_var=0;
s_var=1;
}
}
if (Cs2) {
if (s_var==0) {
price=(1-Otstup/100)*Close[BarCount-1];
makeandsave("S2",2,price);
b_var=0;
s_var=2;
}
}
}
|
здесь специально в makeandsave забито S1 S2 B1 B2
Код: |
makeandsave("S2",2,price);
|
чтобы по tri файлу видеть по какому месту прошлась программа
в tri файле получаю следующие записи (при прогоне на Bar Replay)
Код: |
TRANS_ID=11288103700;PRICE=71.77;QUANTITY=1000;OPERATION=B1;CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=SBER03; ACCOUNT=L01-00000F00; CLIENT_CODE=21861;
TRANS_ID=11288103800;PRICE=72.10;QUANTITY=1000;OPERATION=B2;CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=SBER03; ACCOUNT=L01-00000F00; CLIENT_CODE=21861;
|
т.е. не смотря на мое условие из переменных последовательно выполняются две покупки
такое впечатление, что он присваивает значения переменным, а потом его обнуляет
я уже всю голову сломал, что не так
пробовал присваивать значения переменным в теле цикла как писал в предыдущем сообщении, и вне его, но это не дало результат
просмотр прошлого более чем на 1 бар нужен, так как делаю системку типа zig zag
буду очень признателен за любую помощь
заранее извиняюсь если что не так по оформлению сообщения |
|
|
Посмотреть профиль Отправить личное сообщение |
|
AC
Зарегистрирован: 05.02.2010
Сообщения: 6
|
в догонку по предыдущему посту
никак не смог корректно вбить свой afl код
отображается не то, что я ввожу редактируя сообщение
часть AFL кода просто "съелась"
прошу прощения |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
отображается не то, что я ввожу редактируя сообщение
часть AFL кода просто "съелась"
|
Ага. Бывает такой глюк... В таком случае лучше прикреплять afl код к сообщению. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В общем напиши вот так.
Код: |
SetBarsRequired(10000, 0);
ifBuy1 = условие покупки;
ifBuy2 = Ref(ifBuy1, -1);
ifSell1 = условие продажи;
ifSell2 = Ref(ifSell1, -1);
Buy1 = Sell1 = 0;
varbuy = 0;
varsell = 0;
for(i = 1; i < BarCount; i++)
{
if (ifbuy1 AND varbuy == 0) {
Buy1 = 1;
varbuy = 1;
varsell = 0;
}
if (ifbuy2 AND varbuy == 0) {
Buy1 = 1;
varbuy = 2;
varsell = 0;
}
if (ifsell1 AND varsell == 0) {
Sell1 = 1;
varbuy = 0;
varsell = 1;
}
if (ifsell2 AND varsell == 0) {
Sell1 = 1;
varbuy = 0;
varsell = 2;
}
}
if(Buy1[BarCount-1] == 1)
makeandsave("B",1,price);
if(Sell1[BarCount-1] == 1)
makeandsave("S",2,price);
|
Логику понял исходя из кода. Но там ошибки есть (в логике) |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|