[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 478

 
Duraklat-Break düğmesine basmanın bu öykünmesiyle baş edemiyorum, çalışmıyor bile!
 //+------------------------------------------------------------------+
//|                                                     советник.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

#include <WinUser32.mqh>
   extern double   lot= 1 ;                          
   extern int taymfreym= 0 ;                           
   extern double   stoplos= 20 ;                          
   extern double   takeprofit= 50 ; 
   extern double   magicnumber= 350 ;                          


void BreakPoint(){ if (! IsVisualMode ()) return ( 0 );keybd_event( 19 , 0 , 0 , 0 );
Sleep ( 10 );
keybd_event( 19 , 0 , 2 , 0 );}

//+------------------------------------------------------------------+
//| expert initialization function                                   |
----------------------------------+
int start()
  {
//----

            
             double strela1 = iCustom ( NULL , taymfreym, "индикатор" , 2 , 1 );
             double strela2 = iCustom ( NULL , taymfreym, "индикатор" , 3 , 1 );
            
             int BUY= 0 ,SELL= 0 ; int ticket; 
             Print (   " strela1 " , strela1 , "   strela2  " , strela2 );BreakPoint();
            
    
            
             for ( int i= 1 ; i<= OrdersTotal (); i++) {  
             if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if ( OrderSymbol ()!= Symbol ( ) ) continue ;       // Не наш фин. инструм
         if ( OrderMagicNumber ( ) !=magicnumber) continue ;
         if ( OrderType ()== 0 ){ BUY++; ticket= OrderTicket ( );}
         if ( OrderType ()== 1 ) {SELL++;ticket= OrderTicket ( );}    } }
         
   if (strela1>strela2&&BUY== 0 &&SELL== 0 ){    
            
           OrderSend ( NULL , OP_BUY, lot, Ask, 3 , NormalizeDouble ( Bid- (stoplos* Point ), Digits ),  
 NormalizeDouble ( Ask+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE );  
             Print ( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError ());BreakPoint(); }
           
   if (strela1<strela2&&BUY== 0 &&SELL== 0 ){  
   
             OrderSend ( NULL , OP_SELL, lot, Bid, 3 , NormalizeDouble ( Ask- (stoplos* Point ), Digits ),  
 NormalizeDouble ( Bid+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE ) ; 
             Print ( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError ());BreakPoint(); }
 
AA! 2012.10.30 14:07:08 2012.06.05 05:30 EA EURUSD,M30: dll aramalarına izin verilmez; 'user32.dll'-'keybd_event' Sanırım çözdüm. dll nasıl çözülür???
 
Hayır, bu normal!
 
Tamponlar her zaman test 0'dadır!! Cehenneme kadar, gerçek hayatta test edeceğim - 200 bar geriye bir handikap döngüsü yazacağım ve giriş noktaları arayacağım!
 
Kusura bakmayın yarım saattir parantezler benimkilerde dengeli değil ya da bunu nasıl anlayabilirim ??? Baskıları girdim ve havalandı ... Derleme yapmıyor ama böyle yemin ediyor '\end_of_program' - dengesiz sol parantez C:\Àëpári\experts\syvetnik.mq4 (94, 1)
 
Burada, özür dilerim .. Parantezleri 8 kez tekrar okudum - iyi dengelenmiş! Dengeli! Ya da değil??
 //+------------------------------------------------------------------+
//|                                                     советник.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

#include <WinUser32.mqh>
   extern double   lot= 1 ;                          
   extern int taymfreym= 0 ;                           
   extern double   stoplos= 20 ;                          
   extern double   takeprofit= 50 ; 
   extern double   magicnumber= 350 ;                          


void BreakPoint(){ if (! IsVisualMode ()) return ( 0 );keybd_event( 19 , 0 , 0 , 0 );
Sleep ( 10 );
keybd_event( 19 , 0 , 2 , 0 );}

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   Print (   "  init " ); 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  { Print (   "  Начало " ); 
//----
for ( int A= 0 ; A< 100 ; A++){
            
             double strela1 = iCustom ( NULL , taymfreym, "индикатор" , 2 , A);
             double strela2 = iCustom ( NULL , taymfreym, "индикатор" , 3 , A);
            
             int BUY= 0 ,SELL= 0 ; int ticket; 
             Print ( A,   "  strela1 " , strela1 , "    strela2  " , strela2 ); 
            
    
            
             for ( int i= 1 ; i<= OrdersTotal (); i++) {  
             if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if ( OrderSymbol ()!= Symbol ( ) ) continue ;       // Не наш фин. инструм
         if ( OrderMagicNumber ( ) !=magicnumber) continue ;
         if ( OrderType ()== 0 ){ BUY++; ticket= OrderTicket ( );}
         if ( OrderType ()== 1 ) {SELL++;ticket= OrderTicket ( );}    } }
         
   if (strela1>strela2&&BUY== 0 &&SELL== 0 )    {    
            
           OrderSend ( Symbol ( ), OP_BUY, lot, Ask, 3 , NormalizeDouble ( Bid- (stoplos* Point ), Digits ),  
          NormalizeDouble ( Ask+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE ); 

 
             Print (
          "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError ()  , "  Ask " ,Ask,
     "   NormalizeDouble( Bid- (stoplos*Point),Digits)  " , NormalizeDouble ( Bid- (stoplos* Point ), Digits ), "  
         NormalizeDouble( Ask+( takeprofit*Point),Digits) " , NormalizeDouble ( Ask+( takeprofit* Point ), Digits )); }
           
   if (strela1<strela2&&BUY== 0 &&SELL== 0 ){  
   
             OrderSend ( Symbol ( ), OP_SELL, lot, Bid, 3 , NormalizeDouble ( Ask- (stoplos* Point ), Digits ),  
           NormalizeDouble ( Bid+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE ) ; 
             Print ( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError ()  , "  Bid " ,Bid,
   "   NormalizeDouble( Ask- (stoplos*Point),Digits)  " , NormalizeDouble ( Ask- (stoplos* Point ), Digits ),
  "    NormalizeDouble( Bid+( takeprofit*Point),Digits) " , NormalizeDouble ( Bid+( takeprofit* Point ), Digits ); }
            
 
    if (strela1>strela2&&BUY== 0 &&SELL!= 0 ){ 

         OrderSelect (ticket, SELECT_BY_TICKET);
       OrderClose (  ticket , OrderLots ( ) , OrderOpenPrice ( ) , 3 , CLR_NONE );                 
       OrderSend ( Symbol ( ), OP_BUY, lot, Ask, 3 , NormalizeDouble ( Bid- (stoplos* Point ), Digits ), 
       NormalizeDouble ( Ask+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE );           
       Print ( "strela1>strela2&&BUY==0&&SELL!=0 " , GetLastError ());BreakPoint(); }
            

   if (strela1<strela2&&SELL== 0 &&BUY!= 0 ){ 
   OrderSelect (ticket, SELECT_BY_TICKET);
   OrderClose (  ticket , OrderLots ( ) , OrderOpenPrice ( ) , 3 , CLR_NONE );                 
   OrderSend ( Symbol ( ), OP_SELL, lot, Bid, 3 , NormalizeDouble ( Ask- (stoplos* Point ), Digits ),  
 NormalizeDouble ( Bid+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE ) ; 
         Print ( "strela1<strela2&&SELL==0&&BUY!=0 " , GetLastError ());BreakPoint(); }
      
      
            
     } Print (   "  Конец " );      
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Dimka-novitsek :
Kusura bakmayın yarım saattir parantezler benimkilerde dengeli değil ya da bunu nasıl anlayabilirim ??? Baskıları girdim ve havalandı ... Derleme yapmıyor ama böyle yemin ediyor '\end_of_program' - dengesiz sol parantez C:\Àëpári\experts\syvetnik.mq4 (94, 1)

ilk bakışta, en son küme ayracı eksik (main() işlevi için)

kodunuz bir dal ile bitiyor

   if (strela1<strela2&&BUY== 0 &&SELL== 0 ){  
   
             OrderSend ( NULL , OP_SELL, lot, Bid, 3 , NormalizeDouble ( Ask- (stoplos* Point ), Digits ),  
 NormalizeDouble ( Bid+( takeprofit* Point ), Digits ), NULL , magicnumber, 0 , CLR_NONE ) ; 
             Print ( "strela1<strela2&&BUY==0&&SELL==   " , GetLastError ());BreakPoint(); }

ps bu yukarıdaki kod içindir

 
Teşekkürler!! Şimdi, koda baksam iyi olur... Sonra parantezleri bir kağıt üzerinde saydım, dengelenmişler !!
 
Şube nerede? Yoksa ben mi aptalım... Ne de olsa şu şartlar altında sipariş açıyoruz!
 
drknn :

...

Gerçeği elde etmek için karmaşık bir yolunuz var. İnsanlara sorunu formüle ederseniz eminim size daha basit bir çözüm yolu söyleyeceklerdir.

not

Bir sorunun tüm çözümleri arasında en basitini bulmak her zaman en zorudur, çünkü onu bulmak için yeniden çalışmanız ve bir sürü çöpü ayıklamanız gerekir. Bu yüzden formüle etmekten çekinmeyin - basit bir çözüm, hızlı bir çözüm anlamına gelmez. Belki buradaki insanlar seni 1 günden fazla kurtarır.


İyi. Ben sorunun özünü anlatmaya çalışacağım, belki birileri size anlatır veya daha basit bir şekilde uygulamanıza yardımcı olur.

Dakika çizelgesi üzerinde çalışıyoruz. 29.10.12 tarihinde saat 00:00'da grafikte bir dakika çubuğu (yüksek + düşük / 2 - çubuğun ortalama değeri) alıyoruz - bu başlangıç noktası olacaktır.

Ardından, bu fiyattan 10 puan yukarı sapmayı kontrol ederiz (her doğru sapma +1 olacaktır).

Başlangıç noktasından 10 puanlık bir fiyat artışına ulaştığımızda - sayaç +1; ve sapmaları sadece 10 puan sapmaya ulaştığımız noktadan daha fazla kontrol etmeye başlayın ve bir sonraki fiyat artışını 10 puan bekleyin.

Örneğin, şunu elde ederiz:

If (başlangıç noktası) + 10 pip <= fiyatlar (başlangıç noktasından sonraki tüm çubuk fiyatlarını kullanırız.) Sayaç = sayaç +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - (başlangıç noktası + 10 puan).

Eğer ( başlangıç noktası + 10 puan ) + 1 0 puan <= fiyatlar (başlangıç noktasından sonraki tüm çubuk fiyatları kullanırız.) Sayaç = sayaç +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - ( başlangıç noktası + 10 puan ) + 10 puan .

if ( başlangıç noktası + 10 pip + 1 0 pip) + 10 pip <= fiyatlar (başlangıç noktasından sonraki tüm bar fiyatlarını kullanırız.) Counter= counter +1 alırız; Ve başlangıç noktasına zaten bu yerden başlıyoruz - ( başlangıç noktası + 10 puan + 10 puan) + 10 puan .  

vb...

10'a eşit bir sayaca ulaşana kadar ( sayaç == 10 ).

Ve oluşan her yeni dakika çubuğu (yüksek+düşük/2 - çubuğun ortalama değeri) bu koşul için kontrol edilir ve 10'a eşit sayaca ulaşana kadar bekleriz ( sayaç == 10 ). Diyelim ki iki gün geçti, her yeni oluşan çubuğu kontrol ettik ve koşullar doğruysa kaydırdık ....

Ve sayaca =10'a geldiğimizde - "Sayaç == 10" mesajını görüntülüyoruz. Başlangıç noktasını, kullanıcı tarafından orijinal olarak ayarlanandan 2 gün ileriye kaydırıyoruz, yani. 29/10/12 saat 00:00'dan 31/10/12 saat 00:00'a kadar ve döngüyü tekrarlayın.

Döngüyü tekrarlıyoruz ve böylece programa göre hareket ediyoruz.

Onlar. yeni şekillendirilmiş çubukları almanız gerekiyor, bunları dişe göre alın (yüksek+düşük/2 - çubuğun ortalama değeri). Ve koşulları kontrol edin ve koşullar doğruysa yukarıda yazıldığı gibi kaydırın.

Bir dizi üzerinden uygulamaya çalıştım, çok kafa karıştırıcı çıkıyor ve yanlış değerler veriyor!! Bu algoritmanın nasıl uygulanacağına yardım edin!