Biraz yardım? - sayfa 2

 
WHRoeder :
  1. Tabii ki değil. RTFM. Yalnızca baştan döndüğünüzde yeni bir onay işareti alırsınız.
  2. RTFM ve Test Cihazı sınırlamaları , test cihazında uyuyamazsınız
  3. İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım? - MQL4 forumu


yardımınız için teşekkür ederim, while döngüsünü kaldırdım ve her sipariş yürütmede başlatma işlevine ara verdim, IsTesting işlevini (şimdilik) kaldırdım ve OrderSend'im çalışıyor gibi görünüyor.


Print() işlevi nerede olursa olsun şimdi çalıştırdığımda, günlükte (veya kayıt defterinde) hiçbir şey görünmüyor, ilk sipariş iyi açılıyor ve sonra hiçbir şey yok - kodda bir sonraki satır olarak yazdırma siparişim olsa bile?

 
jwmsb :

yardımınız için teşekkür ederim, while döngüsünü kaldırdım ve her sipariş yürütmede başlatma işlevine ara verdim, IsTesting işlevini (şimdilik) kaldırdım ve OrderSend'im çalışıyor gibi görünüyor.


Print() işlevi nerede olursa olsun şimdi çalıştırdığımda, günlükte (veya kayıt defterinde) hiçbir şey görünmüyor, ilk sipariş iyi açılıyor ve sonra hiçbir şey yok - kodda bir sonraki satır olarak yazdırma siparişim olsa bile?


kodunuz şimdi nasıl görünüyor?
 
Bunun için bir kabus olduğum için üzgünüm! Strateji test cihazındaki hatalar hakkında bilgi bulmaya çalıştım ama googles yardımcı olmuyor :s
 //+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern int z= 1234 ;
int total;
//---
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total= 0 ;
   if ( OrdersTotal ()!= 0 )
      {
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                     
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&( iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 )< iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               if ((OrderType()==OP_SELL)&&( iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 )> iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int i,L;
   if (AccountBalance()> 50 )                                                                                     
   {
//-----
double SMA6= iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ;                                                                                                            
//----
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         Print ( "WE ARE HERE" );
         total+= 1 ;                                                       
      }
       if ((RSI30)&&(SMA6<SMA21))
         {
         OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 0 , 0 , 0 , "" ,z, 0 ,Blue);
         total+= 1 ;
      }  
   }
//---
   if (total!= 0 )
      {
      L= 0 ;
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                    
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);
                     total+=- 1 ;
                     break ;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                 
                     total+=- 1 ;
                     break ;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return ;
}
//-------------------------------------------
 

double, int, string, bool, datetime, color, ........ ne kullanmam gerekiyor ???....

 //-----
double SMA6= iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA6=  " ,SMA6);
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA21=  " ,SMA21);
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
Print ( "RSI70=  " ,RSI70);
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ;
Print ( "RSI30=  " ,RSI30);                                                                                                            
//----

Çift mi ???

         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         Print ( "WE ARE HERE" );

SEEEEEE İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım? - MQL4 forumu

büyük açıklama

Bir işlevin OrderSend() gibi bir int döndürdüğü yerde, işlevin çalışıp çalışmadığını kontrol etmek ve çalışmadıysa günlüklere bir hata bildirmek için bunun gibi bir kod kullanabiliriz. . .

 int TicketNumber;

TicketNumber = OrderSend ( . . . . . . . . );

**(******************* )
   {
   Print (******************);
   }
else
   {
   Print (************************);
   }

. WHRoeder tarafından verdiğiniz bağlantıya bakın ve burada yıldızlarla sakladığımı bulun ......

ayrıca işlemleri kapatmayı kontrol ederek kullanın

Kodunuzun içinde böyle bir şey yapın .... bu şekilde siparişler başarısız olduğunda, hatanın ne tür ve nereden geldiğini bilirsiniz.

.

orderclose başarısız olursa ne olur ......?????

 

Hem RSI hem de MA'lar iki katına çıkar, bu nedenle değişkenlerin de olması gerekir değil mi?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

Baskı hatalarını kodladım, ancak dergiye hiçbir şey yazdırılmıyor, bu yüzden hangi hataların oluştuğunu çözemiyorum? Hala bariz bir şeyi mi kaçırıyorum? Şimdi bir satış açmaya geri döndüm ve sonra kapatamıyorum ...

 //+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern int z= 1234 ;
int total;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total= 0 ;
   if ( OrdersTotal ()!= 0 )
      {
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                     
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&( iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 )< iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               if ((OrderType()==OP_SELL)&&( iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 )> iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return ;
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int ticket,i,L;
   bool x;
   if (AccountBalance()> 50 )                                                                                     
   {
//-----
double SMA6= iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA6 is " ,SMA6);
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA21 is " ,SMA21);
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
Print ( "RSI70 is " ,RSI70);
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ; 
Print ( "RSI30 is " ,RSI30);                                                                                                           
//----
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket= OrderSend ( Symbol (),OP_BUY,v(AccountBalance()),Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         total+= 1 ;                                                       
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }
       if ((RSI30)&&(SMA6<SMA21))
         {
         ticket=OrderSend ( Symbol (),OP_SELL,v(AccountBalance()),Bid, 0 , 0 , 0 , "" ,z, 0 ,Blue);
         total+= 1 ;
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }  
   }
//---
   if (total!= 0 )
      {
      L= 0 ;
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                    
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);
                     if (x== false )
                        {
                         Print ( "Error is " , GetLastError ());
                     }
                     else total+=- 1 ;
                     break ;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);   
                     if (x== false )
                        {
                         Print ( "Error is " , GetLastError ());
                     }
                     else 
                        {
                        total+=- 1 ;
                     }
                     break ;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return ( 0 );
}
//-------------------------------------------------------------------+
double v( double k)
{
   double v=((k* 0.015 )/ 1000 );
   if (v<MarketInfo( Symbol (),MODE_MINLOT))
      {
      v=MarketInfo( Symbol (),MODE_MINLOT);
       return (v);
   }
   else
      {
       return (v);
   }
}
//-------------------------------------------------------------------+
 

duuuhhhh iRSI çift ama karşılaştırma çıktısı 1 - bu yüzden RSI30 ve RSI70'i sadece RSI ile değiştirdim ve bir karşılaştırma yaptım ve tüm işler Yaşasın! HARİÇ SMA6'yı kaydırmak için değiştirdiğimde, her zaman SMA6 = 0 çıkıyor mu? niye ya?

Yardım için hepinize teşekkür ederim! Umarım bir dahaki sefere bu kadar rahatsız etmem!

 
jwmsb :

Hem RSI hem de MA'lar iki katına çıkar, bu nedenle değişkenlerin de olması gerekir değil mi?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

Baskı hatalarını kodladım, ancak dergiye hiçbir şey yazdırılmıyor, bu yüzden hangi hataların oluştuğunu çözemiyorum? Hala bariz bir şeyi mi kaçırıyorum? Şimdi bir satış açmaya geri döndüm ve sonra kapatamıyorum ...

EA'yı bir demo hesap çizelgesine yerleştirin

sadece terminal günlüğüne bakmayın ...
terminal uzmanlarına da bakın .....

orada basılmış ne görüyorsun

 
deVries :

EA'yı bir demo hesap çizelgesine yerleştirin

sadece terminal günlüğüne bakmayın ...
terminal uzmanlarına da bakın .....

orada basılmış ne görüyorsun


Şimdi yazdırıyor ve yürütüyor :) yardımınız için teşekkür ederim - iRSI<70'i çift olarak tanımlamak yanlıştı (çünkü bir karşılaştırmaydı) ve sorunlara neden oluyordum. Şimdi yazdırıyor ve beklendiği gibi çalışıyor, ancak SMA kaydırmasını değiştirirsem baskıları SMA=0?
 
jwmsb :

Şimdi yazdırıyor ve yürütüyor :) yardımınız için teşekkür ederim - iRSI<70'i çift olarak tanımlamak yanlıştı (çünkü bir karşılaştırmaydı) ve sorunlara neden oluyordum. Şimdi yazdırıyor ve beklendiği gibi çalışıyor, ancak SMA kaydırmasını değiştirirsem baskıları SMA=0?

EA'nızın grafiğine aynı ayarlarla bir SMA yerleştirin ve ne yaptığınızı görün ...
 
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket= OrderSend ( Symbol (),OP_BUY,v(AccountBalance()),Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         total+= 1 ;                                                       
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }

Neden toplamınız += 1;

şu anda siparişlerin başarılı olup olmadığını bilmiyorum

ve başarısız olursa, hangi sipariş tipini açmaya çalıştığını göremiyorum, aynı zamanda açmaya çalıştığınız bir satış işlemi de olabilir.