[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 276

 
BBSL :

Kenelerden bahsediyorsak, veri dosyasını kaydeden bir kod yazabilirsiniz, ancak Expert Advisor'da dosyadan yüklemeniz gerekecektir. Belki de bilgisayarı kapatmamak mantıklıdır?
Görünüşe göre, ikinci seçenek kullanılmalıdır. BBSL'ye teşekkürler.
 
artmedia70 :

Garip bir şey yapıyorsunuz... Bir pozisyon açtığınızda, bilet numarasını bir değişkene atarsınız ve tamamen farklı bir değişkeni kontrol edersiniz...

Aynı zamanda, OrderSend(), başarısızlık durumunda -1 (eksi bir) döndürür ve sıfırdan daha azına ihtiyacınız olduğunda birden azını kontrol edersiniz.

Gözünüze çarpan ilk şey bu. Ama bence orada çok ilginç şeyler var ... :)


U-ha-ha, evet, çok fazla şaka var ... Özellikle kontrol etmeye başladığınızda))

Hadi bir kez daha... Gerekli yani,

bir sipariş açıyorum:

order_id = OrderSend ( Symbol (),OP_SELL, 1.0 ,Bid, 3 , 0 , 0 , "expert comment" , 255 , 0 , Red );
   if (order_id< 0 )
     {
      error= GetLastError ();
       Print ( "send_orders, error = " ,ErrorDescription(error));
       return ;
     }
     } 

Siparişi kapatıyorum:

 if ( OrderSelect ( 0 , SELECT_BY_POS)==true){

OrderClose(OrderTicket(), 1 ,Bid, 3 , Red );

}

Doğru, tek bir siparişe tabi mi?))

 
hedger :
Görünüşe göre, ikinci seçenek kullanılmalıdır. BBSL'ye teşekkürler.

Lütfen, umarım bu size yardımcı olur :)
 
artmedia70 :

Garip bir şey yapıyorsunuz... Bir pozisyon açtığınızda, bilet numarasını bir değişkene atarsınız ve tamamen farklı bir değişkeni kontrol edersiniz...

Aynı zamanda, OrderSend(), başarısızlık durumunda -1 (eksi bir) döndürür ve sıfırdan daha azına ihtiyacınız olduğunda birden azını kontrol edersiniz.

Gözünüze çarpan ilk şey bu. Ama bence orada çok ilginç şeyler var ... :)


Onay numarasını şu şekilde almanız gerektiğini anlıyorum:

nomer_ticketa = OrderSend ( Symbol (),OP_BUY, 1.0 ,Ask, 3 , 0 , 0 , "expert comment" , 255 , 0 , Green );
   if (ticket< 1 )
 
artmedia70 :

Garip bir şey yapıyorsunuz... Bir pozisyon açtığınızda, bilet numarasını bir değişkene atarsınız ve tamamen farklı bir değişkeni kontrol edersiniz...

Aynı zamanda, OrderSend(), başarısızlık durumunda -1 (eksi bir) döndürür ve sıfırdan daha azına ihtiyacınız olduğunda birden azını kontrol edersiniz.

Gözünüze çarpan ilk şey bu. Ama bence orada çok ilginç şeyler var ... :)


Saygılar, teşekkürler!))
 
BBSL :


Onay numarasını şu şekilde almanız gerektiğini anlıyorum:

Bilirsiniz, tek bir düzen varsa işe yarayabilir ama yine de kulplarla açarsanız her şey farklı olur. Bilet numarası bir değişkende saklanmalıdır ve bir sipariş seçtikten sonra biletini kayıtlı olanla karşılaştırın:

 if (OrderTicket()==number_ticket) {
   // ... код для работы с выбранным ордером при совпадении тикетов
   }

Genel olarak, sipariş seçimi bir döngü içinde OrderSelect() işleviyle yapılmalıdır:

 for (i= 0 ; i< OrdersTotal (); i++) {                    // цикл по всем рыночным ордерам терминала
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) { // Если выбран любой рыночный ордер с индексом i
       if (OrderSymbol()!= Symbol ())     continue ;   // Если символ не текущего графика, переходим к выбору следующего ордера
       if (OrderMagicNumber()!=Magic)   continue ;   // Если его магик не совпадает с магиком советника - переходим к выбору следующего
//... далее можно проверять другие параметры выбранного ордера, но в этом месте уже есть выбранный ордер текущего графика и номером магика советника
       if (OrderTicket()==number_ticket) {          // проверяем тикет выбранного ордера и, если есть совпадение, выполняем с ним дальнейшие действия
         // ... код, выполняющий дальнейшие действия с найденным нужным ордером ...
         }
      }
   else if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Иначе, если не удалось выбрать ордер
       Print ( "Ошибка при выборе ордера из списка рыночных ордеров = " , GetLastError ());   // Выведем сообщение об ошибке и её номер в журнал.
   }

Bu sadece anlamak için bir örnek, bitmiş bir çalışma kodu değil, eğer bir şey varsa ... :)

 
artmedia70 :

Bilirsiniz, tek bir düzen varsa işe yarayabilir ama yine de kulplarla açarsanız her şey farklı olur. Bilet numarası bir değişkende saklanmalıdır ve bir sipariş seçtikten sonra biletini kayıtlı olanla karşılaştırın:

Genel olarak, siparişler bir döngüde OrderSelect() işlevi kullanılarak seçilmelidir:

Bu sadece anlamak için bir örnek, bitmiş bir çalışma kodu değil, eğer bir şey varsa ... :)




Emirleri kapatırken birden fazla emir varsa aşağıdaki döngüyü kullanmanız gerekir:

 int i, k= OrdersTotal ();

   for (i=k- 1 ; i>= 0 ; i--) {
 //...
 
bolt :

Emirleri kapatırken birden fazla emir varsa aşağıdaki döngüyü kullanmanız gerekir:

Yazımın son satırını okuyun. Kapanış için örnek yazdığımı kim söyledi?

Gerisi ortak gerçektir. Ders kitabını yaz.

 

Lütfen bana OrderOpenPrice'ın neden çalışmadığını söyleyin? Görev, belirli bir fiyattan verilen bir emir için havuzda arama yapmak, eğer orada değilse, bir emir vermek ve kurulduğuna dair bir bayrak koymaktır.


 for ( int i= 1 ; i <= OrdersTotal () ; i++)
   {
   if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES))
      {
       if (OrderOpenPrice() == price) 
        {
        orderset = true;
        }
      }
   }
     
if ((orderset==false)
   {
   OrderSend ( Symbol (),OP_SELLLIMIT,baselot,price, 3 , NULL ,price- 10 , "Comment" , 0001 +i, 0 , White ); 
   }
 
Pyro :

Lütfen bana OrderOpenPrice'ın neden çalışmadığını söyleyin? Görev, belirli bir fiyattan verilen bir emir için havuzda arama yapmak, eğer orada değilse, bir emir vermek ve kurulduğuna dair bir bayrak koymaktır.



Gerçek sayıları karşılaştıramazsınız.