[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 240

 
hangi sayfa bulamadım
 
1Rakso писал(а) >>
hangi sayfa bulamadım

Onu da bulamadım. Bu yüzden önemli değil.

Açılış fiyatlarında çalışıyorsanız, yeni bar açılışlarını kontrol etmeniz yeterlidir.

 int start ( ) {
   if ( ! NevBar ( ) ) return ( 0 ) ;
  
   //.......
  
   return ( 0 ) ;
}

bool NevBar ( ) {
   static int prevtime = 0 ;
   if ( prevtime = = Time [ 0 ] ) return ( false ) ;
  prevtime = Time [ 0 ] ;
   return ( true ) ;
}

Aşağı yukarı böyle. Ve diğer fiyatlarla açılış mümkünse. Başka mekanizmalar kullanmanız gerekir.

Bir sembol ve zaman çerçevesi için yalnızca bir pozisyon açılabilirse, açık pozisyonların sayısını kontrol etmeniz gerekir.

 int CountOrder [ 6 ] ;

// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.
//===============================================================================
int Order_Count_Calculate ( string _Symbol , int _Magic , int _OP = - 1 ) {
   ArrayInitialize ( Order_Count , 0 ) ;
   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 ;
      Order_Count [ OrderType ( ) ] + + ;
   }
   if ( _OP > = 0 ) return ( Order_Count [ _OP ] ) ;
   return ( 0 ) ;
}

Şimdi istenilen dizi elemanının değerlerini kontrol ederek bu türden kaç tane pozisyonun açık olduğunu biliyoruz.

 
rid >> :

Örneğin (satın alma durağı ayarlama örneği):

(Gecikme ayarlamak için kurulum fiyatının teklif akışında olması kesinlikle gerekli değildir.

Mevcut fiyattan dans edebilir veya herhangi bir fiyatı alabilirsiniz, böylece sadece bu DC'de izin verilen durma seviyesi gözlemlenir, MEVCUT FİYATTAN GECİKMEYİ AYARLAMA FİYATIna kadar)

( 'EURUSD - Eğilimler, Tahminler ve Etkiler' )

Yerine

çift fiyatAL=....... ....

formülünüzü girin

EH ... özellikle ekli kod için çok teşekkürler! Sadece doktorun emrettiği şey! ))))

 
Vinin >> :

Onu da bulamadım. Bu yüzden önemli değil.

Açılış fiyatlarında çalışıyorsanız, yeni bar açılışlarını kontrol etmeniz yeterlidir.

Aşağı yukarı böyle. Ve diğer fiyatlarla açılış mümkünse. Başka mekanizmalar kullanmanız gerekir.

Bir sembol ve zaman dilimi için yalnızca bir pozisyon açılabilirse, açık pozisyonların sayısını kontrol etmeniz gerekir.

Şimdi istenilen dizi elemanının değerlerini kontrol ederek bu türden kaç tane pozisyonun açık olduğunu biliyoruz.

Vinin! Teşekkür ederim!
 
total = OrdersTotal ( ) ;
short = TRUE ;
long = TRUE ;
                      for ( int cnt = 0 ; cnt < total ; cnt + + ) {
                       OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
                       if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = MagicNumber ) {
                       if ( OrderType ( ) = = OP_SELL ) short = FALSE ;
                       if ( OrderType ( ) = = OP_BUY ) long = FALSE ;
                       }
                       }
                    
                     

Şimdi koda şöyle yazdım, bu diziyle çözemiyorum, bu barda zaten bir sipariş olduğunu ve kapandığını nasıl belirleyecek ve yeni bir bar bekleyeceğiz?

nasıl açıklanır, muhtemelen kendimi doğru ifade edemedim veya muhtemelen işlevi anlamadım ....

1) sıfır çubuğunda bir emir açıldığını ve kapandığını varsayalım, o zaman bu çubukta bir emir açmıyoruz, açılma sinyali olsa bile, bu çubukta zaten bir anlaşma olduğu ve kapandığı için, biz bir sonraki bar için bekliyorum.

Her çubukta sadece bir ticarete izin verilir, bu çubukta bir ticaret varsa, sipariş açmıyoruz, nasıl yapılır ???

İnsanlara yardım et .....))) Zaten bir çatım var \\\\\\\\>>>>

 
1Rakso писал(а) >>

Şimdi koda şöyle yazdım, bu diziyle çözemiyorum, bu barda zaten bir sipariş olduğunu ve kapandığını ve yeni bir bar bekleyeceğimizi nasıl anlayacak?

nasıl açıklanır, muhtemelen kendimi doğru ifade edemedim veya muhtemelen işlevi anlamadım ....

1) sıfır çubuğunda bir emir açıldığını ve kapandığını varsayalım, o zaman bu çubukta bir emir açmıyoruz, açılma sinyali olsa bile, bu çubukta zaten bir anlaşma olduğu ve kapandığı için, biz bir sonraki bar için bekliyorum.

Her çubukta sadece bir ticarete izin verilir, bu çubukta bir ticaret varsa, sipariş açmıyoruz, nasıl yapılır ???

İnsanlara yardım et .....))) Zaten bir çatım var \\\\\\\\>>>>

Igor KIM'in 'KimIV'ten Faydalı özellikler' başlığına bakın . Fonksiyonlardan biri sorunuza cevap verecektir.

 

Uzman Danışman yazmaya çalışıyorum... Daha yeni öğrenmeye başlıyorum... test cihazında 4062 hatası görünüyor ...(ERR_STRING_PARAMETER_EXPECTED - 4062 - Bir dize parametresi bekleniyor)

Nereden editleyeceğimi bulamıyorum. Belki yerelden biri koda bakar? :)

 extern double Lots = 0.9 ;        //лот
extern double StopLoss = 70 ;
extern double DecreaseFactor = 80 ;
extern double MaximumRisk    = 0.014 ;
extern double MaximumLots    = 100 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetSizeLot ( ) //оптимизация лотов
  {
   double Lot = Lots ;
   int cycle ;
   int prof = 0 ;
   int orders = HistoryTotal ( ) ;     // history orders total
   int losses = 0 ;                  // number of losses orders without a break
   int vinn = 0 ;
   int i = orders ;
//---- select lot size
  Lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 100 , 1 ) ;
//----
   if ( AccountFreeMargin ( ) < = 14 ) 
       DecreaseFactor = 14 ;
//----
   if ( AccountFreeMargin ( ) > 10000 ) 
       DecreaseFactor = 60 ;
//----
   if ( DecreaseFactor > 0 & & orders > DecreaseFactor )
     {
       //----
       for ( cycle = 1 ; cycle < DecreaseFactor ; cycle + + )
         {
           i - - ;
           //----
           if ( OrderSelect ( i , SELECT_BY_TICKET , MODE_HISTORY ) = = false ) 
             { 
               Print ( "Error in history!" ) ; 
               break ; 
             } 
           //----
           if ( OrderCloseTime ( ) > 0 )
             {
               prof = prof + OrderProfit ( ) ; 
               if ( OrderProfit ( ) < = 0 ) 
                   losses + + ;
               else 
                   vinn + + ;
             }
         }  
       if ( prof < = 0 & & losses > vinn ) 
           Lot = 0.1 ;
       if ( prof < = 0 & & vinn > losses ) 
           Lot = Lot - ( 0.1 * losses ) ;
       if ( prof > 0 & & losses > vinn ) 
         {
           Lot = Lot + ( 0.1 * NormalizeDouble ( vinn / 4 , 0.1 ) ) ;
         }
       if ( prof > 0 & & losses < = vinn )
         {
           Lot = Lot + ( 0.1 * NormalizeDouble ( vinn / 2 , 0.1 ) ) ;
         }
     } 
   if ( AccountFreeMargin ( ) < 300 | | Lot < 0.1 ) 
       Lot = 0.1 ;
   if ( Lot * 1275 > = AccountFreeMargin ( ) ) 
       Lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 100 , 1 ) ;
   if ( MaximumLots ! = 0 & & Lot > MaximumLots ) 
       Lot = MaximumLots ;
   if ( DecreaseFactor > orders ) 
       Lot = Lots ;
   return ( Lot ) ;
  }  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
int start ( )
  {
  double glav1 , sig1 , glav2 , sig2 ;
  int cnt , ticket , total ;
glav1 = iCustom ( NULL , 0 , "i_Trend" , 0 , 1 ) ;
sig1 = iCustom ( NULL , 0 , "i_Trend" , 1 , 1 ) ; 
glav2 = iCustom ( NULL , 0 , "i_Trend" , 0 , 2 ) ;
sig2 = iCustom ( NULL , 0 , "i_Trend" , 1 , 2 ) ; 
   total = OrdersTotal ( ) ;  // проверяем есть ли открытые позиции
   if ( total < 1 ) 
     {
       if ( AccountFreeMargin ( ) < ( 500 * Lots ) )  // проверяем денежки на счету
         {
           Print ( "Денег почти нет, осталось всего: " , AccountFreeMargin ( ) ) ;
           return ( 0 ) ;  
         }
                  }
       // проверяем открытие позиции на покупку
       if ( ( glav2 < sig2 )  & &
          ( glav1 > sig1 ) )
         {
         OrderSend ( Symbol ( ) , OP_BUY , GetSizeLot ( ) , Ask , 3 , Ask - StopLoss * Point , "AlanMod expert" , 16384 , 0 , Green ) ;
          return ( 0 ) ; 
          }
           // проверяем возможность открытия на продажу
           if ( ( glav2 > sig2 )  & &
          ( glav1 < sig1 ) )
             {
             OrderSend ( Symbol ( ) , OP_SELL , GetSizeLot ( ) , Bid , 3 , Bid + StopLoss * Point , "AlanMod expert" , 16384 , 0 , Red ) ;
               return ( 0 ) ; 
             }
          for ( cnt = 0 ; cnt < total ; cnt + + )
     {
           OrderSelect ( cnt , SELECT_BY_POS , MODE_TRADES ) ;
       if ( OrderType ( ) < = OP_SELL & &   // проверка открытой позиции 
          OrderSymbol ( ) = = Symbol ( ) )  // проверка с нашего ли она графика
         {
           if ( OrderType ( ) = = OP_BUY )    // если открыта позиция на покупку
             {
                            if ( glav1 < sig1 ) // проверяем закрывать или нет?
                 {
                                    OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Violet ) ; // закрыли
                   return ( 0 ) ;  // сваливаем
                 }
                              }
           else // если эта позиция на продажу
             {
             if ( glav1 > sig1 ) //проверяем закрывать иль нет?
         {
         OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Violet ) ; // закрыли
        return ( 0 ) ; // сваливаем
        }
      }
    }
  }
}
 
Reys >> :

Bir Uzman Danışman yazmaya çalışıyorum... öğrenmeye yeni başlıyorum... test cihazında 4062 hatası görünüyor...(ERR_STRING_PARAMETER_EXPECTED - 4062 - Bir dize türü parametresi bekleniyor)

Nereden editleyeceğimi bulamadım. Belki yerelden biri koda bakar? :)

1) double NormalizeDouble (çift değer, int basamak) ve sahip olduğunuz (vinn/2, 0.1)

2) OrderSend ( Symbol ( ) , OP_BUY , GetSizeLot ( ) , Ask , 3 , Ask - StopLoss * Point , EKSİK PARAMETRE take_profit, "AlanMod uzmanı" , 16384 , 0 , Yeşil ) ;

 
Teşekkür ederim, sadece seni düşündüm
 

özel göstergelerdeki arabelleklere nasıl ad atayacağımı söyle?