открывать ордера с разрывом в 10 пипсов - страница 6

 
WHRoeder:
  1. Я просил код, который находит самую высокую цену открытия. Так ли это? Делает ли это при наличии проскальзывания?
  2. Как вы думаете, что это значит?
  3. Я попросил вас показать код, который проверяет, находится ли Bid на 10 пунктов выше последнего открытия. Почему вы открываете продажу, когда рынок находится на 10 пунктов выше любого ордера (не самого высокого).
  4. Определитесь, вы хотите 10 пунктов или 10 пипсов.





Да, я хочу 10 пунктов.

 
dan100:

и также проверьте это условие, которое я добавил, если я прав.

 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
         RefreshRates();
          if (Bid>=highest_open_price+10*Point)
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);


     }

Пожалуйста, не публикуйте код со шальным }

это сбивает с толку

Попробуйте ваш советник в тестере стратегий и вы увидите, правы вы или нет.


 
GumRai:

} -- WHRoeder указал на это, и я исправил это, спасибо за замечание.



Я думаю, что WHRoeder: прав в своей точке о пункте и пипсах, теперь хай достигнут, я думаю, что пипсы должны быть рассмотрены.


 

теперь посмотрите, как я рассчитал свои пипсы, так как высокий уровень получен, я прав?


 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        

 int look_pips=0; 
for(pos=OrdersTotal()-1; pos>=0; pos--) 

      highest_open_price=MathAbs(High[pos]-Low[pos])/Point;  //pips levels of the bar
      if (Bid>=highest_open_price && look_pips >=my_pips)
      Print("The last price movement more than ",my_pips); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);



помните, что my_pips добавляется в extern double double my_pips =10; и также не рассчитал, чтобы соответствовать 5-значным брокерам, я добавлю это позже.

	          
 

Я понятия не имею, что вы пытаетесь сделать.

Вы получаете значение длясамой высокой_открытой_цены в первом цикле.

Затем вы снова перебираете ордера и присваиваете ему другое значение

why?????

 
GumRai:

Я понятия не имею, что вы пытаетесь сделать.

Вы получаете значение длясамой высокой_открытой_цены в первом цикле.

Затем вы снова перебираете ордера и присваиваете ему другое значение

почему?????




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

Теперь я использую значение тика для расчета пипсов.....



 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        
        
   double tickvalue = (MarketInfo(Symbol(),MODE_TICKVALUE));
   if(Digits == 5 || Digits == 3){
      tickvalue = tickvalue*10;
   }
       if (Bid>=highest_open_price + tickvalue*10)
      Print("The last price movement more than ",tickvalue); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);




now to add my comment on this tick value. one thing i know is -----10pips is a movement of price upward or down to definite number point stored while 10tick 
is count of moving price without storing number

else 10tick can complete in 1 candle far below pips. while 10pips can complete in more than 20bars/candle or even 1bar/candle.

conclusion i dont think i got it right?


please point me through 



in addition double MYPIP= MarketInfo(Symbol(), MODE_DIGITS); can  it work on this case to get pip
 
        
   double PipDecimal=Point;
   if(Digits == 5 || Digits == 3)
      PipDecimal = PipDecimal*10;

   if (Bid>=highest_open_price + PipDecimal *10)
 
GumRai:


Спасибо за ваши поправки, я очень признателен.


Теперь я соединил код вместе, чтобы получить максимальное количество пипсов...

Затем я провел обратное тестирование, но результат не совпал с кодом, почему? Я что-то упустил, есть ли какое-то условие.

или это потому, что рынок закрылся... спасибо.

или нужно считать double PipDecimal = (MarketInfo(Symbol(),MODE_DIGITS));.


 double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
        
   double PipDecimal=Point;
   if(Digits == 5 || Digits == 3)
      PipDecimal = PipDecimal*10;

   if (Bid>=highest_open_price + PipDecimal *10)
      Print("The last price movement more than ",PipDecimal); 
 
         RefreshRates();
   highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);





результат
 
   if (Bid>=highest_open_price + PipDecimal *10)
      {
      Print("The last price movement more than ",PipDecimal); 
      RefreshRates();
      highest_Ticket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",0,0,Red);
      }
Без фигурных скобок новая сделка будет открываться каждый тик
 
GumRai:
Без фигурных скобок новая сделка будет открываться каждый тик.


это здорово! это сработало хорошо... отлично замечено.


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

пожалуйста, может я что-то сделал не так.