Мартингейл в течении торговых суток. |
Добрый день.
Прошу написать советник по следующим условиям:
1.Каждые сутки в 00:05 (ждем выравнивания спреда) открывается позиция №1 в сторону движения предыдущей дневной свечи.
2.Лот минимальный ,sl, tp;
3.В случае закрытия позиции №1 по тейкпрофиту, то в эти сутки торговля больше не ведется.
4.В случае закрытия позиции №1 по стоплоссу, то следующая позиция №2 открывается в противоположенную позиции №1 сторону увеличенным лотом.
5.В случае закрытия позиции №2 по тейкпрофиту, то в эти сутки торговля больше не ведется.
6.В случае закрытия позиции №2 по стоплоссу, то следующая позиция №3 открывается в противоположенную позиции №2 сторону увеличенным лотом.
7.В случае закрытия позиции №3 по тейкпрофиту или стоплоссу в эти сутки торговля больше не ведется.
8.В 23:55 текущих суток закрывается любая из позиций (№1,№2,№3), не закрывшаяся ни по тейкпрофиту ни по стоплоссу.
9.При наступлении следующих торговых суток алгоритм 1-8 повторяется.
Спасибо.
-
+2
- Просмотров: 2706
- 29 января 2020, 20:08
- ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!
Комментарии (8)
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16256 - Андрей
12 Slava78 Сообщений: 598
35 AM2 Сообщений: 16256 - Андрей
Привет, Слава.
Почему то не могу оставлять сообщения на странице советника. Текс пишу, жму кнопку — кольцо вращается, а сообщения не отправляется. Хотя через кнопку «приват» все нормально. Может нужно поменять браузер? Не знаю. Такое только на этом форуме!
Да, все верно.
Отправляю тебе копию сообщения которое отправил Андрею.
Вместо скринов.
1.Пара «EURUSD», время 00:05, цена — 1.10000, предыдущая дневная свеча iClose(NULL,PERIOD_D1,1)>iOpen(NULL,PERIOD_D1,1).
2.Открываем позицию на покупку: лот — 0.01, sl — 100 пунктов, tp — 100 пунктов.
Вариант событий №1:
1.1.Цена выросла до 1.10100 — позиция на покупку закрылась по про профиту. В эти торговые сутки торговлю больше не ведем.
Вариант событий №2:
2.1.Цена упала до 1.09900 — позиция на покупку закрылась по стопу. Открываем позицию на продажу: лот — 0.02, sl — 100 пунктов, tp — 100 пунктов.
Вариант событий №2.1:
2.1.1.Цена упала до 1.09800 — позиция на продажу закрылась по про профиту. В эти торговые сутки торговлю больше не ведем.
Вариант событий №2.2:
2.2.1.Цена поднялась до 1.10000 — позиция на продажу закрылась по стопу. Открываем позицию на покупку: лот — 0.04, sl — 100 пунктов, tp — 100 пунктов.
2.2.2.Цена выросла до 1.10100 — позиция на покупку закрылась по про профиту. В эти торговые сутки торговлю больше не ведем.
Вариант событий №2.3:
2.3.1.Цена упала до 1.09900 — позиция на покупку закрылась по стопу. В эти торговые сутки торговлю больше не ведем.
Вариант событий №3:
3.Время 23:55. Если присутствует открытая позиция то она закрывается принудительно.
30 января 2020, 06:58
Алгоритм для продаж аналогичен.
12 Slava78 Сообщений: 598
35 AM2 Сообщений: 16256 - Андрей
Редактирован: 31 января 2020, 09:01
12 Slava78 Сообщений: 598
Прошу добавь на страницу с советником мое сообщение. Советник работает не совсем верно, хотя на любителя можно и так. Я примитивно исправил советник Андрея, но может он сделает это более элегантно. Но и те кто будут смотреть этот советник должны знать это разногласие с ТЗ.
Андрею в приват я уже отправил это сообщение:
Андрей спасибо.
Но не выполняется условие — открытие первой позиции в сутках минимальным лотом. Советник увеличивает лот.
Решил добавлением еще одной функции
void PutOrder_(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0)
sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0)
sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
}
r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
и внес изменение в функции старт-
</ // открытие в начале дня
if(TimeCurrent()==StringToTime((string)StartHour+":"+(string)StartMin) && CountTrades()<1)
{
if(cl>op)
{
PutOrder_(0,Ask);
}
if(cl<op)
{
PutOrder_(1,Bid);
}
}code>
Теперь все работает согласно ТЗ.
Спасибо!
12 Slava78 Сообщений: 598
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий