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

 
Üzgünüm, hayal edin, son ekleme dergiye yazılmamış
 //----
   for ( i= OrdersHistoryTotal ();i> 0 ;i--){
     OrderSelect (i- 1 ,SELECT_BY_POS,MODE_HISTORY  );
     if ( OrderMagicNumber ( )== 2000 
    && OrderSymbol ()== Symbol ()&&
     OrderTakeProfit ( )== OrderClosePrice (        )&&wremjapomnim< OrderCloseTime ( ) ||
   OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ()
   && OrderTakeProfit ( )== OrderClosePrice (       )&&wremjapomnim< OrderCloseTime ( )){
   Alert ( "нашли MODE_HISTORY" );
 for ( i= OrdersTotal ();i> 0 ;i--)  {
 Alert ( "паследний цикл" ,i);
   OrderSelect (i- 1 ,SELECT_BY_POS );
   if ( OrderMagicNumber ( )== 2000 && OrderSymbol ()== Symbol ()
  || OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ())  { 
   Alert ( "OrderTicket( )" , OrderTicket ( )); 
   OrderDelete ( OrderTicket ( )) ; Alert ( "OrderDelete-vse" ,   GetLastError ( ) ); 
   OrderClose ( OrderTicket ( ), OrderLots ( ), OrderClosePrice ( ) , 0 , CLR_NONE );
   Alert ( "OrderClose-vse" ,   GetLastError ( ) ); C= 0 ; }}}}                              
   

Yani, Alert ( "OrderTicket()" , OrderTicket ( )); satırı; Son döngünün hala taahhüt edilmediğini ne söyleyebiliriz !!

İşte günlük Daha önce sık sık kodları yeniden yazarım, sık sık hatalarla karşılaştım bence 4108 ve 4050, şimdi hata yok !! Eh, evet, her durumda çalışmıyor!

 

Evet, oldu, sonra köpek karıştırdı

if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {

Yani doğru, se .. Chezh Ben çizgide akıllı mıydım?

 
Vallahi, bilmiyorum, şart olarak şart.
 
Dimka-novitsek :

Evet, oldu, sonra köpek karıştırdı

if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {

Yani doğru, se .. Chezh Ben çizgide akıllı mıydım?


|| önce yürütülür, ardından &&
 
ilunga :
ancak şu anda uzaktan bekleyen bir emir olabilir ve sonuç olağandışı olacaktır;)

Anlamıyorum, uzakları seçmiyorum, tarihin modasını değil. Tamam, hayır, bu bir çıkmaz.
 

-AAA!! Bu yüzden şimdi parantez içinde her iki tarafı da alacağım !! TEŞEKKÜR EDERİM!!!!!

Vay!

Yani, şimdilik duş paholundayım.Kızartma ..

 
Dimka-novitsek :

Anlamıyorum, uzakları seçmiyorum, tarihin modasını değil. Tamam, hayır, bu bir çıkmaz.

Silinmesi gereken 1 bekleyen siparişimiz olduğunu ve satıra ulaştığımızı düşünelim (okuma kolaylığı için operatörlere bölünmüştür)

 OrderDelete ( OrderTicket ( ));
Alert ( "OrderDelete-vse" ,   GetLastError ( ) );
OrderClose ( OrderTicket ( ), OrderLots ( ), OrderClosePrice ( ) , 0 , CLR_NONE );
Alert ( "OrderClose-vse" ,   GetLastError ( ) );
 C= 0 ;

bu yüzden bu emrimiz var:

1) sil, şu sırada:

a) şanslıydık ve o gitti

b) Fiyatı çok yakın olduğu için / sunucu aşırı yüklendiği için / internet yeni düştüğü için silinmeyebilir / vb. Ama yine de devam ediyoruz

2) her şeyin kötü olduğunu yazarsak

3) emri kapatın (bekleyen!! ilk paragrafta sildiğimiz!!!)

sonuç ... %100 tahmin edemiyorum ama görünüşe göre başka bir hata

4) bununla ilgili bir mesaj göster

 
Dimka-novitsek :

Evet, oldu, sonra köpek karıştırdı

if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) {

Yani doğru, se .. Chezh Ben çizgide akıllı mıydım?

Şöyle yapalım... Kimse kendini vurmasın ve emir almasın... :))

Sırayla başlayalım. İlk olarak, en son kapatılan pozisyonu bulalım ve aşağıdakileri alarak kapandığını kontrol edelim:

   int j=- 1 ;
   datetime t;
   // Поищем в цикле последнюю закрытую позицию, которая закрылась по TakeProfit
   for ( int i= 0 ; i< OrdersHistoryTotal (); i++) {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
         if ( OrderSymbol ()!= Symbol ())     continue ;
         if ( OrderType ()> 1 )               continue ;
         if ( OrderMagicNumber ()== 1000 || OrderMagicNumber ()== 2000 ) {
             if (t< OrderCloseTime ()) {
                t= OrderCloseTime ();
                j=i;
               }
            }
         }
      }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY)) {
       if ( NormalizeDouble ( OrderClosePrice ()- OrderTakeProfit (), Digits )< 0.5 * Point ) {
         Alert ( "Позиция с тикетом #" , OrderTicket (), " закрыта по TakeProfit, закрываем остальные прозиции и удаляем отложенные ордера" );
         // Здесь код для закрытия всех открытых позиций (тоже в цикле)
         // Здесь код для удаления всех отложенных ордеров (также в цикле)
         }
      }

Bu:

 // Здесь код для закрытия всех открытых позиций (тоже в цикле)
// Здесь код для удаления всех отложенных ордеров (также в цикле)

ödevin olacak... :)

 
TEŞEKKÜR EDERİM!!!!!!
 
Harika yazılmış!!!!