Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 398

 
Снова копирую.

Необходимо написать часть кода торгового робота, что бы тот совершал сделку один раз при выполнении торговых условий.
Например:
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

Если условия меняются, т.е. Линия_2 выше Линии_1, то совершается сделка. Затем все повторяется.
1) Если Линия_2 выше Линии_1, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_2 выше Линии_1, то сделка не совершается до тех пор, пока условия не изменятся. .

Ну и...
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

т. д.
 
Link_x:
Снова копирую.

Необходимо написать часть кода торгового робота, что бы тот совершал сделку один раз при выполнении торговых условий.
Например:
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .
...

т. д.


3) пункт изложен непонятно. "...пока условия не изменятся" - о каких условиях идёт речь не сказано.

Вам нужно открывать только бай? Не ясно так же допустимо ли в рынке одновременное существование нескольких ордеров или только один ордер.

 
fozi:

Привет камрадики.

У кого можно торговать SP500 через МТ4-5 ??


mmcis имеет _SP500 мт4-демо

но там пишет чего-то Trade: No

может это на демо только, не знаю.

 
Link_x:
Снова копирую.

Необходимо написать часть кода торгового робота, что бы тот совершал сделку один раз при выполнении торговых условий.
Например:
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

Если условия меняются, т.е. Линия_2 выше Линии_1, то совершается сделка. Затем все повторяется.
1) Если Линия_2 выше Линии_1, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_2 выше Линии_1, то сделка не совершается до тех пор, пока условия не изменятся. .

Ну и...
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

т. д.


Поразмыслил и вроде понял, но всё-таки хочу получить подтверждение правильно ли понял.

Ордер в рынке всегда только один. Ордер открывается всегда при смене условия и всегда только на покупку.

 
khorosh:

3) пункт изложен непонятно. "...пока условия не изменятся" - о каких условиях идёт речь не сказано.

Вам нужно открывать только бай? Не ясно так же допустимо ли в рынке одновременное существование нескольких ордеров или только один ордер.

И Buy, и Sell.
Только один ордер.

....
 
Link_x:
И Buy, и Sell.
Только один ордер.

....
В вашем задании ни слова не сказано про селл, везде только покупка.
 
khorosh:
В вашем задании ни слова не сказано про селл, везде только покупка.


Накосячил. Сейчас исправлю. :)


1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

Если условия меняются, т.е. Линия_2 выше Линии_1, то совершается сделка. Затем все повторяется.
1) Если Линия_2 выше Линии_1, то совершается сделка на продажу.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_2 выше Линии_1, то сделка не совершается до тех пор, пока условия не изменятся. .

Ну и...
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .
 
Визуальное объяснение:
Файлы:
 
Link_x:

Накосячил. Сейчас исправлю. :)


1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

Если условия меняются, т.е. Линия_2 выше Линии_1, то совершается сделка. Затем все повторяется.
1) Если Линия_2 выше Линии_1, то совершается сделка на продажу.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_2 выше Линии_1, то сделка не совершается до тех пор, пока условия не изменятся. .

Ну и...
1) Если Линия_1 выше Линии_2, то совершается сделка на покупку.,
2) Сделка закрывается по СЛ или ТП.,
3) Если Линия_1 выше Линии_2, то сделка не совершается до тех пор, пока условия не изменятся. .

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

Поздравляю всех с наступившим новым годом! Всем счастья, удачи, любви и конечно же огромных профитов! =))


Знатоки, прошу посмотреть функцию на наличие ошибок. Суть функции: она должна вычислять лот необходимый для того, в случае закрытия сетки ордеров, чтобы следующий открытый ордер мог за определенное количество пунктов покрыть их убыток.

double FindRightLot (int otype)
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }