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

 
costy_ >> :

Açık ma1'in üzerindeyken satın almalı.

|| içindeki "barabashka"nın, çünkü Örneğin "if" (ma1>ma2&&ma1>Open[1] "veya" ma1>ma3&&ma1>Open[1]) "then" Open BY();


Program, tüm koşulların karşılanmadığını gösteriyor !!!


Başka bir mum 53 alışverişinde denedim.


Mantık başka hangi yolla uygulanabilir?


Kod parçanızda çok sayıda hata var.

Hepsini açıklayın ve neden böyle olduğunu ve başka türlü olmadığını açıklayın .... Çok fazla zamanım yok.

Şimdilik düzelteceğim tek şey:

 if ( ( ma1 > ma2 & & ma1 > ma3 & & Open [ 1 ] > ma1 ) | | 
    ( ma2 > ma1 & & ma2 > ma3 & & Open [ 1 ] > ma1 ) | |
    ( ma3 > ma1 & & ma3 > ma2 & & Open [ 1 ] > ma1 )
  )
  OpenBuy ( ) ;
Belki zamanı gelince daha fazlasını anlatırım....
 
anladım teşekkürler
 if ( ( ma1 > ma2 & & ma1 > ma3   & & Open [ 1 ] > ma1 ) | | 
     ( ma2 > ma1 & & ma2 > ma3   & & Open [ 1 ] > ma1 ) | |
     ( ma3 > ma1 & & ma3 > ma2   & & Open [ 1 ] > ma1 )
   )
    OpenBuy ( ) ;

ama yapmalısın

 if ( ma1 > ma2 & & ma1 > ma3 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
if ( ma2 > ma1 & & ma2 > ma3 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
if ( ma3 > ma1 & & ma3 > ma2 & & Open [ 1 ] > ma1 )
OpenBuy ( ) ;
 
costy_ >> :

ama yapmalısın

Aynı şey, sadece ilk versiyon daha kısa.

 
MrSoros >> :

Aynı şey, sadece ilk versiyon daha kısa.

Ne yazık ki, ilk seçenek grafikte düzgün çalışmadı (hepsi garip).

Birincisi kesinlikle daha güzel ve mantık böyle, önce toplama sonra çarpma gibi. =))

 
MrSoros >> :

Her şey işaretlerle doğru.

Fikrin kendisi (CCİ'ye göre kapanış), benim açımdan çok sıcak değil ....

Ben bunu çoktan geçtim...

Ama bu bir strateji meselesi.

Kaç tüccar, çok strateji...


Hayır, algoritma böyle çalışmıyor, şimdi kâr 10pp'den fazlaysa SGK'da kapanıyor, ancak tam olarak 10pp kâr seviyesine ihtiyacım var, sadece kapanışta kapatmak için, kâr 10pp'den fazlaysa, o zaman SGK'da kapatılmamalıdır. Şimdi kâr fiyatı 10pp'den fazla ise SGK tarafından kapanıyor(

Bu fonksiyondaki algoritmanın anlamı farklıdır, 10pp'lik bir kar seviyesi vardır - yani, SGK göstergesinin yönünün durumuna göre maddeye göre sabitlenmiş sanal bir kâr. Fiyat kara girdiğinde, SGK doğru göründüğü gibi daima bu seviyeyi geçer, daha sonra bu seviyeyi geçtikten sonra, fiyat bazen fiyat dönüşünü orijinal durumuna geri döndürür veya hareket yönünde değişir - bu durumda, SGK her zaman diğer yöne bakar ve 10pp seviyesinde ters yönden geçerken SGK ters yöne bakacağı için sıra sabitlenir.

   if ( OrderType ( ) = = OP_BUY & & cci_0 < cci_1 & & Bid - OrderOpenPrice ( ) > = Point * profit ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , slip , Blue ) ;
   if ( OrderType ( ) = = OP_SELL & & cci_0 > cci_1 & & OrderOpenPrice ( ) - Ask > = Point * profit ) OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , slip , Red ) ;

  

  cci_0 < cci_1 & & Bid - OrderOpenPrice ( ) = = Point * profit // может вот так? - так вообще не работает(
 

Merhaba.

Parti büyüklüğünün bakiyenin yüzdesi olarak doğru hesaplanıp hesaplanmadığına bakın:

 //расчёт размера лота
double Lots ( )
   {
   double ls = MarketInfo ( Symbol ( ) , MODE_MINLOT ) + MarketInfo ( Symbol ( ) , MODE_LOTSTEP ) * MathFloor ( ( procentdepo * AccountBalance ( ) / 100000 - MarketInfo ( Symbol ( ) , MODE_MINLOT ) ) / MarketInfo ( Symbol ( ) , MODE_LOTSTEP ) ) ;
     if ( ls > MarketInfo ( Symbol ( ) , MODE_MAXLOT ) )    { ls = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ; }
     if ( ls < MarketInfo ( Symbol ( ) , MODE_MINLOT ) )    { ls = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ; }
   return ( ls ) ;
   }

nerede yüzdedepo - mevduatın %'si

 
Piboli >> :

Merhaba.

Parti büyüklüğünün bakiyenin yüzdesi olarak doğru hesaplanıp hesaplanmadığına bakın:

nerede yüzdedepo - mevduatın %'si

Bunu böyle yap.

 extern double PercentLots   = 0.5 ; // внешние переменные


//то что ниже закиньте в конец кода
double GetLots ( ) 
{
double minlot = MarketInfo ( Symbol ( ) , MODE_MINLOT ) ;
double maxlot = MarketInfo ( Symbol ( ) , MODE_MAXLOT ) ;

if ( PercentLots ! = 0 )
 {
   double lot = NormalizeDouble ( AccountBalance ( ) * PercentLots   / 1000.0 / 100.0 , 2 ) ;
   if ( lot < minlot ) lot = minlot ;
   if ( lot > maxlot ) lot = maxlot ;
   }
   else lot = Lots ; 
   return ( lot ) ;
   }   

//GetLots() - вставьте в ticket=OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,stop,Ask+Takeprofit*Point,"",MagicNumber,0,Green);
 
Piboli >> :

Merhaba.

Parti büyüklüğünün bakiyenin yüzdesi olarak doğru hesaplanıp hesaplanmadığına bakın:

nerede yüzdedepo - mevduatın %'si

ama bunun yerine, bu lot optimizasyon işlevini kullanın, MM burada çalışır, eğer ticaret kaybı varsa, lot ilkine düşecektir.

 //внешние переменные
extern double Lots = 0.1 ;            //стартовый лот до баланса 500
extern double MaximumRisk = 0.1 ;    //увеличение лота на каждые 500 баланса
extern double DecreaseFactor = 3.0 ; //уменьшение лота при серии убыточных позиций


//то что ниже  закиньте перед стартом
double LotsOptimized ( ) {
       double lot = Lots ;
       int orders = OrdersHistoryTotal ( ) ;
       int losses = 0 ;
       lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / 500.0 , 2 ) ;
       if ( DecreaseFactor > 0.0 ) {
for ( int i = orders - 1 ; i > = 0 ; i - - ) {
       if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) = = FALSE ) {
       Print ( "Error in history!" ) ;
       break ;
       }
if ( OrderSymbol ( ) ! = Symbol ( ) | | OrderType ( ) > OP_SELL ) continue ;
if ( OrderProfit ( ) > 0.0 ) break ;
if ( OrderProfit ( ) < 0.0 ) losses + + ;
}
if ( losses > 1 ) lot = NormalizeDouble ( lot - lot * losses / DecreaseFactor , 2 ) ;
}
if ( lot < 0.1 ) lot = 0.1 ;
if ( lot > 1000.0 ) lot = 1000 ;
return ( lot ) ; }

int start ( ) { //старт

LotsOptimized ( ) - - вставьте в ticket = OrderSend ( Symbol ( ) , OP_BUY , LotsOptimized ( ) , Ask , 3 , stop , Ask + Takeprofit * Point , "" , MagicNumber , 0 , Green ) ;
 
Sadece önceki iki gönderide parti değiştirme adımı dikkate alınmamıştır. Ne yazık ki.
 
Vinin >> :
Sadece önceki iki gönderide parti değiştirme adımı dikkate alınmamıştır. Ne yazık ki.

Adımı doğru anladıysam yapılabilir - lota ne kadar bakiye eklenecek?

ya da lotu artırmak için sabit bir eğri olması gerektiğini mi söylüyorsunuz, ancak böyle bir ilerlemedeki noktayı görmüyorum.

 extern double balans = 500 ; //шаг баланса

lot = NormalizeDouble ( AccountFreeMargin ( ) * MaximumRisk / balans , 1 ) ;
Neden: