[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 637

 
А, ну так у меня все верно??
 
FAQ 17.03.2012 12:18
скорей всего в момент открытия у вас в переменной priceBUY сидит ноль, и таким образом Bid-priceBUY(0)==Bid, ну и соответственно

Нет, если бы это было так, то SELL бы тоже тралился не правильно, а SELL работает нормально...... Я пробовал уже менять первоначальное значение priceBUY с "0" на "цену открытия".... не помагает, уже мозги кипят(((

 
MIR-ASOV:

Нет, если бы это было так, то SELL бы тоже тралился не правильно, а SELL работает нормально...... Я пробовал уже менять первоначальное значение priceBUY с "0" на "цену открытия".... не помагает, уже мозги кипят(((

А что мешает использавать вот такой код?

   
   extern int ts=25, minp=10;

for(int i = OrdersTotal(); i >= 0; i--)
     {
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES); 
       // check for symbol & magic number
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
         {
          if(OrderType() == OP_BUY) // long position is opened
            {
               if((Bid-OrderOpenPrice())>Point*(ts+minp)) // trall
                 {
                  if(OrderStopLoss()<Bid-Point*ts)
                    {
                      if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*ts,Digits),0,0,Orange)) {Sleep(11000); prevtime = Time[1];}
                    }
                 }
            } 
           if(OrderType() == OP_SELL) // short position is opened
            {

               if((OrderOpenPrice()-Ask)>Point*(ts+minp))// trall
                {
                 if(OrderStopLoss()>Ask+Point*ts)
                   {
                       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*ts,Digits),0,0,Orange))
                      {
                        Sleep(11000);
                        prevtime = Time[1];
                      }
                   }
                }

            }
          }
     }
//----

Всё работает как надо.

 

Всех с днем Святого Патрика!

Уважаемые, прошу помощи. Помогите вытащить из индюка сигнал в советник. Т.е. если появляется синяя линия - покупаем, если красная - продаем.

Написал так в сове:

double dn_stop_1 = iCustom(NULL,0,"NRTR_ATR_STOP",ATR,Coeficient,0,1); // синий, снизу
double up_stop_1 = iCustom(NULL,0,"NRTR_ATR_STOP",ATR,Coeficient,1,1); // красный, сверху

   if (dn_stop_1!=EMPTY_VALUE)
       return(1);//покупка
   if (up_stop_1!=EMPTY_VALUE)  
       return(-1);//продажа

Но ничего не получается, такое впечатление, что буфера всегда равны 0.

Файлы:
 

evillive А что мешает использавать вот такой код?


Просто в примере один ордер (Либо BUY, либо SELL) а если их больше, то мне нужно чтоб все ордера тралились от уровня общего безубытка. Да и мне уже принципиально важно понять, в чём причина именно в этом коде, ведь SELL ордер тралится отлично, БАЮ чего не хватает?! Почему он модит стопак сразу после открытия......!?
 
MIR-ASOV:


Просто в примере один ордер (Либо BUY, либо SELL) а если их больше, то мне нужно чтоб все ордера тралились от уровня общего безубытка. Да и мне уже принципиально важно понять, в чём причина именно в этом коде, ведь SELL ордер тралится отлично, БАЮ чего не хватает?! Почему он модит стопак сразу после открытия......!?


Потому что сравниваемая цена не :

1) инициализирована

2) равна нулю

Действия:

1) распринтовать и увидеть,

2) проинициализировать большим числом

3) поставить ловушку если сравниваемая цена рана нулю

 
Sancho77:

Всех с днем Святого Патрика!

Уважаемые, прошу помощи. Помогите вытащить из индюка сигнал в советник. Т.е. если появляется синяя линия - покупаем, если красная - продаем.

Написал так в сове:

Но ничего не получается, такое впечатление, что буфера всегда равны 0.



А почему Вы сравниваете с EMPTY_VALUE. Сравнивать надо с 0.0
 
Потому что сравниваемая цена не :

1) инициализирована

2) равна нулю

Действия:

1) распринтовать и увидеть,

2) проинициализировать большим числом

3) поставить ловушку если сравниваемая цена рана нулю

Спасибо за помошь, спасибо всем, кто откликнулся...... Всё получилось, Ёханый бабай, я блок "Расчёт уровня безубытка" с блоком "Открытие позиции" местами поменял в тупую, и всё заработало как надо...... Ещё раз всем спасибо))) А я пойду повешаюсь)
 
Vinin:

А почему Вы сравниваете с EMPTY_VALUE. Сравнивать надо с 0.0

Я попробовал и так:

   if (dn_stop_1!=0.0)
       return(1);
   if (up_stop_1!=0.0)  
       return(-1);

Все равно нет реакции.

 

Подскажите,можно ли что-то в коде МТФиндюка сделать,что бы он автоматически обсчитывал и перерисовывал историю,идеально каждую минуту,что бы не получалось вот такой кракозябры

На рисунке два МТФиндюка для 5мин,на минутном графике.Дело в том,что индюки обсчитываются примитивно

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame,"T-Line alert10",0,y);

ExtMapBuffer2[i]=iCustom(Symbol(),TimeFrame,"T-Line alert10",1,y);

где собственно "T-Line alert10" имя не МТФного индюка.И что бы получить нормальный вид,т.е. ровные ступеньки приходится посттоянно выбирать свойства индюка и "ОК" жать,либо "график-обновить".При работе на м1 и параметре МТФ5м заколебывает иногда обновлять вручную вид.Может можно как-то просто это реализовать,вставкой какой-нибудь хитрой функции,а то не хочется писать отдельный объемный код под каждый индюк.

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