0
Мне количество ордеров не надо.
avatar

SENNSK

  • 9 мая 2020, 06:08
0
Спасибо! Всё как надо!
avatar

SENNSK

  • 18 апреля 2020, 12:21
0
Андрей, в базе www.opentraders.ru/downloads именование идёт по названиям топиков, я по имени файла это никогда не найду.
avatar

SENNSK

  • 30 января 2020, 07:09
0
Андрей, поискал, подобного не нашёл. Если не сложно, киньте ссылку?
avatar

SENNSK

  • 29 января 2020, 18:20
0
Спасибо.
avatar

SENNSK

  • 21 ноября 2019, 06:03
0
Спасибо. Буду ждать.
avatar

SENNSK

  • 20 ноября 2019, 05:44
0
Хорошо, только можно убрать все кнопки? Это лишнее.
avatar

SENNSK

  • 23 октября 2019, 09:35
0
Horizontal Line, т.е. по умолчанию, чтоб любая была и не надо было переименовывать.
Логика такова, что если пользователем открыт ордер на селл вручную, то при пересечении линии открывается тоже на селл.
Если был открыт на бай, то на бай.
Советник не имеет своего входа, только цепляется ко выставленным вручную.
И да, отставить повторное открытие на одной и той же линии.
«Понятно, что цена может пересечь одну и ту же линию неоднократно, всё равно при каждом пересечении должен открываться усредняющий ордер.» — вот это игнорировать в ТЗ, иначе сотню ордеров откроет за короткий промежуток времени, средств депозита не хватит.
Пусть при пересечении ценой линии ордер выставляется, а линия удаляется, так проще будет.
avatar

SENNSK

  • 22 октября 2019, 18:53
0
Не принципиально. В данном случае пусть будут равны 0. Внёс изменения в комментарий.
avatar

SENNSK

  • 10 июля 2019, 09:59
0
void FindLevels()
  {
  
   int Delta = 0;
   int DeltaLevel = 0;

   int total = ObjectsTotal() - 1;  
   string name = ""; 
   double high_price = 0, low_price = 0;

   for (int i = ObjectsTotal() - 1; i >= 0; i--) {
      name = ObjectName(i);
      if (StringFind(name, "high_") != -1) {
      
         high_price = ObjectGet(name, OBJPROP_PRICE1);
         high_price += Delta*Point;
         
         if((High[0] - DeltaLevel * Point)>high_price && Open[0]<high_price && Bid <= high_price) {
               PutOrder(1,Bid);

         }
      }
       if (StringFind(name, "low_") != -1) {
       
         low_price = ObjectGet(name, OBJPROP_PRICE1);
         low_price -= Delta*Point;
         
         if((Low[0] + DeltaLevel * Point)<low_price && Open[0]>low_price && Ask >= low_price) {
             PutOrder(0,Ask);

         }
      }
   }  
   
  }
avatar

SENNSK

  • 10 июля 2019, 07:49
0
Вот даже не знаю как сказать… Андрей, данный советник имеет весьма косвенное отношение к тому, что я просил, а я ведь просил лишь модифицировать уже имеющийся, и только в одном моменте, т.е. изменить принцип постороения уровней. Теперь с уровнями порядок, но от всего остального не осталось вообще ничего. Даже ATR нету, что было хорошим и важным фильтром. И работает теперь не на отбой, а на пробой (кстати, реверс был тоже хорошей идеей), вот скрин:

Можете всё же после отпуска сделать МОДИФИКАЦИЮ советника, упомянутого в техзадании? Потому что там весь функционал был именно как надо, ни больше, ни меньше, только уровни неверно строились. Здесь уровни прямо как надо, это классно, но со всем остальным просто полная фигня вышла.
avatar

SENNSK

  • 3 июня 2019, 08:43
0
Андрей благодарю все работает.
avatar

SENNSK

  • 11 марта 2019, 13:31
0
Андрей добрый день. Жду вашего решения по советнику, беретесь или нет.
avatar

SENNSK

  • 6 марта 2019, 07:35
0
Cоветник выставляет по фракталам buy stop и sell stop ордера.


В расчет берутся три свечи, и если средняя образует пик, то от верха тени выставляется байстоп ордер.
if(_buyStop && High[2]>=High[1] && High[2]>=High[3]) 
  {
    _price = NormalizeDouble(High[2] + StepForStop*Point, Digits);
    if(HavePendingOrder(OP_BUYSTOP)) 
   {
      if(OrderOpenPrice()>_price) _buyStop=DeletePendingPositions(OP_BUYSTOP);
      else _buyStop=false;
    }
    if(_buyStop) putOrderBuy_stepPoint(_price, Lot, StopLoss, TakeProfit, nameEA);
  }

Если же средняя образует впадину, то от низа тени выставляется селлстоп ордер.
if(_sellStop && Low[2]<=Low[1] && Low[2]<=Low[3])
  {
    _price = NormalizeDouble(Low[2] - StepForStop*Point, Digits);
    if(HavePendingOrder(OP_SELLSTOP)) 
   {
      if(OrderOpenPrice()<_price) _sellStop=DeletePendingPositions(OP_SELLSTOP);
      else _sellStop = false;
    }
    if(_sellStop) putOrderSell_stepPoint(_price, Lot, StopLoss, TakeProfit, nameEA);
  }

В настройках:
ТП, СЛ, Трал, БУ, Реверс, Деллордерз, Магик, Реквот.

Трал: длинна трала (если 0, то нет трала), когда включать трал (например после достижения 40 п прибыли), шаг трала.

Безубыток: перевод в безубыток при заданном количестве пунктов прибыли (если 0, то нет перевода в безубыток) и минимальная прибыль при переводе в безубыток.

Реверс сделок true/false (т.е. возможность выставления байлимит вместо селстоп и наоборот, селлимит вместо байстоп).

Деллордерз: возможность удаления отложенных ордеров через задаваемое в настройках количество прошедших свечей, т.е. со времени выставления отложенного ордера прошло N свечей и отложенный ордер удаляется, потому как по прошествии времени паттерн теряет актуальность.
avatar

SENNSK

  • 5 марта 2019, 08:53
0
Спасибо. Не вопрос. Буду ждать.
avatar

SENNSK

  • 28 февраля 2019, 06:25
0
Благодарю, но тогда не надо.(идея теряет смысл).
avatar

SENNSK

  • 22 января 2019, 07:55