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

 
Alexandr24:

Помогите пожалуйста решить проблему. 

int n1=.....;

int n2=.....; 

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i); 

вывожу на экран через коммент значения n1 и n2, значения верные, но машка не верно прорисовывается, не на весь график. Если же я значения n1 и n2 от руки вобью вместо этих переменных, то все рисуется как надо. Не пойму как такое возможно, если значения переменных верны? И как сделать, чтобы машка рисовалась со сдвигом вправо? Сейчас она рисуется только до нулевого бара, т.е. текущего.

Если n1 не равно значению ТФ, тогда понятно, почему вырисовывается неверно. А сдвиг вправо сделает n2 с плюсом!! Проверил!
[Удален]  
borilunad:
Если n1 не равно значению ТФ, тогда понятно, почему вырисовывается неверно. А сдвиг вправо сделает n2 с минусрм.

Не пойму причем тут ТФ, n1 - это период усреднения для вычисления индикатора. Почему-то Comment на экран выводит и следовательно получает верное значение переменной, а вот машка с этими переменными рисует не то что должно быть, парадоксальная ситуация. 

UPD. вместо n2 поставил 0, сдвиг нормально отрисовывается, но n1 криво рисует :(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

Всё правильно! Это я ошибся, но почему что-то не получается, если делаете правильно?!

[Удален]  
borilunad:

Всё правильно! Это я ошибся, но почему что-то не получается, если делаете правильно?!

Да вот тоже ломаю голову над этим парадоксом. Если перезагрузить терминал, то машка отрисовывается как надо, но каждый раз перезагружать - это неудобно.

UPD проблема решилась нажатием правой кнопки и выбором в меню "Обновить", но если в коде нажать компиляция, то машка рисуется криво...но это уже мелочевка, буду просто обновлять :))

 
Alexandr24:

Да вот тоже ломаю голову над этим парадоксом. Если перезагрузить терминал, то машка отрисовывается как надо, но каждый раз перезагружать - это неудобно.

UPD проблема решилась нажатием правой кнопки и выбором в меню "Обновить", но если в коде нажать компиляция, то машка рисуется криво...но это уже мелочевка, буду просто обновлять :))

Код покажите, только не кусочки
[Удален]  

Сам уже разобрался, спасибо за участие :)

[Eliminato]  
Приветствую, ВСЕХ!
На форуме искал, в инете искал - не нашел. По-этому к Вам вопрос: 

1. Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров по одной и той-же цене(например BUY по цене1.1180).

уточнение : до пересечения с МА это были Buy-Stop ордера .

2. Далее советник должен установить этим Трем ордерам Takeprofit на разные уровни (которые выясняются только при пересечении с МА, по показаниям стандартного индикатора Fibo)

Предположим эти уровни такие:
Ur1 = 1.1200
Ur2 = 1.1220  
Ur3 = 1.1240

А внимание теперь вопрос:
 
Как расставить открытым Трём ордерам эти заданные уровни???

Нашел на форуме вот такую конструкцию (см. ниже), но дальше ни чего соящего придумать не могу. Помогите пожалуйста или подскажите какую-нибудь статью по данной теме.
Нужно еще один счетчик воткнуть? Но как? Или придется использовать массивы, мэджики, или... ????

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
Как расставить открытым Трём ордерам эти заданные уровни???

1. Что мешает установить соответствующие ТП ордерам в момент их открытия?
2. Что это за mod_Buy1/2/3 ? - Вы поняли в чем назначение вышеупомянутого for-цикла?
[Eliminato]  

да atztek, извиняюсь за неточность в описании:

1.  потому-что до пересечения с МА это были buy-stop ордера и Ur1 Ur2 Ur3 выясняются только после пересечения цены с MA.

2. и  соответственно вышеупомянутый for-цикл ищет среди всех ордеров buy-ордера (т.к. там есть еще 3 sell-stop ордера и они ползут по другой MA на каждой свече) 

 
vadimvborisov:


да atztek, извиняюсь за неточность в описании:

1.  потому-что до пересечения с МА это были buy-stop ордера и Ur1 Ur2 Ur3 выясняются только после пересечения цены с MA.

2. и  соответственно вышеупомянутый for-цикл ищет среди всех ордеров buy-ордера (т.к. там есть еще 3 sell-stop ордера и они ползут по другой MA на каждой свече) 

1. Вы же говорили:
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

Стоп ордера становятся рыночными в момент пересечения их ценой, МА здесь не при чем.
Ну ладно, Вам решать как работает Ваш советник.

2. Каково назначение - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

Т.е. за каждый цикл в "for" Вы видите один ордер, а не все три одновременно.