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

 
    &&  OrderMagicNumber()  == 0           // my magic number

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

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

Здесь вы сохраняете значения из последнего выбранного ордера. Если вы хотите хранить значения изlastTicket, вам нужно будет выбрать его заново.

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

Ваши 2 блока кода полностью независимы друг от друга

 
GumRai:

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

Здесь вы сохраняете значения из последнего выбранного ордера. Если вы хотите хранить значения изlastTicket, вам нужно будет повторно выбрать его.

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

Ваши 2 блока кода полностью независимы друг от друга




GumRai: спасибо за ответ, согласно вашим пунктам

OrderMagicNumber() == 0 ------------here поставил 0, потому что я тестировал свой код, поэтому выложил его без номера значения, спасибо за рекомендации и исправления

OrderMagicNumber() == 1234

lastTicket я поместил в конец моего ордера


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0, "My Comment",magic,0,Green);

if(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
}



но я не знаю, правильно ли я все делаю, потому что все, что я хочу, чтобы моя ea сделала, это разместила несколько ордеров типа sell, поэтому я хочу, чтобы ea получила самую высокую цену открытия на текущем символе графика и открыла ордер на 10 пунктов выше нее, а любую сделку ниже текущего последнего ордера отклонила.

Чтобы получить то, что я хочу, я делаю шаг за шагом. Сначала я пытаюсь получить последний открытый ордер, следуя инструкции, которую дал мне WHRoeder .

Таким образом, мой ордер loop through не просто устанавливает 1 открытую сделку, а несколько открытых сделок, поэтому я хочу получить high последнего открытого билета. Пожалуйста, GumRai, если я ошибаюсь в выбранных ордерах, объясните мне, спасибо за помощь.



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    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.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

Пожалуйста, старайтесь не включать длинные строки кода в свои сообщения, это затрудняет их чтение

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

Ничто не мешает вам использовать 2 строки, как указано выше.

 
dan100:

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



dan100:

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






GumRai спасибо за ваши исправления. но правильно ли я понял вышеприведенный код?

 
dan100: Пожалуйста, я все еще жду вашей помощи.WHRoeder
Вы будете ждать очень долго.
  1. Я сказал вам, что вам нужно сделать, вы этого не сделали.
  2. Я напомнил вам здесь, что вы до сих пор не сделали.
  3. И теперь вы снова просите, но все еще не сделали этого.
 
WHRoeder:
dan100: пожалуйста, я все еще жду вашей помощи.WHRoeder
Вы собираетесь ждать долгое время.
  1. Я сказал вам, что вам нужно сделать, вы этого не сделали.
  2. Я напомнил вам здесь, что вы все еще не сделали.
  3. И теперь вы спрашиваете снова, но все еще не сделали этого.



WHRoeder Я не понял больше, это вся логическая часть моей ea и также где мои знания кода на данный момент. Я не знаю, что снова представить, в конце концов.

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

одобрения и ссылку для отправки всего кода ea.


Кроме того, формально до того, как вы дали мне эту формулу......

  1. Найдите открытую сделку с самой высокой ценой открытия.
  2. Если рынок не достиг цены + 10 пипсов, возвращаемся обратно
  3. открыть новый ордер.


Я тестировал последнюю цену только при пересечении скользящей средней с ценой ASK или BID и позже обнаружил, что она иногда открывает ордера ниже высокой цены текущего графика, так что это то, что я хочу исправить.

У меня нет кода для тестирования высокой цены, есть только MA, Ask и 10 пунктов, так что нет кода, который я использовал бы при тестировании.

 
dan100:

GumRai спасибо за ваши исправления. но правильно ли я понял вышеприведенный код?

Во-первых, неясно, что вы пытаетесь сделать.

Вы говорите

"но я не знаю, правильно ли я понял, потому что все, что я хочу, чтобы моя ea сделала, это разместила несколько ордеров типа sell, поэтому я хочу, чтобы ea получила самую высокую цену открытия в текущем символе графика и открылась на 10 пунктов выше нее. и любая сделка ниже текущего последнего ордера отклонялась.

Чтобыполучить то, что я хочу, я делаю шаг за шагом. Сначала я пытаюсь получить последний открытый ордер, следуя инструкции, которуюдал мне WHRoeder."

Так что же вы хотите найти?

Ордер с самой высокой ценой открытия?

или

Ордер, который был открыт последним?

Как кто-то может помочь вам, если вы не можете описать, чего вы хотите?

     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    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.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

Этот код находит последний открытый ордер, но нигде не хранит его цену.

      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

Здесь вы передаете значение Opn_S, но ничего с ним не делаете

   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Здесь нет условий для открытия ордера, и вы перезаписываете значение lastTicket.

В вашем коде нет логики, это просто 3 секции кода, которые совершенно не связаны друг с другом.

 
GumRai еще раз спасибо за ваши указания и резюме. Я хочу найти следующее

самая высокая цена открытия в текущем символе графика и открытие на 10 пунктов выше нее, если это покупка/открытие на 10 пунктов ниже, если это продажа

пожалуйста, помогите мне с этим

 
dan100:
GumRai еще раз спасибо за ваши указания и резюме. я хочу найти следующее

самая высокая цена открытия в текущем символе графика

пожалуйста, помогите мне с этим

Почему вам нужна помощь?

Если вы можете написать код для поиска ордера с последним (самым высоким) временем открытия ордера (OrderOpenTime), то найти ордер с самой высокой ценой открытия ордера (OrderOpenPrice) не составит труда.

Это простая подстановка.

 
GumRai:

Почему вам нужна помощь в этом вопросе?

Если вы можете написать код для поиска ордера с последним (самым высоким) временем открытия ордера (OrderOpenTime), то найти ордер с самой высокой ценой открытия ордера (OrderOpenPrice) не составит труда.

Это простая подстановка.



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

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

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