basit soru - sayfa 2

 
Ais

Lütfen "Dist" değerini kontrol edin

Kontrol? Nasıl? Kodu (mesafe değişkenli kısım) MQL4 kitabından kopyaladım:

 int start ( )                                      // Special function 'start'
   {
   string Symb = Symbol ( ) ;                          // Symbol
   double Dist = 1000000.0 ;                        // Presetting
   int Real_Order = - 1 ;                            // No market orders yet
   double Win_Price = WindowPriceOnDropped ( ) ;      // The script is dropped here
//-------------------------------------------------------------------------------- 2 --
   for ( int i = 1 ; i < = OrdersTotal ( ) ; i + + )            // Order searching cycle
     {
       if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) // If the next is available
         {                                        // Order analysis:
         //----------------------------------------------------------------------- 3 --
         if ( OrderSymbol ( ) ! = Symb ) continue ;      // Symbol is not ours
         int Tip = OrderType ( ) ;                    // Order type
         if ( Tip > 1 ) continue ;                    // Pending order  
         //----------------------------------------------------------------------- 4 --
         double Price = OrderOpenPrice ( ) ;          // Order price
         if ( NormalizeDouble ( MathAbs ( Price - Win_Price ) , Digits ) < //Selection
             NormalizeDouble ( Dist , Digits ) )        // of the closest order       
           {
            Dist = MathAbs ( Price - Win_Price ) ;        // New value
            Real_Order = Tip ;                      // Market order available
             int Ticket = OrderTicket ( ) ;            // Order ticket
             double Lot = OrderLots ( ) ;              // Amount of lots
           }
         //----------------------------------------------------------------------- 5 --
         }                                        //End of order analysis
     }                                            //End of order searching
//-------------------------------------------------------------------------------- 6 --
   while ( true )                                    // Order closing cycle
     {
       if ( Real_Order = = - 1 )                        // If no market orders available
         {
         Alert ( "For " , Symb , " no market orders available" ) ;
         break ;                                  // Exit closing cycle        
         }
       //-------------------------------------------------------------------------- 7 --
       switch ( Real_Order )                          // By order type
         {
         case 0 : double Price_Cls = Bid ;            // Order Buy
             string Text = "Buy " ;                  // Text for Buy
             break ;                                // Из switch
         case 1 : Price_Cls = Ask ;                  // Order Sell
            Text = "Sell " ;                        // Text for Sell
         }
       Alert ( "Attempt to close " , Text , " " , Ticket , ". Awaiting response.." ) ;
       bool Ans = OrderClose ( Ticket , Lot , Price_Cls , 2 ) ; // Order closing 
see also: https://book.mql4.com/trading/orderclose
 
Ais

1. "Dist" in başlangıç değerinin doğru olduğundan emin olun.

2. Döngünün başında "Dist" değerini kontrol etmek için uyarı ekleyin: "Alert ("Dist = ", Dist ); "

"dist" değişkenini kullanmadan doğru sırayı seçmenin bir yolu var mı?

 
Ais

cevap 1

Örneklerdeki ">" ve "<" işaretleri aynı ifade için farklı yönlerdedir.

Closeorder.mq4'ün 22. satırına ve önceki örneğin 6. satırına bakın

Bence ikinci örnekte bir hata olmalı...ne dersiniz?

 
Ais

cevap 2

"Doğru sıra"nın anlamına bağlıdır

Daha düşük açılış fiyatına sahip OP_BUY siparişini seçmem (ve kapatmam) gerekiyor ve bu seçim 2 sipariş olduğunda başlamalı OP_BUY...OP_SELL için aynı şey...bunun uygulanması çok mu zor? Kafam çok karışık...

 
Ais

sıradan iş

peki neyi yanlış yapıyorum? Daha düşük açılış fiyatına sahip OP_BUY'u nasıl seçersiniz? "Dist" olmadan bile denedim ...


 if ( CheckFirstOP ( OP_BUY ) > 1 ) {       
       for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - ) {
           OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ;
           if ( OrderSymbol ( ) ! = Symbol ( ) | | OrderMagicNumber ( ) ! = MagicNumber | | OrderType ( ) ! = OP_BUY ) continue ;      
           double Price = OrderOpenPrice ( ) ;
           if ( Price < Price ) , Digits ) {                                             
             int Ticket = OrderTicket ( ) ;            
             double Lot = OrderLots ( ) ;                           
             OrderClose ( Ticket , Lot , OrderClosePrice ( ) , 3 ) ; 
         }     
       }    
   } 
without any results
 

"if (Fiyat < Fiyat), Rakamlar)" satırının amacı nedir?

Bana deli gibi görünüyor.


CB

 
cloudbreaker :

"if (Fiyat < Fiyat), Rakamlar)" satırının amacı nedir?

Bana deli gibi görünüyor.

sadece bu değil.

bu, eksik bir sol köşeli ayraçla hatasız nasıl derlenebilir?

Bu kod kapma-boş-içgörü-tam-aptallar-ve-tam-wasicus-ve-bir sent-ödemek istemeyen-yardım-isten adamlardan bıktım

 
Ais

tüm insanlar hata yapar

if (a_human_made_a_mistake==true)

{human_learn_next_lesson();}

başka

{reincarnate_as_plant=true;}

 
meikel :

{human_learn_next_lesson();}

Keşke MT5'imiz olsaydı. O zaman bunun yerine human->learnNextLesson() yapabiliriz.

 
jjc :

Keşke MT5'imiz olsaydı. O zaman bunun yerine human->learnNextLesson() yapabiliriz.

OOP ile hiç tanışmadım.

bundan nefret ediyorum. hiçbir şey hakkında çok fazla güçlük.

böyle durumlarda öğrenmeyi reddediyorum... ;-)

bu->tekrar->bu->tekrar->bu->tekrar->bu->tekrar->bu->tekrar->bu->tekrar->bu->tekrar->bu;