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

 
rigonich:


terminal\profiles\gvariables.dat
 
r772ra:


terminal\profiles\gvariables.dat

Спасибо, точно, а я почти все папки пересмотрел, а в профили залезть не догадался.
 
rigonich:

Простите, зарапортовался, вы правы, просто у вас в строке  if  ( Print("Stop loss", OrderStopLoss()); )  Print("Stop loss", OrderStopLoss()); нет условия, а вместо него вставлен оператор.


опять я застрял..на самом последнем шаге...

тикеты вытащили - они работают. теперь пытаюсь их использовтать - вытащить OrderProfit соответствуйщей позы.... принтует ноли...(а тикеты принтует правильно)

если убрать  ==true  -то же самое....

вообще можно как-то  OrderSelect использовать БЕЗ if ??

ПРИЧЕМ это работает:

   if  (OrderSelect( Ticket1,SELECT_BY_TICKET))  Print("Stop loss", OrderStopLoss());  

принтует уровень стоплоса.

---------------------------

придется все-таки взять ваш вариант с общим циклом. там OrderProfit вынемается четко! Блин..вот ну в чем разница то? ведь все одинакого?!?  

 LastClosetPoz();SecLastClosetPoz();   Print ( LastClosetPoz(),"___",SecLastClosetPoz()); 

 

if  (OrderSelect( LastClosetPoz(),SELECT_BY_TICKET)==true) X=OrderProfit();



if  (OrderSelect( SecLastClosetPoz(),SELECT_BY_TICKET)==true) Y=OrderProfit(); Print (X,"+",);

 
 
lottamer:


опять я застрял..на самом последнем шаге...

тикеты вытащили - они работают. теперь пытаюсь их использовтать - вытащить OrderProfit соответствуйщей позы.... принтует ноли...(а тикеты принтует правильно)

если убрать  ==true  -то же самое....

вообще можно как-то  OrderSelect использовать БЕЗ if ??

ПРИЧЕМ это работает:

   if  (OrderSelect( Ticket1,SELECT_BY_TICKET))  Print("Stop loss", OrderStopLoss());  

принтует уровень стоплоса.

---------------------------

придется все-таки взять ваш вариант с общим циклом. там OrderProfit вынемается четко! Блин..вот ну в чем разница то? ведь все одинакого?!?  

OrderSelect( SecLastClosetPoz(),SELECT_BY_TICKET);
можно использовать и так, если ордер с нужным тикетом существует, функция его выберет.
 

r772ra

спасибо за подсказку 

 

Доброго вечера! Простите, я , кажется, там где-то уже спрашивал,,   В общем я ставлю два ордера. Один с тейкпрофитом, для другого должен работать трейлингстоп.

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

//***************************************   
 
  nahodka=false;
 
 
 if (OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY)) { 
 if (OrderTakeProfit( )-3*Point<profitsell&&OrderTakeProfit( )+3*Point>profitsell) nahodka=true;}
     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tecket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )>Bid+treylingstop*Point ){ Print ("четвёртаямодифи    " );
 OrderModify(  tecket, OrderOpenPrice(), Bid+treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
  // Модифицируем оставшийся ордер

Как вообще и что, для начала, выбирает   OrderSelect, если ордер с тикетом  tocket ещё не на истории???А модифицирует точно этим местом!! 

 
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
               
               //EMA – период 10 пересекает с верху в низ EMA – период 200 , CCI пересекает уровень
 0,100 или-100 с вверху в низ; Свеча закрывается или находится ниже LMA – период 100
 
 bool CCInapravlenie=false;
 if(( CCI_50S>100&&CCI_50<100) ||(CCI_50S>0&&CCI_50<0)||( CCI_50S>-100&&CCI_50<-100 ) )CCInapravlenie=true;
 if(EMA_10S>EMA_20S&&EMA_10<EMA_20&&CCInapravlenie&&LMA_100<Ask&&!sellistavili){
 
 RefreshRates();   
           tocket=OrderSend (Symbol( ), OP_SELL,   lot , NormalizeDouble (Bid, Digits), 5 ,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   NormalizeDouble( Bid-( teykprofit*Point),Digits),   NULL, 450, 0, CLR_NONE);
           Error=GetLastError();if (Error==0){  
           Sleep(2000); RefreshRates();  
           tecket=OrderSend (Symbol( ), OP_SELL,  lot ,NormalizeDouble(Bid, Digits), 5,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   0, NULL, 450, 0, CLR_NONE); 
           if (Error==0){ profitsell = NormalizeDouble( Bid-( teykprofit*Point),Digits); tsenasell=Bid;  
           sellistavili= true; perenossell= false;  }}}
           
           if (Error!=0){  errorcomment = "Ошибка открытия  ордера OP_SELL"  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
 
 
 if(tsenasell-30*Point>Bid&&!perenossell){Print ("третямодифи    " );
 OrderSelect( tocket, SELECT_BY_TICKET ); 
Выставление позиций
 
Dimka-novitsek:

Доброго вечера! Простите, я , кажется, там где-то уже спрашивал,,   В общем я ставлю два ордера. Один с тейкпрофитом, для другого должен работать трейлингстоп.

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

Как вообще и что, для начала, выбирает   OrderSelect, если ордер с тикетом  tocket ещё не на истории???А модифицирует точно этим местом!! 

 В цикле переберите историю  OrderSelect(index, SELECT_BY_POS , MODE_HISTORY), сравнивая значение tocket с тикетом выбираемого ордера.

 OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY) вернет true если ордер с таким тикетом есть вообще в терминале.

 

pool   -   Источник данных для выбора. Используется, когда параметр select равен SELECT_BY_POS. Mожет быть одной из следующих величин:

MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,

MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.  

 

И на, всякий случай,поставьте NormalizeDouble(Bid+treylingstop*Point, Digits)

 
Спасибо!! Щас помудрю над своим кодом!
 
Какой  из советников лучше использовать для визуализации торговли. Опять же желательно чтобы можно было использовать одновременно разные ТФ. Спасибо!