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

 
Vitaly Muzichenko :
Fiyata göre sıralamanız gerekir, çünkü boyuta göre arama yapamazsınız, ızgara çok partili olabilir ve en büyüğü veya en küçüğünü bulacaksınız, ancak ilk ve son değil

Marina'nın yayınladığı fonksiyondan bahsediyorum.

Orada, son siparişin tanımı zamana göre yapılır .

 
Alekseu Fedotov :

Marina'nın yayınladığı fonksiyondan bahsediyorum.

Orada, son siparişin tanımı zamana göre yapılır .

Her şey aynı anda oraya yerleştirildi, yani 14 siparişte fark 1 saniye olabilir ve zamana göre sıralamak imkansız, sadece fiyata göre
 
Marina Korotkih :

Çünkü ben böyle çağırırım

GetOrderOpenPrice( Symbol (), OP_SELLSTOP ,_Magic)
Anladım.
 

Sevgili programcılar! Bu sorunu çözmeye yardımcı olun. EA, M15'te bir ticarete girer, ancak aynı zamanda H1'den de koşullar alır. H1'deki koşullar karşılandığında, M15'te birden fazla giriş noktası olabilir. Aslında sorun şu ki, H1'deki koşullar tam tersi değişene kadar kendinizi yalnızca ilk giriş noktasıyla sınırlamak istiyorsunuz.

k=0;
for (i=SiparişlerToplam()-1;i>=0;i--)
{
Yeniler();
if( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Zaman[0]) // satın al

 
customer03 :

Sevgili programcılar! Bu sorunu çözmeye yardımcı olun. EA, M15'te bir ticarete girer, ancak aynı zamanda H1'den de koşullar alır. H1'deki koşullar karşılandığında, M15'te birden fazla giriş noktası olabilir. Aslında sorun şu ki, H1'deki koşullar tam tersi değişene kadar kendinizi yalnızca ilk giriş noktasıyla sınırlamak istiyorsunuz.

k=0;
for (i=SiparişlerToplam()-1;i>=0;i--)
{
Yeniler();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == doğru) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Zaman[0]) // satın al

Ve kod olmadan? Özellikle kod net olmadığı için.

Tam olarak ne istiyorsun? Soyut değil, tam olarak elde etmek istediğiniz şey.

 
customer03 :

Sevgili programcılar! Bu sorunu çözmeye yardımcı olun. EA, M15'te bir ticarete girer, ancak aynı zamanda H1'den de koşullar alır. H1'deki koşullar karşılandığında, M15'te birden fazla giriş noktası olabilir. Aslında sorun şu ki, H1'deki koşullar tam tersi değişene kadar kendinizi yalnızca ilk giriş noktasıyla sınırlamak istiyorsunuz.

k=0;
for (i=SiparişlerToplam()-1;i>=0;i--)
{
Yeniler();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == doğru) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Zaman[0]) // satın al

Örnek algoritma:

bool flag = false ;
bool flagH1 = true ;
bool flagM15 = true ;

if (!flag && flagH1 && flagM15)
{
  flag = true ;
}

if (!flagH1 && flag)
flag = false ;
 
Artyom Trishkin :

Ve kod olmadan? Özellikle kod net olmadığı için.

Tam olarak ne istiyorsun? Soyut değil, tam olarak elde etmek istediğiniz şey.

Merhaba Artyom! Görev, H1'de bir sinyal varken M15'teki girişi bir (ilk sinyal) ile sınırlamaktır.
#property strict
extern double     Lot= 0.1 ;

extern int     stoploss= 20 ;
extern int takeprofit= 50 ;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.



extern int   Magic = 99999999 ;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1 ;        
// величина максимально возможного проскальзывания.
//  slippage
extern int sec = 2000 ;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure


//============================= Stochastic
input int InpKPeriod= 13 ; // K Period
input int InpDPeriod= 3 ; // D Period
input int InpSlowing= 3 ; // Slowing

//============================= Stochastic
input int InpKPeriod1= 13 ; // K Period
input int InpDPeriod1= 3 ; // D Period
input int InpSlowing1= 3 ; // Slowing





int A, a, b, i, ii, o;


     double SL, TP, op, stH0, stH1, stM0, stM1;
     bool c;
     datetime OldTime, Time0, opp;

int init()
  {    
  
   OldTime = iTime ( NULL , Period (), 0 );
  
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  

                      
//====================================================================

stH0 = iStochastic ( NULL , 60 ,InpKPeriod,InpDPeriod,InpSlowing, MODE_EMA , 1 , MODE_MAIN , 0 );
stH1 = iStochastic ( NULL , 60 ,InpKPeriod,InpDPeriod,InpSlowing, MODE_EMA , 1 , MODE_MAIN , 1 );

stM0 = iStochastic ( NULL , 15 ,InpKPeriod1,InpDPeriod1,InpSlowing1, MODE_EMA , 1 , MODE_MAIN , 0 );
stM1 = iStochastic ( NULL , 15 ,InpKPeriod1,InpDPeriod1,InpSlowing1, MODE_EMA , 1 , MODE_MAIN , 1 );
  
//====================================================================  

          
b= 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)  
       {
         RefreshRates ();
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true ) a = 0 ;
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) b++;
       }

      
if (  stM1 <= 20 && stM0 > 20   && stH0 > 70   && b== 0    && opp != Time [ 0 ]) // покупка
      {
       opp = Time [ 0 ];

     RefreshRates ();
    op = Ask ;
   A = OrderSend ( Symbol (), OP_BUY , Lot, Ask , Slipp, 0 , 0 , NULL , Magic, 0 , Blue);
    o = GetLastError ();
         while (A < 0 && o != 4109 && o != 132 && o != 133 )
         {
           Print ( "Error =" , o);
         Sleep (sec);
         RefreshRates ();
         op = Ask ;
         A = OrderSend ( Symbol (), OP_BUY , Lot, Ask , Slipp, 0 , 0 , NULL , Magic, 0 , Blue);
         o = GetLastError ();
        }      
        
SL = op-stoploss* Point ;
if (stoploss == 0 ) SL = 0 ;
TP = op+takeprofit* Point ;
if (takeprofit == 0 ) TP = 0 ;        
        
     if (SL != 0 || TP != 0 )
      {
     RefreshRates ();
     if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
    c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
    o = GetLastError ();
       while (c == false && o != 4109 && o != 132 && o != 133 )
                  {
                   Print ( "Error =" , o);
                   Sleep (sec);
                   RefreshRates ();
                   if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
                  c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
                  o = GetLastError ();
                  }  }          
     }

//---------------------------------------------------------------------------------------------------------+                          
b= 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)  
       {
         RefreshRates ();
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) == true ) a = 0 ;
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) b++;
       }


if ( stM1 >= 80 && stM0 < 80   &&  stH0 < 30    && b== 0    && opp != Time [ 0 ]) // продажа
     {
     opp = Time [ 0 ];

       RefreshRates ();
      op = Bid ;
         A = OrderSend ( Symbol (), OP_SELL , Lot, Bid , Slipp, 0 , 0 , NULL , Magic, 0 , Red);
         o = GetLastError ();
             while (A < 0 && o != 4109 && o != 132 && o != 133 )
            {
             Print ( "Error =" , o);
             Sleep (sec);
             RefreshRates ();
            op = Bid ;
            A = OrderSend ( Symbol (), OP_SELL , Lot, Bid , Slipp, 0 , 0 , NULL , Magic, 0 , Red);
            o = GetLastError ();
            }    

SL = op+stoploss* Point ;
if (stoploss == 0 ) SL = 0 ;
TP = op-takeprofit* Point ;
if (takeprofit == 0 ) TP = 0 ;
        
         if (SL != 0 || TP != 0 )
      {
         RefreshRates ();
         if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
         c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);
         o = GetLastError ();
         while (c == false && o != 4109 && o != 132 && o != 133 )
                  {
                   Print ( "Error =" , o);
                   Sleep (sec);
                   RefreshRates ();
                   if ( OrderSelect (A, SELECT_BY_TICKET ) == true ) a = 0 ;
                  c = OrderModify ( OrderTicket (), OrderOpenPrice (), SL, TP, 0 , Green);                  
                  o = GetLastError ();
                  } }
      }
      
    

   return ( 0 );
   }      

  
//+------------------------------------------------------------------+
 
customer03 :
Merhaba Artyom! Görev, H1'de bir sinyal varken M15'teki girişi bir (ilk sinyal) ile sınırlamaktır.

Peki, sıfır mum M15'teki açık pozisyonların sayısını kontrol edin. Zaten bir pozisyon varsa ve sıfır mum M15'te açıksa, tekrar açmayın.
 

Merhaba sevgili forum kullanıcıları. Uzman Danışmandan Metatrader4'te yerleşik "sondaki durdurma" aracının değerini bir şekilde ayarlamak mümkün mü? Yerleşik araçtan bağımsız bir takip durdurma uygulamak için Expert Advisor'a bir kodun eklenmesi değil, ilgi çekici olan budur.

Cevaplarınız için şimdiden teşekkürler.

 
Dr_G :

Merhaba sevgili forum kullanıcıları. Uzman Danışmandan Metatrader4'te yerleşik "sondaki durdurma" aracının değerini bir şekilde ayarlamak mümkün mü? Yerleşik araçtan bağımsız bir takip durdurma uygulamak için Expert Advisor'a bir kodun eklenmesi değil, ilgi çekici olan budur.

Cevaplarınız için şimdiden teşekkürler.

Numara.