[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 149

 
Vovo4ka :

Beyler, hata nerede, bakın .... aksi halde bir sinyalde birkaç pozisyon açar ve bazen sinyalleri kaçırır .... ve ardından çiftteki stop veya kar tetiklendikten sonra yeni bir tane açar .. ..

Bak... koşullar: RSI'nin alttan seviye 30'un 14 ve 17 periyotları ve üstten seviye 70 ile eşzamanlı geçişi..


A1=diRSI1;
      A2=diRSI2;
neden şartlardan sonra geliyorlar??
 
Vovo4ka :

Beyler, hata nerede, bakın .... aksi halde bir sinyalde birkaç pozisyon açar ve bazen sinyalleri kaçırır .... ve sonra paritedeki stop veya kar tetiklendikten sonra yeni bir tane açar .. ..

Bak... koşullar: RSI'nin 30. seviye yukarı ve 70. seviye aşağı dönem 14 ve 17 ile eşzamanlı geçişi..


 if (( diRSI1< 30 && diRSI2< 30 )){      
         OpenBuy();
         return ( 0 );
      }

       if (diRSI1> 70 && diRSI2> 70 ){
         OpenSell();
         return ( 0 );
      }
Ben bu şekilde yapardım bir de hemen al değil by-stop ve sat değil sat-stop teşhir edilmesini isterim.
 
todem :
Ben bu şekilde yapardım bir de hemen al değil by-stop ve sat değil sat-stop teşhir edilmesini isterim.


Ha... sizin yönteminize göre, 30'un altındaki herhangi bir değerde, bir anlaşma açılır !!!!!!! bu kabul edilemez.... 30. seviyeyi aşağıdan yukarıya geçmem gerekiyor!!!!!

ve değerler

A1=diRSI1;
      A2=diRSI2;

bunlar sadece önceki kapanış mumunun RSI değerleridir....30'dan az olmalıdır!! burada her şey doğru... Anlaşmaların neden bir sinyalle birkaç parça halinde açıldığını anlamıyorum!

 
todem :
Ben bu şekilde yapardım bir de hemen al değil by-stop ve sat değil sat-stop teşhir edilmesini isterim.
 
Vovo4ka :


Ha... sizin yönteminize göre, 30'un altındaki herhangi bir değerde, bir anlaşma açılır !!!!!!! bu kabul edilemez.... 30. seviyeyi aşağıdan yukarıya geçmem gerekiyor!!!!!

ve değerler

bunlar sadece önceki kapanış mumunun RSI değerleridir....30'dan az olmalıdır!! burada her şey doğru... Anlaşmaların neden bir sinyalle birkaç parça halinde açıldığını anlamıyorum!

Sizin için bir anlaşma açabilmesi için bu geçişi elde etmek istiyorsanız, bu işe yaramaz - bu sizin için 386 bilgisayar, ancak 1 saniyede bir milyon opera gerçekleştiren çok daha hızlı. Bir anlaşmanın açılmasının kontrolü, daha önce açılmış olan anlaşmaların kontrol edilmesiyle yapılır. Sadece 0 fırsat varsa, o zaman açın, değilse, o zaman etkinleştirin.
 
todem :
Sizin için bir anlaşma açabilmesi için bu geçişi elde etmek istiyorsanız, bu işe yaramaz - bu sizin için 386 bilgisayar, ancak 1 saniyede bir milyon opera gerçekleştiren çok daha hızlı. Bir anlaşmanın açılmasının kontrolü, daha önce açılmış olan anlaşmaların kontrol edilmesiyle yapılır. Sadece 0 fırsat varsa, o zaman açın, değilse, o zaman etkinleştirin.


Hmm... Asıl mesele bu, eğer bir milyon işlem varsa, o zaman bir anlaşma açılmalı....sonuçta, algoritma aynen böyle...

tamam, bir iş parçacığı gibi çözeceğim)) işlemleri kontrol ederken bir kod varsa, o zaman bana ver ... pliz))

 
Vovo4ka :


Hmm... Asıl mesele bu, eğer bir milyon işlem varsa, o zaman bir anlaşma açılmalı....sonuçta, algoritma aynen böyle...

tamam, bir iş parçacığı gibi çözeceğim)) işlemleri kontrol ederken bir kod varsa, o zaman bana ver ... pliz))

 int OrdCon( int nap, int MGV)
  {
     int result= 0 ;
     for ( int i= 0 ;i< OrdersTotal ();i++) {
       OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
       if ((nap== 0 ) && (OrderSymbol() == Symbol ())&& (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открыт ордер бай 
      }
       if ((nap== 1 ) && (OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открытый ордер селл 
      }
    }
     return (result); // 0 means we have no trades
  }
işte fonksiyon
 
todem :
işte fonksiyon

       if ((nap== 0 ) && (OrderSymbol() == Symbol ())&& (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открыт ордер бай 
      }
       if ((nap== 1 ) && (OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открытый ордер селл 
      }

ve bu yerde, aslında, hangi temelde açık bir emrin bir satış veya bir satın alma olduğu sonucuna varılır?

İşte yukarıdaki kodun tamamı:

 int OrdCon( int nap, int MGV)
  {
     int result= 0 ;
     for ( int i= 0 ;i< OrdersTotal ();i++) {
       OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
       if ((nap== 0 ) && (OrderSymbol() == Symbol ())&& (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открыт ордер бай 
      }
       if ((nap== 1 ) && (OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MGV)) {
        result=result+ 1 ; // открытый ордер селл 
      }
    }
     return (result); // 0 means we have no trades
  }
 

Burada, Uzman Danışmanımın yardımıyla RSI'nızı optimize ettim

 
//+------------------------------------------------------------------+
//|                                               20/200 expert.mq4  |
//|                                                    1H   EUR/USD  |
//|                                                    Smirnov Pavel |
//|                                                 www.autoforex.ru |
//+------------------------------------------------------------------+

#property copyright "Smirnov Pavel"
#property link       "www.autoforex.ru"

extern int TakeProfit = 20 ; // Уровень тейкпрофит в пунктах
extern int StopLoss = 200 ; // уровень стоплосс в пунктах
extern int TradeTime= 18 ;
extern int t1= 7 ;
extern int t2= 2 ;
extern int delta= 7 ;
extern int dayout= 1 ;
extern double lot = 0.1 ;

int ticket;
bool cantrade=true;

int OpenLong( double volume= 0.1 )
{
   int slippage= 10 ;
   string comment= "20/200 expert (Long)" ;
   color arrow_color= Red ;
   int magic= 0 ;

  ticket= OrderSend ( Symbol (),OP_BUY,volume,Ask,slippage,Ask-StopLoss* Point ,
                      Ask+TakeProfit* Point ,comment,magic, 0 ,arrow_color);
   if (ticket> 0 )
  {
     if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES))
    {
       Print ( "Buy order opened : " ,OrderOpenPrice());
       return ( 0 );
    }  
  }
   else 
  {
     Print ( "Error opening Buy order : " , GetLastError ()); 
     return (- 1 );
  }
}
  
int OpenShort( double volume= 0.1 )
{
   int slippage= 10 ;
   string comment= "20/200 expert (Short)" ;
   color arrow_color= Red ;
   int magic= 0 ;  
  
  ticket= OrderSend ( Symbol (),OP_SELL,volume,Bid,slippage,Bid+StopLoss* Point ,
                      Bid-TakeProfit* Point ,comment,magic, 0 ,arrow_color);
   if (ticket> 0 )
  {
     if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES))
      {
         Print ( "Sell order opened : " ,OrderOpenPrice());
         return ( 0 );
      }  
  }
   else 
  {
     Print ( "Error opening Sell order : " , GetLastError ()); 
     return (- 1 );
  }
}

int init()
{
   return ( 0 );
}

int deinit()
{   
   return ( 0 );
}

int start()
{
   if ((TimeHour( TimeCurrent ())>TradeTime)) cantrade=true;  
   // проверяем есть ли открытые ордера ...
   if ( OrdersTotal ()< 1 )
  {
     // ... если нет ни одного открытого ордера, то идем дальше
     // проверяем настало ли время для торговли
     if ((TimeHour( TimeCurrent ())==TradeTime)&&(cantrade)&&(TimeDayOfWeek( TimeCurrent ())!=dayout))
    {
       // ... если настало время, то
       if ((Open[t1]-Open[t2])>delta* Point ) //Если цена изменилась на величину delta
      {
         //условие выполнено значит входим в короткую позицию:
         // проверяем есть ли свободные деньги для открытия короткой позиции
         if (AccountFreeMarginCheck( Symbol (),OP_SELL,lot)<= 0 || GetLastError ()== 134 )
        {
           Print ( "Not enough money" );
           return ( 0 );
        }
        OpenShort(lot);
        cantrade=false; //запрещаем торговать повторно до следующего бара
         return ( 0 );
      }
       if ((Open[t2]-Open[t1])>delta* Point ) //Если цена изменилась на величину delta
      {
         // условие выполнено значит входим в длинную позицию
         // проверяем есть ли свободные деньги на счету
         if (AccountFreeMarginCheck( Symbol (),OP_BUY,lot)<= 0 || GetLastError ()== 134 )
        {
           Print ( "Not enough money" );
           return ( 0 );
        }
        OpenLong(lot);
        cantrade=false;
         return ( 0 );
      }
    }
  }   
   return ( 0 );
}
Bu danışmanı nasıl buldunuz?