Ücretsiz bir danışman yazacağım - sayfa 149

 
DDM77 :
Botun performansını kontrol ettikten sonra resmi bir sipariş vermek mümkündür.

Güzel çizgi :)

 
Александр :

birkaç değişiklik

tam olarak ne değişti?

 

Merhaba meslektaşlarım.

Konu hala alakalı mı? Robotu ücretsiz olarak bitirmeye hazır patronlar var mı?

.mq4'te kodlamada iyi olan bir asistana ihtiyacınız var

Ben de programlıyorum ama mq4 ile işler pek iyi değil. Ya nasıl tarif edeceğimi bilmediğim ya da işe yaramayan bazı görevler var.

Basit bir ölçekleme stratejisi (M15-M30) ve başlangıçta yazılmış bir robot var. Onun akla getirilmesi gerekiyor.

Strateji (benim değil, reklam olarak sayılmaması için siteye link vermeyeceğim):

RVI 50

EMA 9

EMA 100

Uzun pozisyon için giriş koşulları:

EMA9, EMA100'ü aşağıdan yukarıya doğru keserken, RVI göstergesi de sıfır çizgisini aşağıdan yukarıya doğru geçmeli veya sıfır çizgisinin üzerinde olmalıdır. Bu şartlar sağlanırsa alım pozisyonu açıyoruz. Zararı durdur , en yakın en düşük seviyenin 2-3 puan altına yerleştirilir. Kar al , zararı durdur'dan 1.5-2 kat daha yüksektir.

Kısa pozisyon için giriş koşulları:

EMA9, EMA100'ü yukarıdan aşağıya doğru keserken, RVI göstergesi de sıfır çizgisini yukarıdan aşağıya geçmeli veya sıfır çizgisinin altında olmalıdır. Bu şartlar sağlanırsa satış pozisyonu açıyoruz. Durdurma kaybı , en yakın maksimumun hemen üzerine yerleştirilir. Kar al , zararı durdur'dan 1.5-2 kat daha yüksektir.


İlkel bir robot yazdım ama birleşiyor çünkü Neyin işe yaramadığını bitirmek gerekiyor, artı belki de birisinin yanlış sinyalleri nasıl filtreleyeceğine dair bir ipucu var mı? (elbette öyleler)...

Ne işe yaramaz ve eklenmesi gerekir:

1. Zararı durdur ve kar al sırasıyla 100 ve 200 olarak sabitlenmiştir, bu seviyeler yeterli değildir. Son X çubukları için bir mum setinden minimum / maksimum durdurma kaybının hesaplanmasını hesaplamak gerekir ( X çubuklarının sayısı bir giriş parametresi olarak ayarlanır), ondan almayı hesaplamak, nasıl olduğunu bilmiyorum kendim uygulamak için. En önemli nokta , çünkü Robot, sinyalin doğru olmasına ve kârın daha da ileri gitmesine rağmen, durdurmadaki kapanma nedeniyle tam olarak birleşiyor.

2. Bazı nedenlerden dolayı, robot (test cihazında) bazı kenelerde bir çubukta birkaç sipariş açar, ancak bir çubuk maliyetlerinde bir siparişin açılmasını kontrol etmesine rağmen (bu forumdan ödünç alınmıştır), ancak çalışmıyor. Çeki hassaslaştırın, neden işe yaramadığını anlayın .

3. BU, örneğin hesaplanan TP'nin 1/2'si gibi belirli bir seviyeye ulaştığında bir takip eden durdurma (robotun gelen parametreleri) ekleyin (örneğin, 0.3'ten parametrelerde BU katsayısını belirtmek de mümkündür). 0.7'ye kadar). Robotta ayrı izleme açıklanmıştır (kod bu forumdan alınmıştır), ancak BU'yu hesaba katmaz. Ayrıca, herhangi bir nedenle test cihazında çalışmıyor, nedenini bulmanız gerekiyor.

4. Para yönetimi yok, eklemek istiyorum, nasıl yapacağımı bilmiyorum. Örneğin, aktif olanlar varsa, tek yönde 5'ten fazla emir açılmasını yasaklamak. Veya hesap bakiyesi/fon ayarlarında ayarlandığında ticareti yasaklayın.

5. Martingal. Sinyal filtreleme ... (isteğe bağlı)


Aslında her şey. İşbirliği yapmak isteyenler varsa, robotun dosyası kişisel olarak sunulmaya hazırdır. Veya programlama, BU ile takip ve para yönetimi hakkında okumak için forumdaki diğer bazı konuları tekmeleyin ... Kendim ekleyeceğim, o zaman sadece 1 puan kalacak.

 

1. noktayı anladım. iLowest / iHighest ) kullanarak çubukların geçmişine göre fiyatı nasıl hesaplayacağımı buldum tarihin son yarım yılı için karlılık göstergesi biraz arttı) birleştiği tarih boyunca (

2. nokta hala belirsiz.

Sonucu anlamaya başladım, belki kendim “kazanacağım”) karlılık hala biraz artmalı çünkü. Büyük bir alımla, fiyatın basitçe ulaşmadığı ve bir kar olmasına rağmen durmadan kapandığı işlemler var.

 

ikinci noktada:

 datetime current, last= 0 ;
int shift= 1 ;

void OnTick ()
   {
   current= iTime (symbol,frame,shift);
   //ограничение на торговлю вне начала бара
   if (last==current) return ;
   last=current;

   }

üçüncü noktada:

 //трейлинг рыночных ордеров, стоплосс держится на расстоянии Distance от самой экстремальной тени из последних History баров 
int DoTrailOrder( int ePosition, int eMagicNumber, double eDistance, int eHistory, string eSymbol, int eTimeFrame)
   {
   if (! OrderSelect (ePosition,SELECT_BY_POS,MODE_TRADES)) return ( 1 );
   int eType=OrderType();
   if (eType!=OP_BUY && eType!=OP_SELL) return ( 0 );
   if (OrderMagicNumber()!=eMagicNumber) return ( 0 );
   if (OrderSymbol()!=eSymbol) return ( 0 );
   //наблюдаем начиная с бара следующим за баром открытия
   if ( iBarShift (eSymbol,eTimeFrame,OrderOpenTime())== 0 ) return ( 0 );
   int eDigits=( int )MarketInfo(eSymbol,MODE_DIGITS);
   double ePoint=MarketInfo(eSymbol,MODE_POINT);
   double eSpread=MarketInfo(eSymbol, MODE_SPREAD );
   double eExtremum;
   if (eType==OP_BUY)
      {
       //стоп устанавливается на расстоянии eDistance от самой низкой тени бара из истории eHistory
      eExtremum= iLow (eSymbol,eTimeFrame, iLowest (eSymbol,eTimeFrame, MODE_LOW ,eHistory, 1 ));
       //расстояние от минимума до StopLoss должно превысить TrailingLevel
       if ( NormalizeDouble (eExtremum-OrderStopLoss(),eDigits)<=eDistance*ePoint) return ( 0 );
       //расстояние от минимума до цены открытия должно превысить TrailingLevel
       if ( NormalizeDouble (eExtremum-OrderOpenPrice(),eDigits)<=eDistance*ePoint) return ( 0 );
       //новый стоп должен быть не ближе к текущей цене, чем на два спреда
       if ( NormalizeDouble (MarketInfo(eSymbol,MODE_BID)+eDistance*ePoint-eExtremum,eDigits)<= 2 *eSpread*ePoint) return ( 0 );
       if (!OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (eExtremum-eDistance*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(), clrBlue )) return (- 1 );
      }
   if (eType==OP_SELL)
      {
       //стоп устанавливается на расстоянии eDistance от самой высокой тени бара из истории eHistory
      eExtremum= iHigh (eSymbol,eTimeFrame, iHighest (eSymbol,eTimeFrame, MODE_HIGH ,eHistory, 1 ));
       if ( NormalizeDouble (OrderStopLoss()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint && OrderStopLoss()!= 0 ) return ( 0 );
       if ( NormalizeDouble (OrderOpenPrice()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint) return ( 0 );
       //один спред между Ask и Bid сократился
       if ( NormalizeDouble (eExtremum+eDistance*ePoint-MarketInfo(eSymbol,MODE_ASK),eDigits)<=eSpread*ePoint) return ( 0 );
       if (!OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble (eExtremum+(eDistance+eSpread)*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(), clrRed )) return (- 1 );
      }
   return ( 0 );
   }
 

Takip eden bir durdurma, beklentiyi artırabilir, ancak karlılığı artırmaz. Fiyatın yeni izlenen bir durma noktasına geldiği gürültülü bir piyasada kârda bir eksiklik olacaktır, o olmadan kâr daha yüksek olabilirdi.

Anlaşmayı bilinçli olarak kapatma yönünde düşünmekte fayda var. Açmak için sinyaller arıyorsunuz, o zaman neden kapanmayı şansa bırakıyorsunuz?
 

2. ve 3. noktalardaki ipuçları için teşekkürler. test edeceğim.

kapanma hakkında, tabii ki karşı sinyal tetiklendiğinde kapatabilirsiniz, o zaman düşünmeniz gerekir ... bu daha büyük bir etki sağlayacaktır

Gürültülü bir pazarda kardaki düşüş hakkında, iyi, bir nedenden dolayı takip etmek istiyorum, ancak belirli bir seviyeye ulaşıldığında. bir kıtlık olacak, ancak büyük dezavantajlar da olmayacak. genel olarak, bunun hakkında da düşünmeniz gerekir))

Teşekkür ederim

 

Dmitry, takipte - bu bilgi zaten birçok kişi tarafından bir kereden fazla test edildi. En üstte, sondaki kod, belki de en iyisi. Ama o bu eksiklik olmadan değil.

Denemeniz gereken her şeyi deneyin.

 
Ivan :

tam olarak ne değişti?

Zaten bir yere verildi. İşte bir tane daha.

Dosyalar:
 
Дмитрий Хлыстов :

2. ve 3. noktalardaki ipuçları için teşekkürler. test edeceğim.

kapanma hakkında, tabii ki karşı sinyal tetiklendiğinde kapatabilirsiniz, o zaman düşünmeniz gerekir ... bu daha büyük bir etki sağlayacaktır

Gürültülü bir pazarda kardaki düşüş hakkında, iyi, bir nedenden dolayı takip etmek istiyorum, ancak belirli bir seviyeye ulaşıldığında. bir kıtlık olacak, ancak büyük dezavantajlar da olmayacak. genel olarak, bunun hakkında da düşünmeniz gerekir))

Teşekkür ederim

Piyasa puan bazında hareket etmez, yani. noktadan noktaya harekete dayalı değildir. Seviyeden seviyeye hareket eder. Mesafe en iyi trend zamanı ile ölçülür. Belki kene olarak, ama puan olarak değil.