Автор |
Сообщение |
Sergiovy
Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск
|
Уважаемые!
Может кто подскажет, как тут расставить скобочки в команде if else
В Хелпе нет примера, чтобы после else, был снова if
На словах задача старая: Есть входные условия, от которых получаются разные режимы (mode), это получается.
Надо чтобы при возникновении нового режима, если система конечно не в рынке, система например покупала по своим (другим) правилам, определяемым режимом.
Режим 1 - свой набор правил купить продать (Для примера)
Режим 2 - Свой набор правил (другой)
Основу брал из топика торговля на разных фреймах.
Там почему то сначала проверяется sell,
Может все таки сделать сначала Buy? - У меня редактор ругается, что некоторые переменные не определены... (SellPrice=BuyPrice+100)
Этот редактор, он ходит по циклу, или тупо подряд?
Т.к. BuyPrice, определена позже, вот он и ругается.
Пример для 2-х условий.
До того определены условия для Mode1,Mode2…
Для Buy1, Buy2…
Для Sell1, Sell2…
If(inmarket=0)
If(Sys1=0)
If(Mode1=1)
If (Buy1=1)
inMarket=1;
Sys1=1;
Buy=Buy1;
If(inmarket=0)
If(Sys2=0)
If(Mode2=1)
If (Buy2=1)
inMarket=1;
Sys2=1;
Buy=Buy2;
Else
If(inmarket=1)
If(Sys1=1)
If(Mode1=1)
If (Sell1=1)
inMarket=0;
Sys1=0;
Sell=Sell1;
If(inmarket=1)
If(Sys2=0)
If(Mode2=1)
If (Sell2=1)
inMarket=0;
Sys2=0;
Sell=Sell2;
Тут конечно вообще без скобочек, но я пытался по разному...
Может где есть исчерпывающий пример...
Спасибо! |
_________________ "Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В данном случае If else надо обязательно использовать внутри цикла for()
Кроме того там был очень специфический случай с разными фреймами. Если бы не смена фреймов, что все надо было делать по другому(без if).
If(inmarket=0) надо писать так If(inmarket==0)
Как скобки расставлять смотри в файле справки по оператору if. Там есть несколько примеров. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Sergiovy
Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск
|
000 писал(а): |
В данном случае If else надо обязательно использовать внутри цикла for()
Кроме того там был очень специфический случай с разными фреймами. Если бы не смена фреймов, что все надо было делать по другому(без if).
If(inmarket=0) надо писать так If(inmarket==0)
Как скобки расставлять смотри в файле справки по оператору if. Там есть несколько примеров. |
Я то чего повелся: Ты как то писал, что цикл не нужен..
В Примерах нет вариантов, когда после else снова идет If...
У Меня другой случай, можно без if?
Цикл For... Нужен? ( В этом конкретном случае)
Если с циклом, почему у тебя проверка начинается с Sell? - По факту, сначала открывается позиция.
Редактор, он ходит с проверкой по циклу, или тупо все подряд строчки проверяет?
Last, but not Least
Если у меня полный бред, то дай хотя бы намек, идею...
Или ссылку, на применение if else, без цикла, For чтобы после else были снова If...
Олег, понятно, что до хрена вопросов. Идею выдай
С уважением,
S.Y. |
_________________ "Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
if(123)
{
456;
}
else if(789)
{
098;
}
else if(765)
{
543;
}
else(210)
{
109;
} |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
Всех с праздником!!! Олег привет, подскажи пожалуйста по коду, никогда не пользовался IF, смысл в том чтобы количество лотов при покупке и шорте было Lots1, при продаже и восстановлении из шорта Lots2, в файл выводится при одновременном откупе шорта и покупке (система реверсивная) количество равное Lots2, а нужно чтобы строчка на откуп шорта содержала количество равное Lots2, а строчка на покупку Lots1. Чего я не так делаю?
Lots1=...;
Lots2=...;
B=IIf(Buy==1,1,0);
S=IIf(Sell==1,1,0);
SH=IIf(Short==1,1,0);
CR=IIf(Cover==1,1,0);
if (B=1) {
Lots= Lots1;
}
if (S=1) {
Lots= Lots2;
}
if (SH=1) {
Lots= Lots1;
}
if (CR=1) {
Lots= Lots2;
} |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В том виде как есть в коде сразу 2 принципиальные ошибки.
1. if(B=1) следует писать if(B==1) или просто if(B)
2. функция If не может работать с массивами, а В в данном случае массив
Вроде есть ошибки в логике. В случае переворотной системы только первый вход осуществляется одинарным лотом, а все остальные сделки всегда двойным, что приводит к закрытию открытой позиции и открытию противоположной.
Наиболее универсальный код наверное будет примерно такой
Код: |
LotsBuy = ; // задаем размер лота на покупку и закрытие покупки
LotsShort = ; // задаем размер лота на короткую продажу и её закрытие
Lots = Buy*LotsBuy + Cover*LotsShort - Sell*LotsBuy - Short*LotsShort;
|
Таким образом будет вычислен суммарный лот в зависимости от сигналов на торгуемом баре. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
000 писал(а): |
В том виде как есть в коде сразу 2 принципиальные ошибки.
1. if(B=1) следует писать if(B==1) или просто if(B)
2. функция If не может работать с массивами, а В в данном случае массив
Вроде есть ошибки в логике. В случае переворотной системы только первый вход осуществляется одинарным лотом, а все остальные сделки всегда двойным, что приводит к закрытию открытой позиции и открытию противоположной.
Наиболее универсальный код наверное будет примерно такой
Код: |
LotsBuy = ; // задаем размер лота на покупку и закрытие покупки
LotsShort = ; // задаем размер лота на короткую продажу и её закрытие
Lots = Buy*LotsBuy + Cover*LotsShort - Sell*LotsBuy - Short*LotsShort;
|
Таким образом будет вычислен суммарный лот в зависимости от сигналов на торгуемом баре. |
"В случае переворотной системы только первый вход осуществляется одинарным лотом, а все остальные сделки всегда двойным, что приводит к закрытию открытой позиции и открытию противоположной"
Ты прав, но эти условия написаны для варианта с системой записи в файл взятой у меха, там количество лотов для для каждого случая sell buy cover short одинарное просто в случае реверсивной системы в файл записывыется две строки для каждого из сигналов с одинарным количеством равным количеством, например если cover и buy то тупо пишется две строки с префиксом "B" и одинаковым количеством лотов, а мне нужно чтобы также писалось две строки но с разным количеством лотов для buy и short Lots1, для Sell и Cover Lots2 |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
Вопрос снимается, проблема решена. Все дело в том что помимо покупки продажи решил прикрутить менеджемент по портфелю) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Сергей писал(а): |
Вопрос снимается, проблема решена. Все дело в том что помимо покупки продажи решил прикрутить менеджемент по портфелю) |
Т.е. в зависимости от просадки системы и тех убытков которые готов терпеть, вычесляеш размер лотов в позе, я так никогда не делаю, поэтому хочу спросить, сколько риск-менеджмент позволяет тебе использовать депо на систему (можно грубо в проценте, понимаю что это будет частный случай) и формулу вычесления там как понимаю больше всего влияет размер стопа и какой процент просадки дэпо ты выбрал. Не совсем понял зачем вычеслять лот при каждой операции buy и sell, вроде размер позы должен меняться, ее закрытие должно соответствовать открытию. Ну и есно чем все закончилось, в смысле формул. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|