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

 
alsu :
Tescilli olanlardan, muhtemelen MS VisualStudio, ücretsiz olanlar da var, örneğin CodeBlocks oldukça iyi.
Teşekkürler, muhtemelen VISUAL C++ 2010 EXPRESS ve CodeBlocks ile başlayacağım.
 
rustein :

Bana iyi bir derleyici ve editör diyecek olan C, C++, C# öğrenmeye karar verdim.

Teşekkür ederim.


HALA UNUTTUM

Perl

 
freeDRIVER :


HALA UNUTTUM

Perl

Okuduğunuz için teşekkürler, ilginç proje .
 

Ne yazık ki, yukarıdaki önerilerin hiçbiri yardımcı olmadı.

https://www.mql5.com/ru/forum/138609/page9#edit_form sorusu hala geçerlidir.

Lütfen yardım edin!

 

Belirli bir süre için en küçük çubuğu veya mumu gösteren bir göstergeye ihtiyacınız var.Örneğin, 4 saatlik bir grafikte 5 gün boyunca en küçük mum veya çubuğu gösterecektir.

İndikatör ayarlarında ayarlanacak gün veya saat ve bu mumu Fraktallar indikatöründe olduğu gibi ok ile işaretledim.

Ya da böyle bir şey.
 
Fox_RM :

Ne yazık ki, yukarıdaki önerilerin hiçbiri yardımcı olmadı.

https://www.mql5.com/ru/forum/138609/page9#edit_form sorusu hala geçerlidir.

Lütfen yardım edin!

Lütfen yaptığınız değişikliklerle kodunuzu yeniden gönderin.
 
Fox_RM :

Ne yazık ki, yukarıdaki önerilerin hiçbiri yardımcı olmadı.

https://www.mql5.com/ru/forum/138609/page9#edit_form sorusu hala geçerlidir.

Lütfen yardım edin!

Size zaten "bir araba ve bir küçük araba" tavsiyesi verildi. İlk olarak, sorunun orijinal kodu tekrar gönderiye kaydırması doğru değildir (size yapılan yorumlar, daha doğrusu düzeltmeler yapılmadan). İkinci olarak, hataları kendiniz bulmak için bir algoritma geliştirmeniz gerekir. Hiç kimse (MQL4 dahilinde) ara sonuçları yazdırmaktan daha iyi bir şey bulamadı. Mantık hataları ilk olarak Yazar tarafından görülebilir, çünkü YALNIZCA O yarattığı kodun mantığını bilir... ;)))
 

En son sürüm:

 //+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link       "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip, TP_UP[ 20 ],TP_DN[ 20 ],TP_UPMin[ 20 ],TP_DNPl[ 20 ] ; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i= 0 ,limit,k= 0 ,old_sell= 0 ,old_bay= 0 ;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

   ArrayResize (MA1, Bars ); ArrayResize (MA2, Bars );

raz= 20 - Bars ;                    //--- расчет по
count= Bars +raz;                 //--- последним 20 барам
for (i= 0 ;i<count;i++)           //--- вроде так
{  
    price = Close[i]/ Point ;    
    delta = price-old_price;
          
     if (!time_Bar)time_Bar=Time[ 0 ];
    col_bar = iBarShift ( NULL , 0 ,time_Bar)- iBarShift ( NULL , 0 ,Time[i]);
     if (col_bar >= 1 )
    
    {time_Bar=Time[i];sum_pip_bay= 0 ;
    sum_pip_sell= 0 ;sum_pip= 0 ;
    old_bay= 0 ;old_sell= 0 ;sum_tick= 0 ;
    count_plus= 0 ;count_minus= 0 ;}
     
     //---- Расчет UP
     if (delta>= 0 )
    { if (delta> 100 )delta= 1 ;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
     if (delta< 0 )
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+ MathAbs (sum_pip_sell);
     
       //---
  
         if (MA1[i]>= 0 ){TP_UP[i]=MA1[i];} else {TP_UPMin[i]=MA1[i];}
         if (MA2[i]<= 0 ){TP_DN[i]=MA2[i];} else {TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if (NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs (sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>= 1.5 ) OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 ) OrderSend ( Symbol (),OP_BUY, 0.1 , Ask , 2 , 50 , 20 );  //--- на новом баре + Ask
   }    
   }                
   return ( 0 );
}

//---- Функции
double Sredn( double ArrSr[])
{
double a= 1 ,c,step= 1 / 20 ;
for ( int i= 0 ;i< 20 ;i++)                         //--- тут привел в соответствие
{ if (ArrSr[i]== 0 ){a*= 1 ;} else {a*= MathAbs (ArrSr[i]);}}
c= MathPow (a, step);
   return (c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0 ;
   datetime curbar = Time[ 0 ];
   if (lastbar!=curbar)
   {
      lastbar=curbar;
       return (true);
   }
   else
   {
       return (false);
   }
}
 
Fox_RM :

En son sürüm:

 double a= 1 ,c,step= 1 / 20 ;

1) adım değişkeni sıfırdır. Ya 0.05 yazın ya da 1./20 gibi bölün

2) bundan sonra işlem açılmaya başlar, ancak

 OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 )

50 ve 20 yerine (_mutlak_) zararı durdur ve kârı al seviyeleri olmalıdır


Not: Sadece açılmamanın temel anlarını izledim. Doğal olarak, birçok şeyin optimize edilmesi ve eklenmesi gerekiyor.

 
Fox_RM :

En son sürüm:

Ama bu "mazoşizm" şudur:

raz= 20 - Bars ;                     //--- расчет по
count= Bars +raz;                 //--- последним 20 барам

Neden alıp dürüstçe ifade etmiyorsunuz:

count = 20 ;

Ve bu MA1[] ve MA2[] dizilerine boyutlarını bir kerede bildirerek işkence etmeyin:

 double MA1[20],MA2[20];

Ve bununla:

 if (Sredn(TP_UP)>= 1.5 ) OrderSend ( Symbol (),OP_SELL, 0.1 , Bid , 2 , 50 , 20 );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 ) OrderSend ( Symbol (),OP_BUY, 0.1 , Ask , 2 , 50 , 20 );  //--- на новом баре + Ask

Bilginin kökenlerine... geri dönmelisin. Pip cinsinden STOP'ların boyutunu ticaret emrine iletiyorsunuz, ancak SEVİYELER aktarmanız gerekiyor !!! Ve on-line çalışmak için SEVİYELER (fiyat, SL ve TP) değerlerinin NORMALİZE EDİLMESİ gerekmektedir!!!

 if (Sredn(TP_UP)>= 1.5 )
OrderSend ( Symbol (),OP_SELL, 0.1 ,NormalizeDouble ( Bid,Digits) , 2 , NormalizeDouble (Ask+50*Point, Digits) , NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC );  //--- сделки только + Bid
 if (Sredn(TP_DN)>= 1.5 )
OrderSend ( Symbol (),OP_BUY, 0.1 , NormalizeDouble(Ask,Digits) , 2 ,NormalizeDouble(Bid- 50 *Point,Digits),NormalizeDouble(Bid+ 20 *Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

Ve bir şey daha: MAGIC'i siparişlerinize atamak için en başından "yetişkin bir şekilde" kendinizi alıştırın!!! GELECEKTE İYİ!!!

Neden: