|
AmiSite.ru
Форум по Ами |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Бля, чуть всю голову не сломал.
Короче, надо вот так.
Код: |
Buy1 = DayOfWeek() == 2 AND Ref(DayOfWeek(), -1) == 1;
BuyPrice = C;
s1 = 1; // (начальный стоп для лонга)
Sell = 0;
Short1 = DayOfWeek() == 5 AND Ref(DayOfWeek(), -1) == 4;
ShortPrice = C;
s2 = 1; //(начальный стоп для шорта)
Cover = 0;
pos = 0;
for( i = 1; i < BarCount; i++)
{
if( pos == 0)
{
if(Buy1[i]) // покупаем
{
Buy[i] = 1;
pos = 1;
Pricebuy = BuyPrice[i];
stop = s1[i];
}
else if( Short1[i]) // продаем
{
Short[i] = 1;
pos = -1;
Priceshort = ShortPrice[i];
stop = s2[i];
}
}
else if( pos == 1)
{
if( L[i] <= (Pricebuy - stop)) // закрываем, если дошло до стопа
{
Sell[i] = 2;
SellPrice[i] = Pricebuy - stop;
pos = 0;
}
else if( H[i] >= (Pricebuy*1.005)) // переносим стоп в безубыток, если цена прошла в мою сторону на 0,5%
{
stop = 0;
if( L[i] <= Pricebuy) // закрываем, если дошло до стопа
{
Sell[i] = 2;
SellPrice[i] = Pricebuy;
pos = 0;
}
else if( H[i] >= Pricebuy*1.01) // тейк-профит 1%
{
Sell[i] = 3;
SellPrice[i] = Pricebuy*1.01;
pos = 0;
}
}
}
else if( pos == -1) // все то же самое, но для шорта
{
if( H[i] >= (Priceshort + stop))
{
Cover[i] = 2;
CoverPrice[i] = Priceshort + stop;
pos = 0;
}
else if( L[i] <= (Priceshort*0.995))
{
stop = 0;
if( H[i] >= Priceshort)
{
Cover[i] = 2;
CoverPrice[i] = Priceshort;
pos = 0;
}
else if( L[i] <= Priceshort*0.99)
{
Cover[i] = 3;
CoverPrice[i] = Priceshort*0.99;
pos = 0;
}
}
}
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
SPR
Зарегистрирован: 10.11.2008
Сообщения: 45
|
Работает!!
Гениально!
Готов выслать вискарь по полученным реквизитам |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Marcello
Зарегистрирован: 30.05.2015
Сообщения: 69
|
Код: |
else if( pos == 1)
{
if( L[i] <= (Pricebuy - stop)) // закрываем, если дошло до стопа
{
Sell[i] = 2;
SellPrice[i] = Pricebuy - stop;
pos = 0;
} |
Тут не учтен гэп в сторону стопа, поэтому на мой взгляд правильнее будет так:
Код: |
else if( pos == 1)
{
if( L[i] <= (Pricebuy - stop)) // закрываем, если дошло до стопа
{
Sell[i] = 2;
SellPrice[i] = Pricebuy - stop;
if ( SellPrice[i] > O[i] ) SellPrice[i] = O[i]; // если открытие ниже стопа, то закрываем с открытия
pos = 0;
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Совершенно верно.
А еще лучше так
Код: |
if( L[i] <= (Pricebuy - stop)) // закрываем, если дошло до стопа
{
Sell[i] = 2;
SellPrice[i] = min((Pricebuy - stop), O[i]);
pos = 0;
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
| |