MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 464

 

@Konstantin Nikitin Sizin için daha kolay! sen Özelsin! Ders çalışıyorum! şalter henüz hiç kullanılmadı!

 if (! OrderSelect (i, SELECT_BY_POS )) continue ;
     if ( OrderSymbol ()!= Symbol ()) continue ;
А это как прочитать? Если (Ордер не выбран) продолжить;
                     Если (Текущий Символ не равен Символу) продолжить; Так? Или как?
 

Rewerpool :

Ve nasıl okunur? (Sıra seçilmedi) devam ederse;

(Mevcut Sembol, Sembole eşit değilse) devam ederse; Böyle? Veya nasıl?

devam beyanı

 

@Konstantin Nikitin Anlaşıldı, bunun anlamı şu: Bir şey olursa beni düzeltin!

 if (! OrderSelect (i, SELECT_BY_POS )) continue ;
Если (Ордер не выбран ордер) начать цикл снова; //(Вернутся в начало функции)
if ( OrderSymbol ()!= Symbol ()) continue ;
Если (ОрдерСимвола не равен текущему Графику)начать цикл снова; //(Вернутся в начало функции)


Ve işte başka bir soru: !OrderSelect - Bu şu anlama mı geliyor: Sipariş Yok mu veya Sipariş Seçilmedi mi?

 
Rewerpool :

Anlaşıldı, şu anlama gelir: Doğru, öyleyse!

Sıra seçilmezse döngünün sonraki elemanı seçilir

Ve işte başka bir soru: !OrderSelect - Bu şu anlama mı geliyor: Sipariş Yok mu veya Sipariş Seçilmedi mi?

İşlemler ve ifadeler ve burada Mantıksal işlemlere bakıyoruz

 
@Konstantin Nikitin şöyle derlendi :
 void STOP_TAKE()
   int tip,Ticket;
   double OOP,OSL,OTP;
   int SPREAD    = ( int ) MarketInfo ( Symbol (), MODE_SPREAD );
   if (stoploss<STOPLEVEL) stoploss= 0 ; 
   if (takeprofit<STOPLEVEL) takeprofit= 0 ; 

for ( int i= 0 ; i< OrdersTotal (); i++)
{
     if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
     if ( OrderSymbol ()!= Symbol ()) continue ;
     
     int tip = OrderType ();
     if (tip!= OP_BUY && tip!= OP_BUYSTOP && tip!= OP_BUYLIMIT ) continue ;
     
     // переменные которые будут использоваться в любых ордерах
     int Ticket = OrderTicket ();
     double OOP = OrderOpenPrice ();
     
     //---
     switch ( OrderMagicNumber () )
     {
           case Magic:     //----------Если Ордера Советника
               {
                 if (tip< 2 )
           {
            OSL = OrderStopLoss ();
            OTP = OrderTakeProfit ();
             if ((OSL== 0 &&stoploss!= 0 )||(OTP== 0 &&takeprofit!= 0 ))
            {  
               if (tip== OP_BUY || tip== OP_BUYSTOP || tip== OP_BUYLIMIT )             
               {
                   if (takeprofit!= 0 ) TP = NormalizeDouble (OOP + takeprofit* Point , Digits ); else TP=OTP;
                   if (stoploss!= 0 )   SL = NormalizeDouble (OOP - (stoploss+SPREAD)* Point , Digits ); else SL=OSL;       
                   if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                   else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
               }                                         
               if (tip== OP_SELL || tip== OP_SELLSTOP || tip== OP_SELLLIMIT )        
               {
                   if (takeprofit!= 0 ) TP = NormalizeDouble (OOP - takeprofit* Point , Digits ); else TP=OTP;
                   if (stoploss!= 0 )   SL = NormalizeDouble (OOP + (stoploss+SPREAD)* Point , Digits ); else SL=OSL;             
                   if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                   else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
               } 
            }
         }
               }
               break ;

           default :       //----------Если Ордера Оператора 
               {
                 {
                 if (tip< 2 )
           {
            OSL = OrderStopLoss ();
            OTP = OrderTakeProfit ();
             if ((OSL== 0 &&stoploss!= 0 )||(OTP== 0 &&takeprofit!= 0 ))
            {  
               if (tip== OP_BUY || tip== OP_BUYSTOP || tip== OP_BUYLIMIT )             
               {
                   if (takeprofit!= 0 ) TP = NormalizeDouble (OOP + takeprofit* Point , Digits ); else TP=OTP;
                   if (stoploss!= 0 )   SL = NormalizeDouble (OOP - (stoploss+SPREAD)* Point , Digits ); else SL=OSL;       
                   if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                   else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
               }                                         
               if (tip== OP_SELL || tip== OP_SELLSTOP || tip== OP_SELLLIMIT )        
               {
                   if (takeprofit!= 0 ) TP = NormalizeDouble (OOP - takeprofit* Point , Digits ); else TP=OTP;
                   if (stoploss!= 0 )   SL = NormalizeDouble (OOP + (stoploss+SPREAD)* Point , Digits ); else SL=OSL;             
                   if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                   else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
               } 
            }
         }
               }
               }
     }
}
Doğru şekilde?
 

bunun gibi daha fazla eklendi:


6

 

Neden böyle yazıyorsun?

 if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
     if ( OrderSymbol ()!= Symbol ()) continue ;

Danışmanı yalnızca bir sembole koyarsanız, hepsinde işe yarar mı? Ve sihirbaz kendi görecek!

Tamamen karıştı!

 

Nasıl uygulanacağını bilen arkadaşlar: danışman, örneğin iStohastic() gibi göstergenin mutlak değerini alabilir. Ve göstergenin aşırı alım veya aşırı satım bölgesinden ayrıldığını nasıl belirleyebilirim?

Görsel olarak, örneğin, 80 ve 20 seviyelerine sahip Stokastik bir gösterge olarak.

 

Rewerpool : Eh, hatasız göründüğü gibi.

 void STOP_TAKE( void )
{
   int SPREAD    = ( int ) MarketInfo ( Symbol (), MODE_SPREAD );
   if (stoploss<STOPLEVEL) stoploss= 0 ; 
   if (takeprofit<STOPLEVEL) takeprofit= 0 ;

     for ( int i= 0 ; i< OrdersTotal (); i++)
     {
           if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
           if ( OrderSymbol ()!= Symbol ()) continue ;
     
           int tip = OrderType ();
           if (  tip!= OP_BUY && tip!= OP_BUYSTOP && tip!= OP_BUYLIMIT &&
               tip!= OP_SELL && tip!= OP_SELLSTOP && tip!= OP_SELLLIMIT ) continue ;
     
           // переменные которые будут использоваться в любых ордерах
           int Ticket = OrderTicket ();
           double     OOP = OrderOpenPrice (),
                    OSL = OrderStopLoss (),
                    OTP = OrderTakeProfit ();
     
           //---
           if ( OrderMagicNumber () == Magic )
          { //----------Если Ордера Советника
               switch (tip)
               {
                     case OP_BUY :
                     case OP_BUYSTOP :
                     case OP_BUYLIMIT :
                         {
                               if (takeprofit!= 0 ) TP = NormalizeDouble (OOP + takeprofit* Point , Digits ); else TP=OTP;
                               if (stoploss!= 0 )   SL = NormalizeDouble (OOP - (stoploss+SPREAD)* Point , Digits ); else SL=OSL;
                               if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                               else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
                         }
                         break ;
                         // end case
                         
                    default :
                         {
                               if (takeprofit!= 0 ) TP = NormalizeDouble (OOP - takeprofit* Point , Digits ); else TP=OTP;
                               if (stoploss!= 0 )   SL = NormalizeDouble (OOP + (stoploss+SPREAD)* Point , Digits ); else SL=OSL;             
                               if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                               else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
                         } // end case
               } // end switch

          }
           else
          { //----------Если Ордера Оператора
               switch (tip)
               {
                     case OP_BUY :
                     case OP_BUYSTOP :
                     case OP_BUYLIMIT :
                         {
                               if (takeprofit!= 0 ) TP = NormalizeDouble (OOP + takeprofit* Point , Digits ); else TP=OTP;
                               if (stoploss!= 0 )   SL = NormalizeDouble (OOP - (stoploss+SPREAD)* Point , Digits ); else SL=OSL;       
                               if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                               else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
                         }
                         break ;
                         // end case
                         
                    default :
                         {
                               if (takeprofit!= 0 ) TP = NormalizeDouble (OOP - takeprofit* Point , Digits ); else TP=OTP;
                               if (stoploss!= 0 )   SL = NormalizeDouble (OOP + (stoploss+SPREAD)* Point , Digits ); else SL=OSL;             
                               if ( OrderModify (Ticket,OOP,SL,TP, 0 ,White)) Print ( "STOP_TAKE" ,Ticket, " SL " ,OSL, " -> " ,SL, "   TP " ,OTP, " -> " ,TP);
                               else Print ( Symbol (), " Error STOP_TAKE" , GetLastError (), "  Ticket " ,Ticket);
                         } // end case
               } // end switch
          } // end if
     } // end for
} // end STOP_TAKE
Danışmanın ve diğerlerinin emirlerini değiştirirken tamamen aynı mantığa sahip olmanıza rağmen. Neden aralarında ayrım yapmanız gerektiği tam olarak açık değil. Ama ilkenin kendisinin işe yarayacağını düşünüyorum.
 
@Konstantin Nikitin BUNU SEVİYORUZ!! Paylaşım için teşekkürler!!!