Курсы валют
<a href="https://www.instaforex.com/ru/" target="blank">ИнстаФорекс портал"</a>
Новости от FOREXPF.RU
<a href="https://www.instaforex.com/ru/">Форекс портал</a>
Май 2017
Пн Вт Ср Чт Пт Сб Вс
« Апр   Июн »
1234567
891011121314
15161718192021
22232425262728
293031  
При поддержке: деньги и фен шуй.

Архивы за месяц Май 2017

Торговый дневник 20.05.2017 (суббота) Начало разработки FST 1.31: Время жизни сработавших отложенников

07:57 Сегодня буду делать новую версию FST 1.31, в которой основное отличие будет в том, что сетка будет работать только со своими сделками, а встречные позиции будут закрываться только от отложенников и локов со своими магиками. (отказался от этой идеи)
Изменения версии 1.31   2017 05 20 (суббота)
1. Из функций fCloseAllOpenOrders(), fSeekOrderLock(), CloseOpenOrdersByMaxDrawDown(), CloseByMaxLosses() убрал магики
2. Для локов применяется MagicNumberPending
3. Сделал функцию fnCloseOppositePositionsPending() которая работает только с отложенниками и локами

09:15 Вчера по луни на демке 2161416 советник нормально отработал на тренде ~ 100 п. селлимитами и селстопами. Эквити правда просело примерно на 50%, а баланс остался практически при своих. Рибейтов вышло ~17%. Повышенное Ratio и MTP корректно отработали.

09:21 Теперь протестирую FST 1.31… Тест ничего особо не дал (кроме проверки алгоритма)… Но зато на тренде СЛ и СС не закрываются рано встречными сеточными позициями, а тралятся.
10:19 Решил проверить условие, чтобы закрывались встречные сеточные позиции только с отложенниками:
if ( MagicNumberBuy == MagicNumberPending || MagicNumberSell == MagicNumberPending)
тестирую… Ничего на дал тест… В итоге отказался от проверки на магик при закрытии встречных позиций
Новая идея: Сработавшие отложенники нужно закрывать по истечению времени жизни НЕЗАВИСИМО от к-та перегруза.
Добавил параметры:
   extern string t16 =              «====== Время жизни Отложенников =======»;
   extern bool    ClosePendingOrderExpiration = TRUE;  // Если TRUE — закрываем сработавшие отложенники, у которых время жизни превысило iPendingOrderExpiration
   extern int     iPendingOrderExpiration = 3600;      // Время истечения сработавших  отложенников
Сделал функцию  fClosePendingOrderExpiration()   // Закрытие сработавших отложенников по истечению времени их  жизни независимо от к-та перегруза. Немного потестировал – идея здравая, буду использовать…

Торговый дневник 19.05.2017 (пятница) FST 1.30: Сделал изменение Ratio по времени и свои MagicNumber для отложенников

07:42 Демка 2361228 все-таки слилась, отбив 42% рибейтами… Пока тесты и доработки ни приводят к нужному результату. Мысль только одна пока, как улучшить результат: Нужно растягивать шаг сетки и возможно применять повышенный MLF
08:33 Параметры сетки стояли такие2017.05.19 08:31:39.453
Forex Setka Trader ABB 1_30 USDCAD.m,M5:  MM=1 Risk=3/50%;
PointsMTP=0.1*10(9:00-20:00); MLF L=1 S=1;
Step L=0.1 S=0.1; Ratio=0.005;
Lock=1/Lots=10.0/K-t=1.10/SL=100/150; MicroLots=1/K=0.33/Lots<=-0.330/Exp=1800;
BigLots=1/K=3.00/Lots>=-3.000/Exp=3600;
iStopOrders=1/MaxSO=10/Step=10/KoefLot=1.1/Activate=8;
iLimitOrders=1/MaxLO=10/Step=5/KoefLot=1.1/Activate=5
Конечно шаг маленький

09:19 Поправил найденные ошибки в FST 1.30 (закрытие по маржебез условийЗавожу новую 2361416 демку на 25000$ с плечом 1:1000 для продолжения тестирования по USDCAD
Параметры FST 1.30 при запуске2017.05.19 09:28:50.668           Forex Setka Trader ABB 1_30 USDCAD.m,M1:  MM=0
MinLot=0.5; PointsMTP=0.5*10(9:00-20:00); MLF L=1.01 S=1.01; Step L=0.1 S=0.1; Ratio=0.1;
Lock=1/Lots=40.0/K-t=0.50/SL=0/0;
MicroLots=1/K=0.33/Lots<=0.170/Exp=1800; BigLots=1/K=2.00/Lots>=1.040/Exp=1800;
iStopOrders=1/MaxSO=5/Step=10/KoefLot=1.2/Activate=5; iLimitOrders=1/MaxLO=5/Step=10/KoefLot=1.0/Activate=3

10:54 Тестирую с к-том закрытия больших сделок 1.5 – вроде неплохо работает… Остановил тест…

2017.05.19 10:57:23.754                                                2017.05.16 05:55:36  Forex Setka Trader ABB 1_30
USDCAD.m,M1:  MM=0 MinLot=0.5; PointsMTP=0.5*10(9:00-20:00); MLF L=1 S=1; Step L=0.1 S=0.1; Ratio=0.1;
Lock=1/Lots=40.0/K-t=1.00/SL=0/0; MicroLots=1/K=0.33/Lots<=0.170/Exp=1800;BigLots=1/K=1.50/Lots>=0.750/Exp=1800;
iStopOrders=1/MaxSO=5/Step=10/KoefLot=1.2/Activate=5; iLimitOrders=1/MaxLO=5/Step=10/KoefLot=1.0/Activate=3

10:57 Мысль еще одна возникла: Ратио менять по времени: на Азии уменьшать, чтобы было больше сделок, а в период 9:20 увеличивать (как PointMTP) (сделал)
4. Добавил параметры и переменную:
   extern int     BeginHourRatio = 9;                  // Начальный час по времени сервера, когда советник использует повышенный Grid_Ratio
   extern int     EndHourRatio = 20;                    // Конечный час по  времени сервера, когда советник использует повышенный Grid_Ratio
   extern double  dKoefRatio = 10;                     // Коэффициент  увеличения PointsMTP после истечения EndHourRatio
   double  dGrid_Ratio= Grid_Ratio; //2017 05 19 коэффициент увеличения шага сетки рабочий

11:48 Тестирую по луни с 15.05 – работает правильно. И тестироваться стало немного получше…

2017.05.19 13:25:16.317                                                2017.05.16
19:46:18  Forex Setka Trader ABB 1_30 USDCAD.m,M1:  MM=0 MinLot=0.5; PointsMTP=0.5*10(9:00-20:00); MLF L=1 S=1; Step L=0.1 S=0.1; Ratio=0.02*5(9:00-20:00); Lock=1/Lots=40.0/K-t=1.00/SL=0/0; MicroLots=1/K=0.33/Lots<=0.170/Exp=1800;
BigLots=1/K=1.50/Lots>=0.750/Exp=1800;
iStopOrders=1/MaxSO=5/Step=10/KoefLot=1.2/Activate=5;
iLimitOrders=1/MaxLO=5/Step=10/KoefLot=1.0/Activate=3

13:12 Еще одна мысль возникла, как поднимать эквити: Можно закрывать встречные позиции только с магиком от отложенников, а сетка будет работать только своими сделками
14:48 Изменил комменты к сделкам (добавил магик)
   TradeComment = Version + » » + Symbol() + » L-» + iWorkStepLong + » » + MagicNumberLong;
TradeComment  = Version + » » + Symbol() + » S LOCK» + » » + MagicNumberShort ;
TradeComment  = Version + » » + Symbol()+ » » + strTrimTypeOrder(iCmd) + «-» + MathAbs(iLevel) + » » + MagicNumberPending;

Выяснил, что отложенники срабатывают на ОДНОМ уровне ВСЕ 5 шт… А только потом начинают двигаться…
15:54 Написал новую функцию поиска открытых отложенников SeekPeendingOrderByOpenPriceInTrades(),
добавил вызов при открытии и модификации отложенников. Над демке вроде работает правильно (не выдает ошибок), а в тестере постоянно гонит 130 и 1 ошибки… и не модифицирует отложенники… странно…
16:10 Луни пошел вниз – советник перешел на повышенные Ratio и MTP – шаг в БАЙ увеличился до 3,3 п.
– селы тралятся… СС работают …
В функции CheckPendingOrders()   вынес модификацию отложенников из проверки
на перегруз позиций и убрал NormalizeDouble(…Digits) по ценам…

Торговый дневник 18.05.2017 (четверг) Доработки и тесты FST 1.30 продолжаются…

05:45 Запустил тест с 15.05 с локами на 30 лотовой просадке… 15 мая прошел тест – локов не сработало, но начал сливать 16 – уже на  флэте…

06:11 Снизил PointsMTP=1*2 и увеличил кол-во отложенников… опять тестирую по удаленке…
И еще мысль возникла: протестировать со срабатыванием локов с небольшим перегрузом, и с к-том 0,3-0,5 … Не очень хорошо прошел…

07:59 На работе. Т.к. на демке 2360954 эквити осталось 87$, баланс 195$ — но советник продолжает работать…завожу новую демку 2361228 на 25000$ — буду тестировать фиксированным лотом 0.5 FST 1.30 с параметрами:

MM=0 MinLot=0.5; PointsMTP=0.5*5(9:00-20:00); MLF L=1 S=1; Step L=0.5 S=0.5; Ratio=0; Lock=1/Lots=10.0/K-t=0.50/SL=0/0; MicroLots=1/K=0.33/Lots<=0.170/Exp=1800; BigLots=1/K=3.00/Lots>=1.500/Exp=900; iStopOrders=1/MaxSO=5/Step=5/KoefLot=2.0/Activate=7;iLimitOrders=1/MaxLO=5/Step=5/KoefLot=2.0/Activate=5
08:39 Решил протестировать с такими же параметрами с 15.05 …
Вывод: лок (и крупные позиции) должен закрываться по времени независимо от НАЛИЧИЯПЕРЕГРУЗА (отказался – неправильная мысль, т.к. при наличии перегруза нельзя его еще увеличивать…)

Сделал – тестирую. Но впечатление такое, что лучше работать вообще без локов (точнее локи нужны только при очень большом перегрузе >25-30 лотов). И шаг сетки нужно сильнее растягивать против тренда.

Тестировал с ратио 0,1 – сильно растягивается сетка, но и просадка меньше,
09:23 сейчас тестирую с ратио 0.02  … практически без локов с шагом отложенников 0,5 п.
И еще: нужно сделать индикацию времени жизни крупных сделок как для локов(сделал)
10:17 Продолжается тестирование и главный вывод: Шаг сетки нужно растягивать (Ратио 0.1 шаг 0.5 тестится), чтобы не было много сеточных сделок против тренда, а основной объем сделок будет от работы лимитных и стоповых ордеров.
Тест остановился после 16.05, т.к. не задал текущую дату окончания теста… но неплохо прошел …

2017.05.1810:34:21.876                                                2017.05.16 23:58:55  Forex Setka Trader ABB 1_30 USDCAD.m,M1:  MM=0 MinLot=0.5;
PointsMTP=0.5*3(9:00-20:00); MLF L=1 S=1; Step L=0.5 S=0.5; Ratio=0.1; Lock=1/Lots=40.0/K-t=1.00/SL=0/0; MicroLots=1/K=0.33/Lots<=0.170/Exp=1800; BigLots=1/K=3.00/Lots>=1.500/Exp=1800;
iStopOrders=1/MaxSO=5/Step=5/KoefLot=2.0/Activate=8; iLimitOrders=1/MaxLO=10/Step=5/KoefLot=2.0/Activate=5

11:25 Гораздо лучше тест проходит с MTP=1.01… Остановил тест…
После правки тестирую с MTP=1 … И еще мысль – нужен к-т повышения размера отложенников, чтобы они превышали перегруз позиций в другую сторону (как у локов)
Добавил параметры (использовал старые с другим смыслом)
   extern double  dKoefLotStopOrders= 1.1;         // К-т повышения для стоповых ордеров (Перегруз позиций*dKoefLotStopOrders)
   extern double  dKoefLotLimitOrders= 1.1;         // К-т повышения для лимитных ордеров (Перегруз позиций* dKoefLotLimitOrders)

14:29 Похоже нашел ошибку в расчете лотов открытых позиций… стало лучше тестироваться…
Убрал NormalizeDouble(…, dig) при расчете:
//dblLots_buy  = NormalizeDouble(dblLots_buy, dig) ;
//dblLots_sell = NormalizeDouble(dblLots_sell,dig) ;
   dblSum_lot   = dblLots_buy — dblLots_sell; // Суммарный лот (плюс или минус   dblAbsSum_lot = MathAbs(dblSum_lot); //
Aбсолютное значение суммарного лота (значение по модулю, всегда плюс)

14:39 Остановил тест… теперь снижу Ratio=0.01… — не стоит…
15:18 Идет тест с MLF=1.01 ратио-0.1 шаг 0,5 …Глядя на тестирование думаю, что нужно шаг сетки учитывать только для сеточных позиций (без учета сработавших отложенников) – а то на 3-й день шаг уже вырос до 4-6 п. за счет количества позиций в работе, и поэтому мало сделок… Хотя проще просто уменьшить ратио… Но эквити все-равно
просаживается, хотя баланс потихоньку с откатами растет…
16:21 Остановил тест…

16:23 Протестирую с 01.05 с  MLF=1.01 ратио-0.1 шаг 0,5 … Тренд 2 мая отлично отработал советник отложенниками БС и БЛ, а на флэте дальше начали закрываться по таймауту… Остановил тест…

17:07 Сделал, чтобы только сеточные сделки учитывались советником при расчете шага и MLF, а
индикация работала по ВСЕМ ПОЗИЦИЯМ:
10.Добавил переменную    int     MagicNumberPending   = 300;        // 2017 05 18 для отложенников
12.Изменил переменную   bool    UseMAGIC             = TRUE;      // 1 — учитываем только ордера, открытые советником, 0 — учитываем все ордера
13. в ФУНКЦИЮ OpenOrder(int iCmd, int iLevel, double dOpenLot, double dPriceOPEN )
   добавил  MagicNumberPending
   int  iTicket=OrderSend(Symbol(), iCmd, dOpenLot, dPriceOPEN, 1, dPriceSL, dPriceTP, TradeComment, MagicNumberPending, 0, iColor); // 2017 05 18
14. В функции fCalcCurrentPositions() учитываются ВСЕ позиции БЕЗ УЧЕТА МАГИКА !!!
   if ( OrderSymbol()==Symbol() ) // 2017 05
18 Убрал магик — считаются ВСЕ позиции
Теперь тестирую опять с 15.05 – вроде правильно работает…

18:46 Дома. Решил потестировать новые доработки по франку на тренде с 15.05
Почти 3 дня продержался до разгрузки… но всего 2800 сделок… маловато…

Теперь по фунту… Доторговал на флэте до 0 … ~7500 сделок

2017.05.18 21:35:20.850                                                2017.05.18 12:43:24  Forex Setka Trader ABB 1_30 GBPUSD.m,M1:  MM=0 MinLot=0.5;
PointsMTP=0.1*10(9:00-20:00); MLF L=1.01 S=1.01; Step L=0.5 S=0.5; Ratio=0.1; Lock=1/Lots=40.0/K-t=1.00/SL=0/0;
MicroLots=1/K=0.33/Lots<=-0.330/Exp=1800; BigLots=1/K=2.00/Lots>=-2.000/Exp=900;
iStopOrders=1/MaxSO=5/Step=5/KoefLot=1.2/Activate=5; iLimitOrders=1/MaxLO=10/Step=5/KoefLot=1.1/Activate=3

22:21 Потестирую по фунту и повышенным шагом стоп и лимит ордеров по 10 шт. через 1 п. MLF=1 – лучше идет… но все равно сливает эквити…

Торговый дневник 17.05.2017 (среда) Новая доработка FST 1.30: Закрытие крупных сделок по времени жизни

07:51 Эквити на демке 2360954  2620$, баланс 8318$, просадка 68%, маржи 235%. Советник корректно отработал вчера локами, вот только параметр срабатывания локов должен быть повыше: 15-20 лотовый перегруз, а то
слишком много локов отработало по стопам. Закрытие мелких локиков по истечению времени жизни так же нормально отработало.  Рибейтами отбилось около 30% за ~2400 сделок, но эквити маленькое. Поэтому рабочий лот снизился и стал <0.1. Дальше советник вряд ли вытянет рибейтами депозит на 100% …
На сайте дневники обновились и стали актуальными. Хорошо, но непонятно почему неделю не обновлялись…

08:03 Вчера еврик и франк третий день подряд продолжали сильный тренд в одну сторону, а фунт и луни гораздо лучше флэтообразно торговались.
Можно потестировать советник по фунту…
А после доработок возможно и погонять советник на демке
по двум парам – фунт и луни.

На демке 1234948622, на которой торгуется с 24.04.2017 FST 1.17 по 6 парам, эквити на максимуме было 250000, баланс вырос > чем в 3 раза, но из-за сильного тренда по нескольким парам, счет ушел в просадку на 75%, маржи остается 118%, эквити ~77000$. Если тренды по франку и еврику продолжатся, скорее всего счет сольется…

08:15 Возникла новая идея: Можно убивать по истечению не только мелких лосей, но и крупных с размером > рабочего лота в 2-3 раза (например сработавшие байстопы и локи, если тренд развернулся держат маржу и не дают расти эквити). (сделано 10:27)
И еще нужно убрать метки от всех позиций, кроме закрытых по любым причинам кроме сеточных и перекрытых позиций (а то слишком много меток ненужных – приходится постоянно их чистить…). Оставить метки от локов, закрытия по марже, по истечению времени жизни и стоплоссов. (сделано 09:25)
И еще нужно сделать, чтобы при модификации отложенников должна быть проверка, есть ли сделка по той цене, на которую должна измениться цена открытия, и если такая позиция уже есть – то не двигать цену срабатывания на этот уровень, чтобы не было по несколько сделок на одинаковых уровнях(сделано 09:35 – но выдает ошибки 1 и 130 при модификации… пока отключил…)
10:27   Добавил параметры
extern bool    CloseBigOrderLots = TRUE;        // Если TRUE — закрываем КРУПНЫЕ ордера, у которых время жизни превысило iBigOrderExpiration
   extern double  dBigOrderLots = 1.0;             // Размер лотов КРУПНЫХ ордеров,  которые закрываются, если их время жизни превысило iBigOrderExpiration
   extern int     iBigOrderExpiration = 3600;      // Время истечения КРУПНЫХ ордеров в  секундах размером БОЛЬШЕ dBigOrderLots
Сделал функцию void CloseBigOrderExpiration() // Закрытие КРУПНЫХ ордеров по истечению времени их жизни
Тестирую по луни с 15.05…
10:35 пока впечатление гораздо лучше чем вчера. Советник закрывает по времени КРУПНЫЕ локи и открывает снова если есть перегруз позиций. За счет этого гораздо больше крупных сделок проходит по рибейтам…Теперь нужно еще сделать: Добавить повышающий К-т для определения размера лота крупных ордеров по отношению к рабочему лоту (2-3) и понижающий к-т (0,3-0.5) для микролотов

10:46    Добавил параметры:
extern double  dKoefMicroOrderLots = 0.333;     // Понижающий коэффициент размера микролотов по отношению к рабочему лоту
   extern double  dKoefBigOrderLots = 3.0;         // Повышающий коэффициент  размера  БОЛЬШИХ лотов по отношению к рабочему лоту
12:36 Отлаживаю и тестирую по луни за 15.05 – когда был  тренд вниз …При модификации опять гонит 1 и 130 ошибки…

13:05 Убрал из условий закрытия БОЛЬШИХ позиций по истечению проверку на перегруз позиций.
Тестирую за разные периоды … На всех периодах советник постепенно сливает… отдает и баланс и эквити…

15:44 21. Добавил индикацию времени жизни локов:
      if ( iBigOrderExpiration > TimeCurrent()- dOpenTimeLockLong )      {         colLock = Yellow;
         txtLongLock = txtLongLock + «  Exp » + TimeToStr(iBigOrderExpiration — (TimeCurrent()-dOpenTimeLockLong),TIME_SECONDS); }
else  
      {         colLock = OrangeRed;
txtLongLock = txtLongLock + » Working » + TimeToStr((TimeCurrent()-dOpenTimeLockLong),TIME_SECONDS);    }
Красиво получилось… Теперь нужно сделать частичное закрытие локовых позиций по времени…
15:55 А демка 1234948622 все-таки получила стопаут  на сильных трендах FST 1.17 не выдерживает 6 валют…

20:01 Дома. Тестирую новые изменения FST 1.30 по луни с 15.01… Очень медленно тестируется дома… На демке советник продолжает торговать, эквити 1530, баланс 2663, просадка 42%. На работе поставил срабатывание локов при 2 лотовой
перегрузе, СЛ и СС при 1 лотовом – и нормально работает. Локи закрываются по времени и срабатывают новые.
20:12 Остановил тест, т.к. тупит ноут… 100% загрузка  процессора и очень медленно… Но тренд и разворот в понедельник прощел более менее нормально…

Попробую потестить по удаленке на работе… Тестирую с PointsMTP=5*2…. 35 лотовые локи работают…
22:10 Довольно интересный тест получился… Советник очень долго торговал при балансе и эквити в пределах 10-15$.
~2500 сделок … Сейчас на демке 2360954 приблизительно такие же показатели, посмотрю завтра – справится или нет …

2017.05.17 21:31:23.400      2017.05.16 23:58:55  Forex Setka Trader ABB 1_30 USDCAD.m,M1:  MM=1 Risk=3/50%
PointsMTP=5*2(9:00-20:00); MLF L=1 S=1; Step L=0.1 S=0.1; Ratio=0.005; Lock=1/Lots=7.0/K-t=1.10/SL=0/0;
MicroLots=1/K=0.50/Lots<=0.030/Exp=1800; BigLots=1/K=3.00/Lots>=0.150/Exp=1800;
iStopOrders=1/MaxSO=5/Step=5/KoefLot=2.0/Activate=6;
iLimitOrders=1/MaxLO=5/Step=5/KoefLot=2.0/Activate=5

Тест фиксированным лотом с 16.05 довольно неплохо прошел с локами на 25 лотовой перегрузке (локов не было) с шагом 0,5 п. Гораздо лучше чем с локами… Но все-таки нужно победить, чтобы не срабатывали на одних уровнях отложенники из-за них много сделок закрылось по таймауту 15 мин.

Торговый дневник 16.05.2017 (вторник) Доработки FST 1.30: Повышенный MTP, закрытие микролотовых сделок, новый алгоритм работы локов

06:47 Эквити на демке 2360739 4373$, баланс 13513$, просадка 67%, 1672 сделки отбили почти 25% от депозита рибейтами. По результатам первого дня тестирования на демке по франку такие выводы:

1.      Повышенный MTP нужно использовать до 20:00 (вместо 22:00) – дальше чаще всего идет флэт – и можно снизить MTP до минимального. И время окончания определять < вместо <= (сделал)

2.      Стоповые ордера должны срабатывать только один раз, чтобы не было двойных сделок на одних уровнях (сделать как лимитники) (сделал)

3.      Уровень превышения для срабатывания стоповых ордеров должен определяться исходя из % просадки и наличия свободной маржи. Чем просадка больше, и уровень маржи меньше, тем шаг должен быть меньше, и перегруз позиций активации так же должен уменьшиться. (пока отложил)

4.       Отложенники должны удаляться не сразу при смене перегруза позиций, а с зазором 1-2 лота (нужен параметр в настройках) (сделал)

5.      Возможно мелкие сделки < 0.01 или 0.005 лота (которые остаются после перекрытия встречных ордеров с разными размерами) нужно сразу гробить  мелкие минуса, чтобы освобождать количество свободных позиций для текущих сделок. (А то сейчас в работе уже 108 позиций в БАЙ, из которых 21 меньше 0,01 лота – почти 20% …). Можно это сделать с помощью истечение срока действия ордера – Добавить параметр: Срок жизни мелких позиций (например час или 2) и проверять в цикле размер лотов открытых ордеров. Если они меньше минимального (еще один  параметр) – то ставить OrderExpiration() по ним, чтобы сразу не убивались в минус, т.к. еще могут отработать в плюс на флэте … (сделал)

08:00 На работе. Залил вчерашний дневник на сайт. Почему-то опять не показывает последние записи… странно и непонятно почему… За 13.05 последняя светится в рубрике Торговый дневник, а на главной вообще за 5.05. Дома нормально…
09:16 Исправил конец времени торговли <= на <  if (( WorkHour >= BeginHourMTP ) && ( WorkHour < EndHourMTP ))
В функции CheckPendingOrders() исправил условие срабатывания стоп ордеров — только 1 раз при превышении (как лимитников) Решит потестировать по USDCAD за вчерашний день – был неплохой трендик…
09:44 При превышении 20 лотов для стоп ордеров советник бы слил… Тестирую с превышением 10 для стоп ордеров…Вроде лучше отрабатывает… но просадка 80% — многовато…
10:01 И еще мысль смотря на тестирование: СС должны подниматься при откате цены на тренде вверх, по превышению для лимитных ордеров…
10:25 Сделал модификацию стоповых отложенников при превышении для лимитников в функции CheckPendingOrders() Получше стал отрабатывать…
11:21 Добавил параметры:
   extern bool    CloseMicroOrderLots = TRUE;        // Если TRUE — закрываем мелкие ордера, у которых время жизни превысило iMicroOrderExpiration
   extern double  dMicroOrderLots = 0.01;            // Размер лотов мелких ордеров,  которые закрываются, если их время жизни превысило iMicroOrderExpiration
   extern int     iMicroOrderExpiration = 3600;      // Время истечения мелких ордеров в  секундах размером МЕНЬШЕ dMicroOrderLots

Сделал функцию: CloseMicroOrderExpiration()  Закрытие МЕЛКИХ ордеров по истечению времени их жизни
11:44 Отладил —  теперь тестирую по USDCAD …Все равно тест прокатил за вчерашний день…

12:05 Поставлю минимальный лот 0.1 по истечению и протестирую снова… И еще нюанс: по истечению должны закрываться только сделки против превышения. Т.е. если перегруз в БАЙ – закрываются только сделки в СЕЛ и наоборот…
12.20 Добавил условие для закрытия микролотов:
   if ( ( ( dblLots_buy > dblLots_sell ) && ( OrderType()==OP_BUY ) ) // Перегруз лотов в БАЙ — удаляем только сделки в БАЙ если есть
   || ( ( dblLots_buy < dblLots_sell ) && ( OrderType()==OP_SELL ) ) ) // Перегруз лотов в СЕЛ — удаляемтолько сделки в СЕЛ если есть
Тестирую со временем жизни 1800 (0,5 часа) – немного получше идет…  Остановил …
Возможно минимальный лот для закрытия по превышению определять исходя из размера рабочего лота – например есло рабочий лот 0.3, то все сделки меньше его — закрывать по превышению … Позже проверю эту мысль …Хочу поставить число лимитников 5 и протестить снова … Не прокатил …
Ставлю шаг лимитников поменьше – 2 п. 10 шт… — хуже …
12:50 Ставлю шаг стоповых ордеров 5 п. … лучше идет… Но лок погубил – сработав при 90% просадке… Остановил тест… Хотя советник продолжал нормально работать…9500 сделок наторговал…

Поставил срабатывание локов на 95% и микролоты 0.15 – тестирую снова…
13:41 Разворот тренда прошел, но эквити осталось 10 баксов … остановил тест…

14:02 Глядя на эти тесты еще одна мысль возникла: А что если локи будут срабатывать не при превышении % просадки, а при определенном перегрузе лотов в другую сторону! И пусть висят, пока не возникнет перегруз в другую сторону, или советник порежет лок по частям – и тогда освободится место для еще одного лока…

Попробую перепрограммировать локи по такой схеме. А то прошлая схема ничего толком не давала…
14:36 Добавил параметр    extern double  NeededLotsForLock= 15;             // Размер перегруза позиций, при которых срабатывает лок

Исправил работу локов по условию:
   if ( dblAbsSum_lot >= NeededLotsForLock ) // Если Сумма перегрузки лотов позиций превышает NeededLotsForLock
14:37 Перекомпилировал — советник тут же открыл лок в СЕЛ  по франку 15,47 лотовый на демке… 22 эквити остается… СЛ и СС пока в работе остаются…
15:53 Гоняю в тестере новую версию работы локами по луни за вчерашний день… пытаюсь подобрать оптимальные параметры для локов… Пока все-равно эквити просаживается…

15:55 Решил сыграть на 10 баксов в рулетку на БигАзарте… не повезло – проиграл…Последний тест не прокатил…

16:44 Тестирую на 5 лотовой просадке для срабатывания локов… Все-таки нужно развести, чтобы не работали локи одновременно… А франк на демке пробивает вниз – локи работают, но эквити 11 баксов остается… маржи 83% — и советник не может закрыть по марже лосей… нужно найти ошибку … 131 выдается…
17:17 Исправил ошибку – теперь по нехватке маржи ордера закрываются правильно с максимальным лотом
В общем закрываю тестирование по франку на демке 2360739 – эквити осталось 7 баксов, баланс 41$ — закрыл лок по тралу, лишних лосей советник порезал и расставляет СЛ… На тренде советник отобьем максимум 30-35% от депозита на данный момент…

17:41 Открыл новую демку 2360954 и буду тестить по USDCAD – у него гораздо лучше откаты даже на трендах.
Параметры выставил: шаг 0.5 п. без ратио, MTP 1 п. повышение 2, локи на 8 лотовой просадке, лимитники на 5 лотовой, стоп-ордера на 7 лотовой. Шаг лимитников 0.5 п, стоповых 1 п.

19:30 Дома. По луни пошел тренд вверх – сработал лок в БАЙ 9,14 лотовый + работают БЛ и БС, перегруз в БАЙ был > 5 лотов – так и должно быть, чтобы в сторону тренда держался перегруз позиций. По один маленький лось 0,01 лотовый уже закрылся по истечению… Т.е. сегодняшние алгоритмы работают нормально. Теперь нужно подобрать оптимальные параметры… Есть мысль, чтобы локирующая позиция была > перегруза в 1.5 или 2 раза, чтобы при движении в сторону тренда, когда советник закрывает встречные позиции, по возможности сохранялся нужный перегруз позиций……
19:34 Попробую потестить с размером лока в 1.2 раза  больше перегруза … 8200 сделок…

Торговый дневник 15.05.2017 (понедельник) Доработка и начало тестирования FST 1.30 по USDCHF на демке 2360739

07:14 Открываю новую демку 2360739 для тестирования FST 1.30 – депозит 10000$ — запустил FST 1.30 MTP=0.3,  шаг 0.1 , ратио 0,005
08:01 Утром на работе. Что-то перестал работать хром… Подключился к новой демке – советник дома перестал торговать… Скорее всего инет отвалился.. Дома похоже роутер сдох…
Запускаю на работе на этой демке FST 1.30 с PointMTP=0.1 и к-т увеличения dKoefMTP=20. Срабатывание лимитников – на 3 лотовой перегрузке, стоп ордера – на 25 лотовой, шаг обеих 5 п.
08:17 Запустил Яндекс браузер – работает нормально – но дневник на главной показывает опять только за 5 мая… Пока буду им пользоваться – вроде стабильно работает и особенно не тупит…
08:44 Сработали 10 БЛ 0.33 лотовых при перегрузе позиций >3 лотов в СЕЛ – правильно сработал советник…

08:56 Установилось приложение TrueKey при скачивании Adobe FlashPlayer – для управления паролями. Попробую поюзать. Задал главный пароль. Но работает только с хромом и ИЕ… А хром у меня глючный… Пока отложил…

09:10 Запустил тестирование по франку с параметрами, какие стоят в советнике на демке с 24.04 …
Байстопы все-таки зависли… Возможно нужно сделать по ним шаг побольше, а ордеров поменьше – например 5 и шаг 1,5-2 п. А то шаг 0.5 – маловато … во флэте они зависают, а на тренде нужно, чтобы БС/СС были крупными… и их должно быть больше, чем перегруз позиций… Остановил тест…

09:51 Тестирую с 5 БС через 1,5 п. на 25 лотовой перегрузке и 10 БЛ на 5 лотовой перегрузке через 0,5 п. Остановил…Поставил срабатывание на 27 лотовой перегрузке через 2 п. БС. На этот раз не сработали, по БЛ много все равно дают перегрузку…
10:11 Опять остановил – тест практически так же проходит по графику… Поставил 10 лимитников через 1 п. при 4 лотовой перегрузке… Начало теста гораздо лучше – даже эквити немного поднималось во флэте…
11:28 Пока тестирование идет нормально, крупный сработавший БС советник закрыл по марже – эквити не просело практически – и продолжает торговлю … >8600 сделок наработал уже… Просадка была макс. 82%, баланс поднялся в 2 раза почти…
12:00 Еще пара СС закрылась по марже… На самом максимуме причем опять… Возможно все-таки размер БС нужен поменьше…
12:20 Разгрузил по марже лишние баи – и продолжает работать на 8 эквити… 46 баланс… Остановил тест. 13500 сделок – прилично… Неплохой тест… Вопрос в том – отобьет или нет депозит… И рынок нужен флэтовый…

12:39 Сделал, чтобы при смене перегруза позиций убивались ВСЕ отложенники в противоположную сторону.Теперь тест с БС 10, шаг 20, срабатывание на 15 лотовой просадке, БЛ 10 шаг 10, срабатывание на 5 лотовой просадке… Тест судя по рисунку практически такой-же… остановил.
12:55 Решил проверить закрытие встречным позиций при PointsMTP =-0.1 и к-т 30… — не прокатывает… вообще не закрывает сделки … Ставлю 0,1 и 30…
Нужно проверить еще одну мысль: ставить стопы на стоповые ордера по -10-20 п. … — пока отложил…
И еще одну: при нехватке маржи нужно убивать самый большой лось по размеру лотов (а не по деньгам…)
13:49 В функции CloseByAccountFreeMargin() сделал закрытие самого крупного лося в ЛОТАХ
Причем закрываться будет первый ордер из списка, если размер лотов одинаковый, т.е. по идее самый старый ордер…14:33 Баланс вырос гораздо больше при тестировании… Остановил тест… 10000 сделок 0,2-0,3 лотовых должны отбить депозит на 200-250% по идее… Хотя из 10000 много мелких … скорее всего будет меньший результат… Посмотрю, что наторгует советник на демке за эту неделю. Параметры по ней поставил аналогичные тесту.

2017.05.15 09:50:01.429                                                2017.04.25
20:46:52  Forex Setka Trader ABB 1_30 USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; PointsMTP=0.1*20(8:00-22:00); MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%
K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; iStopOrders=1/MaxSO=10/Step=5/KoefLot=2.0/Activate=25;
iLimitOrders=1/MaxLO=10/Step=5/KoefLot=2.0/Activate=3

 

2017.05.15 12:21:34.130                                                2017.04.28
12:56:22  Forex Setka Trader ABB 1_30 USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; PointsMTP=0.1*20(8:00-22:00); MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%
K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; iStopOrders=1/MaxSO=5/Step=20/KoefLot=2.0/Activate=27;
iLimitOrders=1/MaxLO=10/Step=10/KoefLot=2.0/Activate=4

2017.05.15 15:03:08.229                                                2017.04.28
15:48:16  Forex Setka Trader ABB 1_30 USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; PointsMTP=0.1*30(8:00-22:00); MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%
K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; iStopOrders=1/MaxSO=10/Step=20/KoefLot=2.0/Activate=15;
iLimitOrders=1/MaxLO=10/Step=10/KoefLot=2.0/Activate=5

15:06 Теперь запустил тест с 01.05, с ратио=0, стоп ордера 10 с 20 лотовой перегрузки через 20 п.
Без ратио с шагом 0.1 п сделок гораздо больше…
15:39 Тест продолжается… Ордера что-то крупные… 7 лотов в БАЙ, 15 лотов в СЕЛ самые большие сделки… 67 лотов в БАЙ, 70 в СЕЛ … Похоже локи сработали… Хотя 5500 сделок 0,2 лотовых по идее должны отбить депозит за сутки…
Все-таки ратио нужно включать хотя бы минимальное 0,005

15:43 Теперь тест по луни с 01.05 …
16:10 Пока нормально идет… >4000 сделок наработал… Дальше – тренд вверх 2 мая… Проверка в деле советника…
А на демке 2360739 советник начал работать с повышенным MTP 30 п. – в 16:00 по ВВО – и как раз во время – франк начал летать… Но сделки мелкие зависают … Закрыл встречные ордера скриптом … Поставил все-таки к-т 10, чтобы сделки закрывались > 1 п. …
16:28 На тестировании сработал лок в БАЙ 35 лотовый… на 90% просадке … 17 эквити 238 баланс… хотя маржи показывает 63% … странно как то …. И лосей не закрывает в тестере по марже …
Выдает 131 134 ошибки …131 Неправильный объем… 134 Недостаточно денег для совершения операции
Но все-таки каким-то образом залокировался… Вот бы так в реале – 35 лотовая сделка – неплохой рибейт принесла бы… Почти 8000 сделок – вполне должны отбить депозит…

Теперь тест по луни с 03.05 – после тренда, но к-т увеличения поставлю поменьше: 10 …
17:11 Глядя на торговлю на демке по франку – на резком движении начали работать тралы. Так вот, трал должен определяться по минимально допустимому значению – и  убрать ненужные параметры…
18:16 Провозился почти час с тралами… в итоге вернул пока переменные, но сделал присвоение
   TrailStop = MarketInfo(Symbol(), MODE_STOPLEVEL);  // Величина трала в пунктах = минимально допустимой

2017.05.15 16:31:37.462                                                2017.05.02
18:29:53  Forex Setka Trader ABB 1_30 USDCAD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; PointsMTP=0.1*30(8:00-22:00); MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%
K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; iStopOrders=1/MaxSO=10/Step=20/KoefLot=2.0/Activate=20;
iLimitOrders=1/MaxLO=10/Step=10/KoefLot=2.0/Activate=5


2017.05.15 18:11:51.054                                                2017.05.04
20:46:05  Forex Setka Trader ABB 1_30 USDCAD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; PointsMTP=0.1*10(8:00-22:00); MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%
K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; iStopOrders=1/MaxSO=10/Step=20/KoefLot=2.0/Activate=20;
iLimitOrders=1/MaxLO=10/Step=10/KoefLot=2.0/Activate=5

19:02 Решил протестировать по AUDCAD с 01.05 … на тренде … остановил тест – похож на USDCAD…
Кстати – деньги на карту капнули 1440 руб. = 25$ от БигАзарта – можно играть там …
19:55 Положил и проиграл 7$ … На сегодня хватит – возможно завтра повезет …
По франку пошел тренд вниз – поставил 20 лотовое превышение для стоповых ордеров … домой ехать надо …
22:03 Дома. На демке франк перешел во флэт, 59 эквити, 119 баланс. На 865 сделок отбито 15% от депозита.
Почему-то СС сработали по 2 шт. на одних уровнях… такого не должно быть
22:36 Давит франк вниз, 36$ эквити остается… опять сработали СС по 2 на каждом уровне … Нужно чтобы этого не было… Закрыл несколько сработавших СС руками в плюс, т.к. советник не успевает закрывать встречными — рабочий лот маленький, а сработавшие СС в несколько раз больше

Торговый дневник 14.05.2017 (воскресенье) FST 1.30 Окончательно отлажена. Сделано повышение PointMTP по часам торговли

06:32 Встал пораньше и решил отладить версию FST 1.30 (аж ночью снились BS SS BL SL…)
10:59 Вроде отладил работу лимитных и стоповых ордеров в FST 1.30. В тестере работает без ошибок, при перегрузе позиций в какую-либо сторону, отложенники в противоположную сторону удаляются и начинают работать отложенники в сторону превышения. Они двигаются за ценой вроде нормально. В итоге во флэте нарастает количество открытых позиций в обе стороны, если перегруз для активации маленький (тестирую с 2 лотовым перегрузом для срабатывания обеих типов ордеров…)

2017.05.14 11:13:01.427                                                2017.04.24
00:00:00  Forex Setka Trader ABB 1_30
USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.01; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%;
MaxStopOrders=8/Step=3/KoefLot=2.0/Activate=2;
MaxLimitOrders=8/Step=3/KoefLot=2.0/Activate=2


2017.05.1411:48:16.990                                                2017.04.24
00:00:00  Forex Setka Trader ABB 1_30
USDCHF.m,M1:  | MM=1 Risk=2/50%; Orders=200; PointsMTP=1; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%; MaxStopOrders=8/Step=3/KoefLot=2.0/Activate=1;
MaxLimitOrders=8/Step=3/KoefLot=2.0/Activate=1

12:31 Теперь тестирую с PointsMTP=5 MLF L=1.01 S=1.01; Step L=0.5 S=0.5 – не очень хорошо прошел тест…
14:57 Решил протестировать работу только лимитниками с PointsMTP=3
Во флэте эквити практически стоит на месте, зато на откате от максимума – немного вырастает за счет того, что нет зависших БС… Вообще-то стоповые ордера нужно использовать только на тренде,а во флэте они зависают и не дают поднять эквити при возвращении цены в диапазон. Как бы еще научиться определять начало тренда…

2017.05.14 15:35:07.009                                                2017.04.24
00:00:00  Forex Setka Trader ABB 1_30
USDCHF.m,M1:  | MM=1 Risk=3/50%;
Orders=200; PointsMTP=3; MLF L=1 S=1; Step L=0.5 S=0.5; TP=0; SL=0; Ratio=0.01; TS=1 OneTrade=1 OnlyLock=0 5/4;
Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%;
MaxStopOrders=10/Step=5/KoefLot=2.0/Activate=12; MaxLimitOrders=10/Step=5/KoefLot=2.0/Activate=2
Убил счет ГЭП на открытии рынка в понедельник…

15:37 Решил уменьшить шаг до 0,1 и опять протестировать только с лимитниками. Точнее срабатывание стоповых ордеров поставил на 25 лотовую перегрузку, с PointsMTP=0.3
15. Добавил параметры и переменные:
   extern int     BeginHourMTP = 8;                  // Начальный час по времени сервера, когда советник использует повышенный PointsMTP
   extern int     EndHourMTP = 22;                    // Конечный час по  времени сервера, когда советник использует повышенный PointsMTP
   extern double  dKoefMTP = 10;                     // Коэффициент  увеличения PointsMTP после истечения EndWorkHour
   int WorkHour = 0; //TimeHour(TimeCurrent()); //2017 05 14
   double  dPointsMTP = PointsMTP; //2017 05 14
16. В функцию initVariables() добавил:   WorkHour = TimeHour(TimeCurrent());
   if (( WorkHour >= BeginHourMTP ) && ( WorkHour <= EndHourMTP ))      dPointsMTP = PointsMTP * dKoefMTP;
   else       dPointsMTP = PointsMTP;
17. Выделил индикацию повышенного MTP
19:08 Тестирую по франку — начало 10.05.
В принципе правильно, чтобы для стоповых ордеров перегруз позиций для срабатывания был повышенным, а для лимитников – пониженным. Перегруз 25 лотовый на депозит 100 баксовый нормально выдерживает.
21:17 Тест до сих пор идет – советник не слил, а снизил баланс по марже и продолжает колбасить на 7 баксов эквити…Кстати, ограничение по макс. лоссу нужно отключать. Остановил тест…

2017.05.14 21:19:19.200                                                2017.05.12
10:16:40  Forex Setka Trader ABB 1_30
USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.3; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95%
DeltaLock=5%  K-t=1.00 SL=100/150; MaxLoss=0 MLbyT=15% MLbyTLock=15%;
iStopOrders=1/MaxSO=10/Step=3/KoefLot=2.0/Activate=25;
iLimitOrders=1/MaxLO=10/Step=3/KoefLot=2.0/Activate=5

21:20 Запустил тест по луни с 8.05 Нормально не прокатил…
По еврику с повышенным шагом погонял на 5 минутках по ценам открытия (сделок мало, но баланс задрался в 3 раза):

2017.05.14 23:06:00.614                                                2017.05.12
16:08:00  Forex Setka Trader ABB 1_30
EURUSD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=5; PointsMTP=5*3(9:00-21:00); MLF L=1 S=1; Step L=1
S=1; TP=0; SL=0; Ratio=0.1; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00 SL=100/150;
MaxLoss=0 MLbyT=15% MLbyTLock=15%;
iStopOrders=1/MaxSO=10/Step=5/KoefLot=2.0/Activate=10;
iLimitOrders=1/MaxLO=10/Step=5/KoefLot=2.0/Activate=3

Торговый дневник 13.05.2017 (суббота) Начало разработки FST 1.30 – работа лимитными и стоповыми ордерами

07:10 С утра исправил ошибку – деление на 0, которая выскочила вчера в тестере по еврику, и решил протестировать FST
1.29 на демке по
USDCAD
07:17 Наблюдаю за тестом, вижу что на тренде постоянно висит большой перегруз позиций в другую сторону и до стопаута показывает маленькое количество пунктов 12-20 и постоянно счет висит на грани… В связи с этим возникла мысль: Можно попробовать увеличивать размер рабочего лота сетки в несколько раз при наличии большого перегруза позиций (например при перегрузе 20 лотов – рабочий лот увеличивается в 10 раз – значения подобрать
по результатам тестирования), пока перегруз не станет приемлемым.
И еще: советник не должен двигать стоповые ордера дальше от цены при движении в их сторону. А то сейчас это происходит постоянно. Значит нужно фиксировать ближайшее значение уровня цены стоп ордера, и если цена идет в его сторону – не сдвигать БС ордера выше (СС ордера соответственно ниже).
08:32 В функцию ModifyPendingOrders() добавил условие открытия стоп ордеров:
   if ( dMaxPrice_sellStop < GetOpenPrice(OP_BUYSTOP, iLevelBuyStop) ) // 2017 05 13
if ( dMinPrice_buyStop > GetOpenPrice(OP_BUYSTOP, iLevelBuyStop) ) // 2017 05 13
Исправил в функции CheckStopOrders() Ask на Bid и наоборот – перестали выдаваться ошибки модификации ордеров
   if ( NormalizeDouble(dMinPrice_buyStop,Digits) >  NormalizeDouble(Ask + dStopLevel + PointsMoveStopOrders * Point * iMulpiply5Digits,Digits)  )
if ( NormalizeDouble(dMaxPrice_sellStop,Digits)  < NormalizeDouble(Bid — dStopLevel — PointsMoveStopOrders * Point*iMulpiply5Digits,Digits)  )

Ask – цена продажи (работает для BUY ордеров)
Bid – цена покупки (работает для SELL ордеров)
09:45 Тестировал по USDCAD – ничего хорошего тесты не показали…Теперь запустил тест по франку  с PointsMTP=5… без закрытия лосей по превышению…
11:30 Тестирование до сих пор идет по удаленке на ПК на работе… 21000 баланс 3575 эквити, просадка 82% — но торгует советник! Правда на флэте… В связи с этим еще одна мысль: На флэте советник должен подтягивать эквити к балансу, чтобы был запас прочности на трендах… В свое время при ручной торговле я так и старался сделать…

2017.05.13 13:43:01.882                                                2017.05.05
12:50:11  Forex Setka Trader ABB 1_29 USDCHF.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=5; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00 SL=100/150;
MaxLoss=0 MLbyT=15% MLbyTLock=15%; MaxStopOrders=10/Step=5/KoefLot=3.0/Activate=5

11:32 Решил проверить еще одну идею: Нужно чтобы помимо стоповых ордеров при перегрузе позиций
начинали работать и лимитники
… Попробую сделать в новой версии FST 1.30
11:38 Начинаю делать версию FST 1.30 – работа лимитными и стоповыми ордерами 12:07 Мысль возникла глядя на тестирование: Размер превышения лотов для начала работы отложенников должен зависеть от размера эквити: т.е. если эквити маленькое, то и перегруз для срабатывания отложенников должен быть меньше. А то сейчас смотрю на тестирование: эквити остается 6 баксов, а перегруз из настроек так и остался 5 лотов – а это МК неибежный… Хотя советник продолжает торговать в тестере и на 6 баксов эквити при балансе 68$… Позакрывал лишних лосей по марже и дальше колбасит…
16:13 Решил закинуть 7 баксов на БигАзарт – поиграть в рулетку – в итоге наиграл до 28$ — написал запрос на вывод 25$ — жду когда придут…

Торговый дневник 12.05.2017 (пятница) Начал разработку FST 1.29

08:02 На демке 2357823 остается эквити 9017 баланс 18041, просадка 49.8% Тестирование по двум парам прошло успешно, основные функции советника работают правильно.Но торговать нужно по одной валюте на каждом счете (если есть ограничение 200 ордеров…)
08:04 FST 1.28 в основном  отлажена, поэтому сегодня буду делать версию новую  FST 1.29, в которой реализую ограничение количества БС/СС, и чтобы их размер соответствовал перегрузу позиций в противоположную сторону.
08:09 Почему-то Хром на работе не показывает последние записи в дневнике – до сих пор показывает за 5 мая последнюю запись… Решил обновить браузер… почистил куки за неделю – все равно не показывает последние записи на главной странице…
08:42 Начал разработку FST 1.29. Для начала нужно упростить код:
Нужно сделать функцию расчета позиций, чтобы они хранились в глобальных переменных – а то в каждой функции дублируется код расчета… может побыстрее будет работать…
09:29 Вынес в отдельную функцию void fCalcCurrentPositions() расчет открытых позиций, вынес в глобальные все переменные для этой функции, Убрал из функций лишний код, связанный с расчетом позиций.
Тестирую по AUDCAD с PointsMTP=1 – вроде правильно работает и немного быстрее тестится…
Правда при модификации БС/СС в тестере постоянно выдается 1 и 130 ошибки… код смотрел – вроде не должно быть такого…
09:52 Поставил на демке версию FST 1.29, ратио=0 по обеим парам – буду тестить и дорабатывать.
10:13 Кстати можно попробовать закрывать по 148 ошибке не самый большой лось, а самый маленький – проверю в тестере…
10:29. Сделал расчет минимальных лосей в функции fCalcCurrentPositions()
Функцию CloseMaxLoss() переименовал в CloseMinLoss(), в которой при 148 ошибке убиваются самые МАЛЕНЬКИЕ лоси. Проверил – работает! Теперь тестирую по AUDCAD с PointsMTP=0.1, шаг 0.1 и Ratio=0
12:02 Тест продолжается – советник торгует, уже >12000 сделок наработал, правда лоты меткие становятся… Гробит мелких лосей по 148 ошибке… Но факт то, что вроде бы стабильнее стал работать. Остановил тест…

 

 

12:11 Потестирую по франку с 8 мая – когда был тренд… но с шагом стоп ордеров 2… Котировки не закачиваются до 9 мая… поэтому тест с 9.05… Т.к. байстопов мало из-за ограничения 200, советник начал гробить больших лосей по марже… и мелких так же гробит по 148 ошибке…

 

 

Нужно сделать, чтобы размер стоп ордеров определятся исходя из наличия свободных позиций до 200 и перегруза в лотах в другую сторону…
12:32 Решил прекратить тестирование по двум парам, т.к. нет смысла – слишком много сделок необходимо для двух пар. Убиваю все сделки по франку и оставляю на тестировании только AUDCAD
Баланс остался 12094, эквити 8206, просадка 32% — вполне себе нормальная стартовая позиция…
12:41 Решил завести новую демку 2360399 на депозит 12500$ и на ней уже отрабатывать по AUDCAD
Запустил на ней FST 1.29 по AUDCAD c 0.1 шагом и PointsMTP, и 2 п. шаг по стоповым ордерам.
12:55 Пришло письмо от FxCash: Предлагается бонус 50$ от брокера https://trader.fortfs.com/ru/registration
Решил зарегистрироваться… Пишет, что email уже зарегистрирован – запросил смену пароля – сменил, но в кабинет войти не могу… Пишет: Для получения доступа к кабинету FortFS, пожалуйста, обратитесь в службу поддержки
Пока отложил это… Есть открытый счет 869756 у них (письмо пришло) … не помню когда открывал…
13:26 На новой демке уже 48 позиций в БАЙ, причем открываются на одном уровне некоторые опять… Попробую поставить слиппаж 0 … вроде получше стали открываться сделки… Поставил в советнике Slippage=0
16.20 В функции CheckStopOrders() добавил расчет размера стоп ордеров в зависимости от количества свободных позиций
   int iMaxStopOrders = AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) — iCountWorkingOrdersAll — 2 ; // пока 2
   if ( iMaxStopOrders > MaxStopOrders ) iMaxStopOrders = MaxStopOrders;
   if ( iMaxStopOrders < 0 ) iMaxStopOrders = 0;
dLotStopOrders = NormalizeDouble(dblAbsSum_lot / iMaxStopOrders,2);
   if ( dLotStopOrders < dblMinLot ) dLotStopOrders = dblMinLot;
   if ( dblSum_lot > 0 )  // Лотов в БАЙ БОЛЬШЕ чем в СЕЛ
      dLotStopOrdersShort = dLotStopOrders;
   if ( dblSum_lot < 0 )  // Лотов в БАЙ БОЛЬШЕ чем в СЕЛ
dLotStopOrdersLong = dLotStopOrders;
12. Исправил индикацию количества и размера отложенников слева внизу

Теперь тестирую по еврику… В тестере выдалась ошибка – деление на 0 … Нужно найти причину …
Но до этого по еврику >11000 сделок наторговалось…
2017.05.12
17:37:04.041                               2017.05.03
12:23:28  Forex Setka Trader ABB 1_29
EURUSD.m,M1: zero divide in ‘Forex Setka Trader ABB 1_29.mq4’ (4024,53)

 

16:35 Решил закинуть с карты СБ Кредит 600 руб. – 10.19$ на PokerStars и попытать счастья в рулетку…
Наиграл до 63$ — хотел вывести, но это можно только через 48 часов после депозита… … придется дальше играть
Осталось 7.06$ в итоге на старсах … пока отложил…

21:24 Дома продолжил на первой демке 2357823 тестирование FST 1.29 по двум парам AUDCAD и USDCHF
21:26 Сыграл в рулетку – поднял остаток 7.06$ до 21.36$ — пока отложил.
Так и надо играть – выиграл немного и отложил…
21:35 Запустил тестирование по франку FST 1.29… Остановил…
23:19 Обе демки слились… Получили стопауты… И остаток на старсах проиграл в рулетку…
Зато хорошо пообщались с дочей и внучей.

Торговый дневник 11.05.2017 (четверг) Продолжаю разработку FST 1.28 и тестирование на демке по двум парам AUDCAD и USDCHF

07:49 На демке 2357823 осталось эквити 41190, баланс 111517, просадка 64%, советник отбил рибейтами почти 27%. Ему нужно продержаться еще хотя бы 2 дня без слива, чтобы почти отбить депозит. Было 1063 результативных сделки. Франк еще немного флэтообразно вырос на 40-50 п. Много байстопов сработало на одинаковых уровнях – нужно править, чтобы этого не было.
07:55 Продолжаю доработку FST 1.28
1. Исправил индикацию Ратио до 3 знаков:   txtRatio = «Mult.Ratio:    » + DoubleToStr(Grid_Ratio, 3);
Решил поставить ратио 0.005 на демке 2357823, чтобы изменение шага было поменьше. При ратио=0.01 сейчас шаг 0,5 п. в БАЙ при 41 позиции и 0.73 в СЕЛ при 64 позициях. При ратио 0.005 шаг стал 0.30/0.42 п.
08:46 Мысли о доработках FST 1.28, которые нужно реализовать:

  1. Нужно сделать чтобы MLF менялся в зависимости от размера перегруза позиций. При перегрузе в СЕЛ MLF в БАЙ должен быть БОЛЬШЕ чем MLF в СЕЛ и наоборот
  2. Размер лота для стоповых ордеров должен определяться в зависимости от размера рабочего лота: например > в 1,5-2 раза (нужен параметр – к-т размера лота для стоп ордеров)

3.   Шаг для стоп ордеров должен меняться в зависимости от размера перегруза позиций – чем перегруз больше, тем шаг меньше и наоборот (можно попробовать использовать текущий шаг сетки в ту или иную сторону с учетом Ratio)

4.   При открытии и модификации отложенников должно проверяться наличие ордера по той цене, на
которую меняется или открывается новый ордер
(чтобы не было несколько БС/СС на одном уровне)

09:44 Посмотрел валюту AUDCAD – средний спред 2.89 – неплохой, и ходит вроде неплохо… Можно потестировать советника по этой паре… Закрыл пару сделок на демке для закачки в стейт… А по audchf средний спред 5.01 – еще больше. И ходит вроде неплохо – но тренды развивает…
10:01 Решил потестить по AUDCAD – постоянно выдается 130 ошибка модификации ордеров – неправильные стопы. Нужно автоматически  менять параметр трала и стопа, чтобы они превышали минимально допустимое значение для каждой пары.
10:31 4. Упростил функцию fWorkLotByRisk( )
      dblWorkLot = MathCeil(  dblAssetToTransaction * dblRiskByTransaction / 10000 * dblAccountLeverage ) * dblMinLot;
5. Исправил в функции CheckStopOrders() вместо использования параметра PointsMoveStopOrders переменную dStopLevel
   if ( dMinPrice_buyStop  > NormalizeDouble(Bid + dStopLevel,Digits)  )
   if ( dMaxPrice_sellStop  <  NormalizeDouble(Ask — dStopLevel,Digits)  )
6. Убрал параметр    //extern int     PointsMoveStopOrders = 7;        // Количество пунктов от цены для активации модицикации отложенных стоповых ордеров
7. Добавил параметр    extern double  dKoefLotStopOrders= 2;           // Коэффициент увеличения лота отложенных ордеров по сравлению с рабочим лотом
Риск теперь вроде считается правильно. Нужно проверить на разных счетах и плечах…
10:45 Неплохо тесто прошел по AUDCAD за 2 дня: 5700 сделок.

11:06 Увидел что советник начал работать на демке по AUDCAD лотом 0.4 проверяем работу по двум парам.
Лишние отложенники удаляются. Но при модификации постоянно выскакивает 4051 ошибка
4051 Недопустимое значение параметра функции
11:30 Неправильно двигает СС – постоянно отодвигает от цены по AUDCAD… — такого не должно быть и 148 ошибку выдает при попытке открытия новых СС (200 ордеров превышение)
13:11 Отлаживаю удаление отложенников при 148 ошибке – не хочет удалять лишние отложенники… хоть убейся…
Нашел ошибку – исправил…
13:43 Добился – вроде правильно удаляет байстопы при перегрузе в БАЙ. Но при перегрузе в СЕЛ и отсутствии байстопов
наверное не нужно удалять отложенники, а лучше убивать лишние лоси в БАЙ…
13:49 Закомментил удаление отложенников в сторону перегруза позиций при 148 ошибке – теперь должны закрываться лишние лоси…
14:09 Нашел причину, почему не удалялись лишние лоси – т.к. в работе 2 пары, расчет открытых позиций должен производиться по всем парам. Добавил функцию CountWorkingOrdersAll()
И условие закрытия лишних лосей:   if ( iCountWorkingOrdersAll >= iACCOUNT_LIMIT_ORDERS )
14:18 Решил закинуть остаток 18 WMZ на PokerStars и попробовать сыграть в рулетку еще раз …
15:24 Поднял в рулетку до 62$ — но не остановился… слил до 20, решил сыграть Спин-Го по 10$ (можно выиграть
миллион…)  Выпало
D6 – 2 пары, против двух тузов – на ривер выпал третий туз… Проиграл опять в рулетку… осталось 0.07$ на старсах …
15:54 Тест до сих пор идет по AUDCAD лотом по риску 3% — добрался до 8000 сделок со снижением лотов.

15:55 Решил прогнать тест фиксированным лотом 0,3 на депозит 12500$ для локов 0.6 лот, шаг 3 п.
Прошел хуже – начал сливать после 6000 сделок… Вывод: Лучше торговать все-таки по риску в сделке, а не фиксированным лотом. Хотя не факт…

2017.05.11 16:44:24.109                                                2017.04.25
06:56:08  Forex Setka Trader ABB 1_28
AUDCAD.m,M1:  |MM=0 MinLot=0.3; Orders=200; PointsMTP=0.1; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5% K-t=1.00 SL=100/150; MaxLoss=1 MLbyT=15% MLbyTLock=15%;MaxStopOrders=10/Step=3/Lot=0.6/Activate=8


16:51 Добавил переменные
   double dLotStopOrdersLong = dLotStopOrders; // Размер лота отложенных ордеров в БАЙ
   double dLotStopOrdersShort = dLotStopOrders; // Размер лота отложенных ордеров в СЕЛ
12. Сделал расчет лота для стоп ордеров в зависимости от рабочего лота:
   dLotStopOrdersLong = dblNextLotLong * dKoefLotStopOrders;
   dLotStopOrdersShort = dblNextLotShort * dKoefLotStopOrders;
16:55 Закрыл ВСЕ сделки по обеим парам на демке 2357823, и запустил советника с риском 3% по USDCHF и AUDCAD
Рабочие лоты 1,22-1.15, шаг стоповых 0.5 п., срабатывание на 20 лотах перегруза (тоже нужно сделать, чтобы менялся параметр…). Проверю работу по двум парам…
17:24 Решил протестировать по франку в тестере с рисками 3%
При перегрузе в БАЙ советник не закрывает БС, а закрывает лишние лоси… Но т.к. рабочий лот постоянно снижается, то кол-во БС растет – до 50 доходило… Все-таки размер лота БС нужно определять исходя из перегруза позиций, и их количество не должно быть большим (10-15 шт. максимум…)
Остановил тест…

17:58 Наблюдаю за торговлей на демке – опять остается много мелких сделок. Возможно из нужно убивать сразу, чтобы не оставались висеть. Можно задать минимальный лот 0.1 например, и если размер позиции < минимально допустимого из настроек – то убивать сразу мелких лосиков… Или сделать так, чтобы сделки
были кратные
0.1 лоту.

19:28 Решил потестировать по AUDCAD с PointsMTP=2 – идет получше… Баланс растет гораздо быстрее… Дома нужно потестить с еще большим значением PointsMTP=5-7 …

20:48 Дома. Запустил тестирование по AUDCAD c PointsMTP=3. Посмотрел по удаленке – на работе тест до сих пор идет…

06:01 На демке остается эквити 10140$, баланс 18793$, просадка 45%. Причина = 2 валюты и ограничение 200 открытых ордеров, из-за которого советнику приходилось гробить лишние позиции. Самое главное: алгоритм удаления лишних отложенников при перегрузе работает. Нюанс, который нужно сделать: Советник должен убивать  сначала и отложенники против перегруза, чтобы из оставалось не более 10 (из настроек), а только потом гробить лосей. Ну и размер БС/СС должен определяться исходя из размера перегруза позиций, разделенного на количество свободных позиций (или MaxStopOrders) 

06:05 Тестирование по сих пор шло всю ночь… очень медленно работает тестер по тикам дома… Советник при PointsMTP=3 начал  сливать после ~5200 сделок, когда начали работать локи, и добрался почти до 8500 сделок… При PointsMTP=2 советник продержался гораздо дольше, разгружать счет начал после ~6000 сделок, до доторговал до нуля с ~17000 сделок. Максимальный баланс был практически одинаковым. Т.е. лучше все-таки PointsMTP использовать небольшой

2017.05.11 15:54:16.156                                                2017.04.25
18:13:03  Forex Setka Trader ABB 1_28 AUDCAD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=0.1; MLF L=1 S=1; Step L=0.1 S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0
5/4; Lock=1 DD=90/95% DeltaLock=5% K-t=1.00 SL=100/150; MaxLoss=1 MLbyT=15% MLbyTLock=15%;
MaxStopOrders=10/Step=5/Lot=0.4/Activate=8

2017.05.12 05:48:33.434                                                2017.05.10
21:50:25  Forex Setka Trader ABB 1_28 AUDCAD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=3; MLF L=1 S=1; Step L=0.1
S=0.1; TP=0; SL=0; Ratio=0.01; TS=1 OneTrade=1 OnlyLock=0 10/8; Lock=1 DD=90/92% DeltaLock=5%  K-t=1.00 SL=0/0; MaxLoss=0 MLbyT=15% MLbyTLock=10%;
MaxStopOrders=10/Step=3/Lot=0.0/Activate=8

2017.05.12 03:39:07.802                                                2017.05.11
12:26:02  Forex Setka Trader ABB 1_28 AUDCAD.m,M1:  | MM=1 Risk=3/50%; Orders=200; PointsMTP=2; MLF L=1 S=1; Step L=0.1
S=0.1; TP=0; SL=0; Ratio=0.005; TS=1 OneTrade=1 OnlyLock=0 5/4; Lock=1 DD=90/95% DeltaLock=5%  K-t=1.00
SL=100/150; MaxLoss=1 MLbyT=15% MLbyTLock=15%;
MaxStopOrders=10/Step=3/Lot=0.0/Activate=8