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

 
Rewerpool :

Neden böyle yazıyorsun?

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

Tamamen karıştı!

Eski mql4'te, koşullar listesindeki ilkleri kontrol etmenin sonucundan bağımsız olarak, koşul baştan sona kontrol edildi. Dolayısıyla bu çirkin yazı, işlem süresini kısaltma arzusu.

Şu anda, bir yerde bunun hakkında yazılmış, ancak ilk koşul karşılanmazsa, kontrolün nerede durduğunu hatırlamıyorum. Buna göre sağ ayağın serçe parmağıyla sol kulağı kaşımanın bir anlamı yoktur.

 

@Konstantin Nikitin Yinelemenin başında şöyle yazarsam ortaya çıkıyor:


 for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
   if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
  
   if ( OrderSymbol () != Symbol ()) continue ;
   
   if ( OrderMagicNumber () != Magic) continue ;

Выставляться будут стопы и тейки любым ордерам? И не надо делать опрос на предмет кто торгует Бот или человек?
 
Rewerpool :

Yinelemenin başında şöyle yazarsam ortaya çıkıyor:

 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
               
               continue;
          }
*/
           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 for
} // end STOP_TAKE
Bunun gibi bir şey.
 

Tünaydın. İşte yazdıkları..

"Ürün yalnızca bir EX4 dosyası içerebilir, ek dosyalara izin verilmez. EX4 dosyasının adı ve giriş parametrelerinin adları Latin harfleriyle yazılmalıdır. Uygun bir kullanıcı arayüzü oluşturmak için Kaynaklar kullanılması önerilir.

Program, güvenlik nedeniyle herhangi bir DLL çağrısına izin vermez. Programı göstermek için test verileri gerekiyorsa, programın kendisi gerekli dosyayı oluşturmalı ve kullanıcıyı bu konuda bilgilendirmelidir. Gerekli dosyaları ResourceLoad işlevini kullanarak da ekleyebilirsiniz, ancak tüm ürünlerin Market'te yayınlanmadan önce olası kötü amaçlı etkinliklere karşı kontrol edildiğini unutmayın.

İşlem hesabının, finansal enstrümanın vb. saatine, türüne veya sayısına bağlı olarak iş üzerinde herhangi bir kısıtlamanın Ürün'e eklenmesi yasaktır. Tüm bu tür eylemler Alıcı için düşmanca kabul edilecek ve kabul edilemez."

Söyle bana NASIL..... Göstergeye bir danışman isteğinde bulunun.

 
Oleksandr Kulibaba :

Tünaydın. İşte yazdıkları..

"Ürün yalnızca bir EX4 dosyası içerebilir, ek dosyalara izin verilmez. EX4 dosyasının adı ve giriş parametrelerinin adları Latin harfleriyle yazılmalıdır. Uygun bir kullanıcı arayüzü oluşturmak için Kaynaklar kullanılması önerilir.

Program, güvenlik nedeniyle herhangi bir DLL çağrısına izin vermez. Programı göstermek için test verileri gerekiyorsa, programın kendisi gerekli dosyayı oluşturmalı ve kullanıcıyı bu konuda bilgilendirmelidir. Gerekli dosyaları ResourceLoad işlevini kullanarak da ekleyebilirsiniz, ancak tüm ürünlerin Market'te yayınlanmadan önce olası kötü amaçlı etkinliklere karşı kontrol edildiğini unutmayın.

İşlem hesabının, finansal enstrümanın vb. saatine, türüne veya sayısına bağlı olarak iş üzerinde herhangi bir kısıtlamanın Ürün'e eklenmesi yasaktır. Tüm bu tür eylemler Alıcı için düşmanca kabul edilecek ve kabul edilemez."

Söyle bana NASIL..... Göstergeye bir danışman isteğinde bulunun.

Cevabı kendin yazdın: Bir kaynak kullan

 //+------------------------------------------------------------------+ 
#resource "\\Indicators\\SampleIndicator.ex5" 
int handle_ind; 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit () 
  { 
//--- 
   handle_ind= iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex5" ); 
   if (handle_ind== INVALID_HANDLE ) 
     { 
       Print ( "Expert: iCustom call: Error code=" , GetLastError ()); 
       return ( INIT_FAILED ); 
     } 
//--- 
   return ( INIT_SUCCEEDED ); 
  }
Документация по MQL5: Программы MQL5 / Ресурсы
Документация по MQL5: Программы MQL5 / Ресурсы
  • www.mql5.com
В данном примере показано как проигрывать звуки из файлов Ok.wav и timeoit.wav, входящих в стандартную поставку терминала. Эти файлы находятся в папке означает папку, из которой запущен клиентский терминал MetaTrader 5.  Программным путем из mql5-программы каталог терминала можно узнать следующим образом: Расположение каталога данных терминала...
 
Vitaly Muzichenko :

Cevabı kendin yazdın: Bir kaynak kullan

Cevap için teşekkürler. Ama zaten okudum ve eklemeye çalıştım. Bir şey çalışmıyor. Yanlış bir şey yapıyorum ya da yanlış yerde yapıyorum. Üç göstergeye erişimim var. Mümkünse, bu komut dosyasını daha ayrıntılı olarak açıklayın.

Ne, nerede, hangi parametreler... Şimdiden teşekkürler.

 //+------------------------------------------------------------------+ 
#resource "\\Indicators\\SampleIndicator.ex5" 
int handle_ind; 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit () 
  { 
//--- 
   handle_ind= iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex5" ); 
   if (handle_ind== INVALID_HANDLE ) 
     { 
       Print ( "Expert: iCustom call: Error code=" , GetLastError ()); 
       return ( INIT_FAILED ); 
     } 
//--- 
   return ( INIT_SUCCEEDED ); 
  }
 
Oleksandr Kulibaba :

Cevap için teşekkürler. Ama zaten okudum ve eklemeye çalıştım. Bir şey çalışmıyor. Yanlış bir şey yapıyorum ya da yanlış yerde yapıyorum. Üç göstergeye erişimim var. Mümkünse, bu komut dosyasını daha ayrıntılı olarak açıklayın.

Ne, nerede, hangi parametreler ... Şimdiden teşekkürler

Üç veya istediğiniz kadar değişken oluşturun ve bunları örnekteki gibi handle_ind= iCustom ( _Symbol , _Period , "::Indicators\\blah blah blah) sorgulayın. İnsanların anlaması için kodu yapıştırın !

iCustom - BU!

 iCustom

Возвращает значение указанного пользовательского индикатора. 



double    iCustom ( 
   string        symbol,           // имя символа 
   int           timeframe,         // таймфрейм 
   string        name,             // папка/имя_пользовательского индикатора 
   ...                             // список входных параметров индикатора 
   int           mode,             // источник данных 
   int           shift             // сдвиг 
   );
 
Eğer bir
 if (handle_ind== INVALID_HANDLE ) то это значит - не корректный хэндл
 
Rewerpool :

Üç veya istediğiniz kadar değişken oluşturun ve bunları örnekteki gibi handle_ind= iCustom ( _Symbol , _Period , "::Indicators\\blah blah blah) İnsanların anlaması için kodu yapıştırın !

iCustom - BU!

Eğer bir

Yapmaya çalışacağım. Teşekkür ederim.

 
@Oleksandr Kulibaba Kodunuzu yapıştırın , hatalar! Anlayış sahibi olmak! İyi insanlar yardım edecek! Ve ne tür problemlerin olduğu o kadar da net değil!
 
@Konstantin Nikitin Havalı çıktı. koddan kaldırıldı
 if ((OSL== 0 &&stoploss!= 0 )||(OTP== 0 &&takeprofit!= 0 ))

Dur şimdi her tikte seğiriyor )))))


, sihir için kodun kapatılmasına dikkat çektiniz! Anladım ! Durum şu ki: Ellerimle ticaret yapıyorum, ancak aniden geri adım atıp kontrolü Uzman Danışmana devretmem gerekiyor (bir model ve giriş noktası arayın). Bu nedenle tüm işlemleri ayırmak istedim. Ancak bir durak ve bir alma koymak, olduğu gibi herkes için zorunludur. Belki de henüz kazmıyorumdur!