0
Готов быть поручителем.
*hi* 
avatar

ssg

  • 29 мая 2023, 01:39
0

   Comment("\n Prosadka: ",NormalizeDouble(Pro(),2)," %");
avatar

ssg

  • 10 мая 2023, 19:59
0
<code>
input string   Symb1     = "EURUSD";  // 1-й символ
input string   Symb2     = "GBPUSD";  // 2-й символ
input string   Symb3     = "EURGBP";  // 3-й символ

input double   Delta     = 50;        // дельта
</code>


<code>
void OnTick()
  {
   double Ask1=SymbolInfoDouble(Symb1,SYMBOL_ASK);
   double Ask2=SymbolInfoDouble(Symb2,SYMBOL_ASK);
   double Ask3=SymbolInfoDouble(Symb3,SYMBOL_ASK);

   double Bid1=SymbolInfoDouble(Symb1,SYMBOL_BID);
   double Bid2=SymbolInfoDouble(Symb2,SYMBOL_BID);
   double Bid3=SymbolInfoDouble(Symb3,SYMBOL_BID);

   double Synt=((Ask1/Bid2)-Ask3)/_Point;

   double Spread1=Ask1-Bid1*_Point;
   double Spread2=Ask2-Bid2*_Point;
   double Spread3=Ask3-Bid3*_Point;

   if(AllProfit()>Profit || AllProfit()<-Loss)
      CloseAll();
    
   if(PositionsTotal()<1)
     {
      if((Synt)<-Delta)
        {
         trade.PositionOpen(Symb1,1,Lot,Bid1,0,0);
         trade.PositionOpen(Symb2,1,Lot,Bid2,0,0);
         trade.PositionOpen(Symb3,0,Lot,Ask3,0,0);
        }

      if((Synt)>Delta)
        {
         trade.PositionOpen(Symb1,0,Lot,Ask1,0,0);
         trade.PositionOpen(Symb2,0,Lot,Ask2,0,0);
         trade.PositionOpen(Symb3,1,Lot,Bid3,0,0);
        }
     }

   Comment("\n Прибыль : ",AllProfit(),
           "\n Синтетик : ",(Synt));
  }
</code>


Вычисляется искуственный Аск двух пар = (Ask1/Bid2);
Затем находится разность искуственного Аск и реального Аск третьей пары .
<code>double Synt=((Ask1/Bid2)-Ask3)/_Point;</code>

Это значение и сравнивается с контрольным Delta.
В зависимости от ситуации и принимается решение.
<code>
 if(PositionsTotal()<1)
     {
      if((Synt)<-Delta)
        {
         trade.PositionOpen(Symb1,1,Lot,Bid1,0,0);
         trade.PositionOpen(Symb2,1,Lot,Bid2,0,0);
         trade.PositionOpen(Symb3,0,Lot,Ask3,0,0);
        }

      if((Synt)>Delta)
        {
         trade.PositionOpen(Symb1,0,Lot,Ask1,0,0);
         trade.PositionOpen(Symb2,0,Lot,Ask2,0,0);
         trade.PositionOpen(Symb3,1,Lot,Bid3,0,0);
        }
     }

</code>

avatar

ssg

  • 9 мая 2023, 10:31
0
Посмотрите предыдущий топик
информационный индикатор

Андрей как раз и сделал подобное. Переделайте под себя. Замените условие и текст сообщения.
Всех поздравляю с Днем Великой Победы!
avatar

ssg

  • 9 мая 2023, 00:20
0
А во теперь это скопируйте в Метаэдитер и скомпилируйте. Как не понимаете, что синтаксис Метаэдитера и сообщения разные. Прикрепляйте через code
<code>


<code>//+------------------------------------------------------------------+
//|                                  TriangularMA centered bands.mq4 |
//|                                                           mladen |
//| forex-tsd elite section only                                     |
//+------------------------------------------------------------------+
#property copyright "mladen"
#property link      "mladenfx@gmail.com"
</code>


А так как выложил alex30774 при копировании и компеляции ошибок не будет! Вы хоть проверяйте что другим предлагаете. Или это преднамеренно делаете?
avatar

ssg

  • 23 апреля 2023, 22:40
0
Поторопился похвалить. Используйте функцию

code

Сейчас если то что выложено скопировать в метаэдитер в таком виде будет куча ошибок при компиляции. Сами попробуйте. Вы почему так небрежно относитесь к участникам сайта. Что то выложили примитивным образом. При таком отношении к людям ждите соответствующего отношения.
avatar

ssg

  • 21 апреля 2023, 17:56
0
Вот видите как всё просто оказалось. Было бы желание.*hi* 
avatar

ssg

  • 21 апреля 2023, 15:57
0
Попробуйте сюда. Открытым кодом. Использую функцию:
<code>
code
</code>
avatar

ssg

  • 21 апреля 2023, 15:50
0
Так и думал. Техническая ошибка.
*hi* 
avatar

ssg

  • 19 апреля 2023, 19:02
0
Андрей, не понял этот кусок кода в главной функции:
if(last-Bid>Step*_Point && Side==0)
     {
      PutOrder(4,Bid+Step*_Point);
      last=Bid;
     }

   if(Bid-last>Step*_Point && Side==1)
     {
      PutOrder(1,Bid);
      last=Bid;
     }

почему для покупок стоповый ордер, а для продажи открывается позиция?
avatar

ssg

  • 19 апреля 2023, 17:38
0
Смутила фраза:
Цикл завершается после того, как закроется самый ранний стоповый ордер

Значит не правильно понял.
avatar

ssg

  • 17 апреля 2023, 13:48
0
У Андрея куча уже готовых советников-полуавтоматов с кнопками. Просто в один он наверняка может прописать функцию выставления очередного стопордера. Как я понял у Вас что-то вроде обратного пирамидинга. Цена будет активизировать ордера при обратном движении.
avatar

ssg

  • 17 апреля 2023, 09:03
0
Так в полуавтомате так и есть и даже больше.
Нажал кнопку бай (селл) советник начал исполнять программу. При желании пользователь сам может дополнительно открывать позиции с экрана кнопками.
Цикл закончился- пока не нажмёшь кнопку бай (селл) торговля не начнётся. В вашем варианте вместо этого надо набрасывать советник на график. А для этого надо еще найти советник в базе советников у себя. Потом прописать ещё и настройки, а я полагаю шаг стопордеров для разных пар должен быть разный.
Но конечно в данном случае «хозяин-марин».
avatar

ssg

  • 17 апреля 2023, 08:34
0
А что мешает поменять магик и поставить на другую пару со своими настройками.
прописать в блоке открытие проверку
<code>if(OrderSymbol()==Symbol_ && OrderMagicNumber()==Magic)</code>

и советник будет работать только с этой парой и этим магиком.
avatar

ssg

  • 17 апреля 2023, 08:05
0
Я же указал в тз, что после завершения цикла, советник убирается с графика. Знакомые прогеры говорят, что это сделать просто.

Это можно прописать функцией, но и это не совсем уж просто.
Т.е. потом опять нужно будет накидывать советник на график.
Не проще и удобнее использовать именно полуавтомат, в его истинном значении, с кнопками «Купить — Продать».
И ещё вопрос: не рассматривалось ли возможность открытия сразу встречной позиции? Одна позиция набирает прибыль, частично компенсируя убыток, пока к минусовой выставляются стоповыё ордера.
Причём прибыльную позицию можно закрывать частями или тралить её.
Таким образом можно будет частично компенсировать убыток той позиции, которая набирает минус.
avatar

ssg

  • 17 апреля 2023, 07:54
0
Советник будет работать в цикле. После закрытия позиции (позиций) он сразу выставит новый ордер. В противном случае необходимо будет прописывать какие
то ограничения.
Или советник должен будет активироваться только после нажатия соответствующей кнопки на экране.
Тогда можно будет вести торговлю в обе стороны одновременно.
*hi* 

avatar

ssg

  • 17 апреля 2023, 05:38
0
verta81, привет. Правильно, стой на своем. Как я.
Есть отчёт за месяц — есть советник!
У каждой бесплатной «хотелки» есть своя цена. Или красивая, новая идея, или отчёт заказчика работы руками.
Для себя не пробовал прогнать свой советник по тикам.
Ответ можно в «Приват».
avatar

ssg

  • 16 апреля 2023, 04:37
0
Привет, verta81.Это мультивалютная торговля. Закрытие по общей прибыли по счёту. Это видно по времени закрытия позиций. У группы позиций оно одинаковое.
Ты просто не обратил наверное внимание на кусок скрина сделок вверху.
При лотах 0.1, за 60 сделок получено 350 единиц прибыли. Значит общая прибыль по советнику, при которой закроются все позиции невелика. Как закрывается не видно. Стопов нет. Возможно по общему убытку, а может убытки просто пересиживаются.
avatar

ssg

  • 15 апреля 2023, 05:28
0
Кроме того научись читать и понимать текст.
Неверно! Цена это и есть индикатор 1 уровня! А остальные индикаторы это производные от цены.


Не дошло с первого раза прочитай еще раза три. Ну а если и потом не дошло, то тогда…
Вот в твоем сообщении ты пишешь
Индикатор это и есть цена

Из чего следует, что индикатор первичен.
avatar

ssg

  • 14 апреля 2023, 14:14