Fractal Break Out-Stuck - страница 2

 

В настоящее время я получаю ошибку с завершающими скобками "}".


Но я повторно проверил функции, и все они обрабатываются правильно.


Я попробовал другой способ и продолжил получать ту же ошибку.

 
ZacharyRC:

В настоящее время я получаю ошибку с завершающими скобками "}".


Но я повторно проверил функции, и все они обрабатываются правильно.


Я попробовал другой способ и продолжил получать ту же ошибку.


Я нашел ошибку, не обращайте внимания!
 
ZacharyRC:

Привет, deVries:


Я сталкиваюсь с проблемами в моем окончательном коде, когда пытаюсь поставить модифицированный стоп-лосс в безубыток после такого количества пунктов.


Ты видишь какую-нибудь очевидную ошибку?

Вам нужно прочитать это еще раз:Что такое возвращаемые значения функции ? Как их использовать? Разве вы не хотите знать, что происходит с вашим OrderModify()? Что происходит, если ваш OrderSelect() не работает?

 
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{

Это не правильный способ получения сделок вашего советника

вы не можете быть уверены, что позиция 0 принадлежит вашему советнику, вы должны управлять им

использовать всегда цикл, чтобы пройти через все открытые сделки и затем выбрать, таким образом, у вас есть

ваш Symbol(), по которому торгует советник, и MAGICNUMBER, который вы дали своему советнику.

.

мой способ такой

 

 for(i = OrdersTotal()-1; i >= 0 ; i--)         //always counting down checking trades
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;     // if false we abort the loop
     if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;   //if selected trade not symbol or magicnumber next one
 
RaptorUK:

Вам нужно прочитать это еще раз:Что такое возвращаемые значения функции ? Как их использовать? Разве вы не хотите знать, что происходит с вашим OrderModify()? Что произойдет, если ваш OrderSelect() не сработает?


Я обязательно перечитаю сегодня вечером, у меня еще нет полного понимания.
deVries:

Это не правильный способ получения данных о сделках вашего советника

вы не можете быть уверены, что позиция 0 принадлежит вашему советнику, вы должны управлять им

используйте всегда цикл для получения всех открытых сделок и затем выбирайте, таким образом у вас есть

ваш Symbol(), по которому торгует советник, и MAGICNUMBER, который вы дали своему советнику.

.

мой способ выглядит следующим образом

В прошлый раз я использовал цикл for(), у меня было несколько ошибок, и я отказался от него. Попробую еще раз и перечитаю текст.


Спасибо вам, господа.

 
RaptorUK:

Вам нужно прочитать это еще раз:Что такое возвращаемые значения функции? Как их использовать? Разве вы не хотите знать, что происходит с вашей функцией OrderModify()? Что происходит, если ваша функция OrderSelect() не работает?


Я чувствую себя немного медленным сегодня! После того, как все это впиталось, я понял, что язык MQL4 может быть лучшим помощником для поиска ошибок, а не доска объявлений.



TY RaptorUK!

 
ZacharyRC:

Сегодня я чувствую себя немного заторможенным! После того, как я это осознал, я понял, что язык MQL4 может быть лучшим помощником для поиска ошибок, а не доска объявлений.

Точно, на 100% верно :-)
 
deVries:

Это не правильный способ получения сделок вашего советника

вы не можете быть уверены, что позиция 0 принадлежит вашему советнику, вы должны управлять им

использовать всегда цикл, чтобы пройти через все открытые сделки и затем выбрать, таким образом, у вас есть

ваш Symbol(), по которому торгует советник, и MAGICNUMBER, который вы дали своему советнику.

.

мой способ такой

Аааа, я понял, это позволяет мне циклически просматривать мои сделки и определять, какая из них какая, и соответствовать магическим числам. Петля - лучший способ на сегодняшний день.

 
ZacharyRC:

Понятно, это позволяет мне циклически просматривать мои сделки и определять, какая из них какая, и соответствовать магическим числам. Петля - лучший способ на сегодняшний день.

Чем больше вы будете его использовать, тем больше трюков вы научитесь с ним делать.....
 

Все еще испытываю трудности. Я провел исследования ошибок, чтобы выяснить причину.


Журнал сообщил:

1) Ошибка 4051=Неправильный параметр

2) Недействительный билет для изменения заказа

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
if(OrderType()==OP_BUY)
{

 if(Move.BE && StopLoss > 0) 
 {
   if(Bid - OrderOpenPrice() >= Point * StopLoss)
     {
       if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
        {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
 }
  }
   }
    }
 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 }
  }
   }
    }

Причина обращения: